Excel : Renvoyer une liste en fonction de valeurs identiques

Résolu/Fermé
GTA5488 Messages postés 15 Date d'inscription jeudi 17 juin 2021 Statut Membre Dernière intervention 2 septembre 2022 - 31 août 2022 à 16:42
GTA5488 Messages postés 15 Date d'inscription jeudi 17 juin 2021 Statut Membre Dernière intervention 2 septembre 2022 - 2 sept. 2022 à 11:41

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

A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
1 sept. 2022 à 11:51

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à


0
GTA5488 Messages postés 15 Date d'inscription jeudi 17 juin 2021 Statut Membre Dernière intervention 2 septembre 2022
1 sept. 2022 à 15:08

Wouw ... Merci pour le retour, par contre je suis vraiment nul en VBA et là clairement je ne m'y retrouve pas ... :(

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > GTA5488 Messages postés 15 Date d'inscription jeudi 17 juin 2021 Statut Membre Dernière intervention 2 septembre 2022
1 sept. 2022 à 15:39

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à 

@+

0
GTA5488 Messages postés 15 Date d'inscription jeudi 17 juin 2021 Statut Membre Dernière intervention 2 septembre 2022 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
2 sept. 2022 à 08:29

Merci,

J'ai ce message d'erreur : "L'indice n'appartient pas à la sélection". 

0
GTA5488 Messages postés 15 Date d'inscription jeudi 17 juin 2021 Statut Membre Dernière intervention 2 septembre 2022 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
2 sept. 2022 à 08:37

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. 

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > GTA5488 Messages postés 15 Date d'inscription jeudi 17 juin 2021 Statut Membre Dernière intervention 2 septembre 2022
2 sept. 2022 à 11:36

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 Sub

Voilà

@+

1