Recherche lignes et colonnes

Résolu
120Watts Messages postés 12 Statut Membre -  
120Watts Messages postés 12 Statut Membre -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
    2. 120Watts Messages postés 12 Statut Membre 2
       
      Bravo et merci, j'ai envoyé une réponse plus détaillée un peu avant.
      Cordialement.
      0
  2. 120Watts Messages postés 12 Statut Membre 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
  3. 120Watts Messages postés 12 Statut Membre 2
     
    Les deux sont excellentes, merci encore !
    0