VBA - Afficher une liste de données

Bonjour,

Je suis en train de me mettre péniblement au VBA.

Je dis "péniblement", parce que je débute en la matière (je remercie d'ailleurs excel-pratique pour l'excellent Cours VBA ), mais cela me laisse entrevoir des possibilités que j'excluais jusqu'à présent.

Le problème sur lequel je bute est le suivant :

Dans une feuille, j'ai une liste avec plusieurs colonnes :

  • La première comprend des données uniques (A)
  • La deuxième comprend uniquement quelques données, qui se répètent, donc. (B)

Sur une autre feuille, je souhaite faire apparaître la liste des "A" qui correspondent à un "B" donné.

Je suis parti bille en tête avec un VLookup, mais le problème, c'est qu'il ne me ressort que la première occurrence... (ce qui est normal, mais je n'y avais pas réfléchi avant - je précise que pour l'utilisation de VLookup, j'avais bien inversé l'ordre des colonnes ).

En fouinant à droite et à gauche, j'ai lu plusieurs choses sur la fonction Find, voire Findall, mais je n'y comprend pas grand chose...

Un petit exemple étant sans doute plus clair que mes explications, je vous joins un fichier simplifié reprenant ce que je souhaiterais obtenir.

Merci d'avance pour votre aide !

Bonjour,

as-tu essayé d'utiliser un filtre ?

voir feuil2 dans Pièce jointe.

Bonjour Acide sulfurique

Merci pour ta réponse, malheureusement, le fichier que je présente est très très très simplifié ; notamment, il y a plusieurs onglets sur lesquels effectuer la recherche, et je veux regrouper sur une seule feuille l'ensemble des valeurs renvoyées par la recherche.

C'est donc bien d'une fonction, et d'ailleurs plutôt d'une macro - vu que le nombre d'occurrence peut être variable -, dont j'ai besoin.

Bonjour,

une proposition de macro

Sub test()
    Set ws1 = Worksheets("Feuil1")
    Set ws2 = Worksheets("feuil2")
    k = 2
    For i = 2 To ws2.Cells(Rows.Count, 2).End(xlUp).Row
        If ws2.Cells(i, 2) = ws1.Cells(3, 1) Then
            k = k + 1
            ws1.Cells(k, 2) = ws2.Cells(i, 1)
        End If
    Next i
End Sub

Merci !

Bon, maintenant, je vais voir comment l'adapter à mon fichier d'origine, mais le plus drôle, c'est qu'en fait, c'est très simple... Je me demande parfois pourquoi je cherche absolument à faire compliqué... 8)

Edit : Ça fonctionne parfaitement !

Question subsidiaire : comment est déterminé le "End" dans ta formule ".Cells(Rows.Count, 2).End(xlUp).Row" ?

Dans mon fichier de travail, il peut y avoir de nombreuses lignes vides dans la liste, pourtant ça prend bien en compte l'ensemble des lignes.

En tout cas, merci beaucoup pour ton aide !

re bonjour

Totor41 a écrit :

Question subsidiaire : comment est déterminé le "End" dans ta formule ".Cells(Rows.Count, 2).End(xlUp).Row" ?

c'est la première cellule non-vide de la colonne spécifiée (ici colonne 2 ou "B" ) en partant du bas.

Rechercher des sujets similaires à "vba afficher liste donnees"