Excel : Renvoyer une liste en fonction de valeurs identiques
RésoluGTA5488 Messages postés 16 Statut Membre -
Hello à toutes et tous,
Voilà j'ai un tableau très basique avec 2 colonnes.
Colonne A, les valeurs peuvent être identiques.
Colonne B, les valeurs sont toutes différentes.
J'aimerais ressortir un tableau avec une formule de ce genre :
Lorsque les valeurs de la colonne A sont identiques, prendre toutes les valeurs de la colonne B (avec le même index que les valeurs identique de colonne A) et les afficher dans une cellule avec un " ; " entre chaque valeur.
Exemple :
Colonne A Colonne B
1 Jean
1 Baptiste
2 Wolfgang
1 Poquelin
2 Amadeus
2 Mozart
J'aimerai ressortir dans un autre tableau :
Colonne A Colonne B
Résultat pour 1 Jean ; Baptiste ; Poquelin
Résultat pour 2 Wolfgang ; Amadeus ; Mozart
Je ne sais pas si c'est très clair, en tout cas n'hésitez pas à me poser des questions ! :)
Merci et à très vite !
GT
1 réponse
-
Bonjour,
une approche:
Option Explicit Dim DerniereLigneUtilisee As Long Sub test() Dim nombre As Integer Dim i As Integer nombre = Application.Max(Columns(1)) 'plus grand numéro For i = 1 To nombre DerniereLigneUtilisee = Cells(Rows.Count, 3).End(xlUp).Row + 1 '1ère ligne vide Call boucle(i) 'on boucle sur tous les numéros Range("C" & DerniereLigneUtilisee) = Left(Range("C" & DerniereLigneUtilisee), Len(Range("C" & DerniereLigneUtilisee)) - 1) 'supprime dernier caractère Next i End Sub Sub boucle(ByVal num As String) Dim FL1 As Worksheet, NoCol As Integer Dim NoLig As Long, Var As Variant Set FL1 = Worksheets("Feuil1")'adapter nom de la feuille NoCol = 1 'lecture de la colonne A For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4) Var = FL1.Cells(NoLig, NoCol) If Var = num Then FL1.Cells(DerniereLigneUtilisee, NoCol + 2) = FL1.Cells(DerniereLigneUtilisee, NoCol + 2) & FL1.Cells(NoLig, NoCol + 1) & ";" 'colonne C End If Next Set FL1 = Nothing End Subvoilà
-
-
-
-
Ce sera peut-être plus simple avec un fichier Excel d'exemple : https://wetransfer.com/downloads/c18e28055f315d39e96665d7c54b477720220902063543/248ce6
En gros j'ai la page "Datas" et je souhaiterais que l'onglet résultat se mette à jour en fonction de l'onglet Datas. Je ne sais pas si c'est très clair.
-
une autre approche qui se déclenche au double clic dans la colonne A sur un numéro
a mettre dans le module de la feuille Datas Alt F11
Option Explicit Dim DerniereLigneUtilisee As Long Dim FL1 As Worksheet Dim FL2 As Worksheet Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Set FL2 = Worksheets("Résultat") 'adapter nom de la feuille DerniereLigneUtilisee = FL2.Cells(Rows.Count, 2).End(xlUp).Row + 1 '1ère ligne vide Call boucle(Target.Value) 'on boucle sur le mëme numéro FL2.Range("B" & DerniereLigneUtilisee) = Left(FL2.Range("B" & DerniereLigneUtilisee), Len(FL2.Range("B" & DerniereLigneUtilisee)) - 1) 'supprime dernier caractère End Sub Sub boucle(ByVal num As String) Dim NoCol As Integer Dim NoLig As Long, Var As Variant Set FL1 = Worksheets("Datas") 'adapter nom de la feuille Set FL2 = Worksheets("Résultat") NoCol = 1 'lecture de la colonne A For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4) Var = FL1.Cells(NoLig, NoCol) If Var = num Then FL2.Cells(DerniereLigneUtilisee, 2) = FL2.Cells(DerniereLigneUtilisee, 2) & FL1.Cells(NoLig, NoCol + 1) & ";" 'colonne B End If Next Set FL1 = Nothing End SubVoilà
@+
-