Je dois faire une boucle et j'ai le plus de mal. Ce que j'essaie d'accomplir est de parcourir toutes les valeurs dans la colonne A de 'Assum'. Les valeurs commencent à A5. Je veux ensuite qu'il recherche la même valeur sur 'Sheet1' et vérifie la valeur de la 5ème colonne (E). En fonction de la valeur dans E (A, B, C), il effectue l'une des trois tâches. La tâche pour C consiste à prendre la valeur d'origine, et rechercher cette valeur dans 'ECData', et prendre des plages spécifiques et les coller sur une 4ème feuille 'Travail'. Ce qui se passe réellement: Il copie les cellules de la ligne incorrecte sur 'ECData' plutôt que de trouver la ligne spécifique et de coller sa ligne correspondante. Je sais que le code est en désordre, j'essaie de bousculer des morceaux d'un autre code qui accomplit ce que je veux.VBA Lookup Loop
Des pensées? MS Office 2013
Public y1 As Integer
Sub ECLoop()
Dim i As Single
Dim finalRow As Long
finalRow = Sheets("Assum").Cells(Rows.Count, 1).End(xlUp).Row
For i = 5 To finalRow
If Sheets("Sheet1").Cells(i, 5) = "A" Then
Sheets("Assum").Cells(i, 2) = "Test A"
ElseIf Sheets("Sheet1").Cells(i, 5) = "B" Then
Sheets("Assum").Cells(i, 2) = "Test B"
ElseIf Sheets("Sheet1").Cells(i, 5) = "C" Then
Set FoundCell = ActiveCell
If Not FoundCell Is Nothing Then
y1 = FoundCell.Row
End If
Set NationalPaste = Sheets("Work").Range("Z3")
Set OverPaste = Sheets("Work").Range("Z24")
Set UnderPaste = Sheets("Work").Range("Z45")
Set IFPPaste = Sheets("Work").Range("Z66")
Set SeniorsPaste = Sheets("Work").Range("Z87")
Sheets("ECData").Select
With Sheets("ECData")
Set National = Range(Cells(y1, 2), Cells(y1, 21))
Set Over = Range(Cells(y1, 22), Cells(y1, 41))
Set Under = Range(Cells(y1, 42), Cells(y1, 61))
Set IFP = Range(Cells(y1, 62), Cells(y1, 81))
Set Seniors = Range(Cells(y1, 82), Cells(y1, 101))
End With
Sheets("Work").Range("Z3:Z22").ClearContents
National.Copy
NationalPaste.PasteSpecial Paste:=xlValues, Transpose:=True
Sheets("Work").Range("Z24:Z43").ClearContents
Over.Copy
OverPaste.PasteSpecial Paste:=xlValues, Transpose:=True
Sheets("Work").Range("Z45:Z64").ClearContents
Under.Copy
UnderPaste.PasteSpecial Paste:=xlValues, Transpose:=True
Sheets("Work").Range("Z66:Z85").ClearContents
IFP.Copy
IFPPaste.PasteSpecial Paste:=xlValues, Transpose:=True
Sheets("Work").Range("Z87:Z106").ClearContents
Seniors.Copy
SeniorsPaste.PasteSpecial Paste:=xlValues, Transpose:=True
Else
Exit Sub
End If
Next i
End Sub
Vous définissez 'FoundCell = ActiveCell' en faisant cela, vous définissez à la même cellule à chaque fois (vous ne semblent pas déplacer programatically). Vous devez également supprimer toutes vos valeurs statiques de la boucle, par ex. 'Set NationalPaste = Sheets (" Work "). Range (" Z3 ")' ne change jamais sa valeur donc placez-le une fois au lieu de le définir toutes les boucles – Tom