Recherche lignes et colonnes

Résolu
120Watts Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
120Watts Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai une petite macro qui me permet de rechercher une valeur dans un tableau et de copier les lignes correspondantes.
La recherche s'effectue sur une colonne (on change la valeur dans la macro...).
Je ne parviens à effectuer la recherche sur l'ensemble du tableau, est-ce possible ?
J'ai essayé de boucler sur les colonnes, après la boucle sur les lignes, mais ça ne donne rien...
En vous remerciant par avance si quelqu'un a une idée.
Le code ci-dessous.
Bien cordialement.

Sub Recherche3()
Dim ligneRecap As Variant
Dim i As Long
'nettoyage plage de réception
  [F1:H7].ClearContents
  ligneRecap = 1
'bouclage sur les lignes
 For i = 2 To [a20].End(xlUp).Row
'valeur charchée en colonne B
   If Cells(i, 2) = "aa" Then
      ligneRecap = ligneRecap + 1
'Redimensionnement du tableau pour copie des lignes identifiées sur la plage en colonne 6
      Cells(i, 1).Resize(1, 3).Copy Cells(ligneRecap, 6)
   End If
    Next i
'copie ligne de titre
  Range("A1:C1").Copy Worksheets("Feuil9").Range("F1")
End Sub


Configuration: Windows / Firefox 91.0

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
Peux-tu nous montrer comment tu as imbriqué les boucles?
Je ne comprends pas exactement ce que tu vas copier si tu trouves dans une autre colonne, donc j'hésite à suggérer un code.
Peux-tu soigner 'indentation de ton code? Cela le rend plus lisible et plus facile à modifier.
A tout hasard:
Option Explicit

Sub Recherche3()
Dim ligneRecap As Variant
Dim i As Long, c As Long
'nettoyage plage de réception
[F1:H7].ClearContents
ligneRecap = 1
'bouclage sur les lignes
For i = 2 To [a20].End(xlUp).Row
    For c = 1 To 3 'valeur charchée en colonnes de A à C
        If Cells(i, c) = "aa" Then
            ligneRecap = ligneRecap + 1
            'Redimensionnement du tableau pour copie des lignes identifiées sur la plage en colonne 6
            Cells(i, 1).Resize(1, 3).Copy Cells(ligneRecap, 6)
        End If
    Next c
Next i
'copie ligne de titre
Range("A1:C1").Copy Worksheets("Feuil9").Range("F1")
End Sub

Cela peut parfois recopier plusieurs fois des lignes, peut-être pas ce que tu souhaites.
1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
une variante:
Option Explicit

Sub Recherche3()
Dim ligneRecap As Variant
Dim i As Long, chercher As String
'nettoyage plage de réception
[F1:H7].ClearContents
ligneRecap = 1
'bouclage sur les lignes
chercher = "aa"
For i = 2 To [a20].End(xlUp).Row
    If Cells(i, 1) = chercher Or Cells(i, 2) = chercher Or Cells(i, 3) = chercher Then
        ligneRecap = ligneRecap + 1
        'Redimensionnement du tableau pour copie des lignes identifiées sur la plage en colonne 6
        Cells(i, 1).Resize(1, 3).Copy Cells(ligneRecap, 6)
    End If
Next i
'copie ligne de titre
Range("A1:C1").Copy Worksheets("Feuil9").Range("F1")
End Sub
1
120Watts Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   2
 
Bravo et merci, j'ai envoyé une réponse plus détaillée un peu avant.
Cordialement.
0
120Watts Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour yg_be,
merci beaucoup ! la 1ère suffisait et répond parfaitement au problème ; donc merci pour la variante ! Ça permet de progresser encore plus. En effet, mon imbrication était foireuse, c'est la raison pour laquelle je ne l'avais pas mise pour ne pas compliquer le code inutilement. Bien noté pour l'indentation, faut que je progresse aussi là-dessus !
merci encore ! Résolu avec brio !
0
120Watts Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   2
 
Les deux sont excellentes, merci encore !
0