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
- Excel : Renvoyer une liste en fonction de valeurs identiques
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel trier par ordre croissant chiffre - Guide
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 Sub
voilà
Wouw ... Merci pour le retour, par contre je suis vraiment nul en VBA et là clairement je ne m'y retrouve pas ... :(
Se mettre sur la feuille concernée et faire Alt F11 pour accéder au module et y coller ce code;
Mettre le curseur sur test et faire F5
Voilà
@+
Merci,
J'ai ce message d'erreur : "L'indice n'appartient pas à la sélection".
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à
@+