[Boucle double condition] Recherche et report de listes
Bonjour,
Je cherche à interroger une liste B (feuille DATA) avec des données d'une liste A (feuille ANALYSIS), et recopier les cellules associées deux colonnes plus loin.
>> Or il peut y avoir plusieurs occurrences dans la liste et je cherche à lister TOUTES ces occurrences !
J'ai donc une première boucle pour rechercher les valeurs mais je ne sais pas comment conditionner la recherche/extractions des autres occurrences...
J'ai pensé insérer une boucle "Si" en fin de code mais je ne sais pas comment gérer le comptage des occurrences dans la feuille DATA !
D'avance merci pour toute suggestion/pistes !
Sub FindPaste()
NbLigne = Worksheets("ANALYSIS").Range("A1").End(xlDown).Row 'Nb de lignes dans le fichier
'MsgBox NbLigne
For x = 2 To NbLigne
RECHERCHE = Worksheets("ANALYSIS").Range("a" & x)
With Worksheets("DATA").Cells
Set cellule = .Find(RECHERCHE, LookIn:=xlValues)
If Not cellule Is Nothing Then cellule.Offset(0, 2).Copy
Sheets("ANALYSIS").Select
Cells(x, 18).Select 'décalage 18 col pour largeur tableau
ActiveSheet.Paste 'BESOIN : coller les occurrences à la suite (en colonne)
'IF ?? 'Autres occurrences de la même RECHERCHE / même ligne x
'y=Count IF (RECHERCHE) 'Pour compteur d'occurrences ?
'Paste 'Avec "offset(x,18+y)" pour lister les occurrences dans colonnes
'Next y
'Exit IF 'quand plus d'occurrences "y"
End With
Next x
End SubBonjour,
Je n'ai pas compris ton histoire de décalage de données. As-tu un fichier exemple ?
Pour la partie recherche je te conseille d'utiliser les dictionnaires et tableaux mémoire. Tu iras beaucoup plus vite.
Autre point. Attention avec ta méthode de récupération de nombre de lignes. Si tu sautes une ligne en colonne "A" de "Analysis" alors seul le premier groupe de cellule sera comptabilisé.
bonjour à tous,
de ce que j'ai compris ...
Sub FindPaste()
NbLigne = Worksheets("ANALYSIS").Range("A1").End(xlDown).Row 'Nb de lignes dans le fichier
'MsgBox NbLigne
For x = 2 To NbLigne
RECHERCHE = Worksheets("ANALYSIS").Range("a" & x)
With Worksheets("DATA").Cells
Set cellule = .Find(RECHERCHE, LookIn:=xlValues)
If Not cellule Is Nothing Then
fa = cellule.Address
ctr = 18
Do
Sheets("analysis").Cells(x, ctr).Value = cellule.Offset(0, 2).Value
ctr = ctr + 1
Set cellule = .FindNext(cellule)
Loop Until cellule.Address = fa
End If
End With
Next x
End SubBonjour à tous,
@Alex020181, pour le décalage je cherche juste à recopier les résultats dans un tableau qui compte déjà 17 colonnes, que j’aimerai ne pas écraser => je prends donc la colonne 18 pour y copier mes résultats.
@H2SO4 merci pour la proposition, je teste ça dès que possible !