[VBA excel] Eviter les doublons

Résolu
Bonjour,

Je travaille sur un fichier Excel qui se présente comme suit:

Identifiants NOM PRENOM VOITURE

123 JEAN Stephan POLO
123 JEAN Stephan ESPACE
123 JEAN Stephan TWINGO
948 CUSSONET Simon MINI COOPER
715 PAUL Luc CLIO
715 PAUL Luc 206

A chaque ligne correspond un véhicule. Je souhaiterai faire une macro qui permettrait que les différents véhicules de chaque personne apparaissent sur la meme ligne dans des colonnes différentes. Ce qui donnerai comme résultat le tableau suivant:

Identifiants NOM PRENOM VOITURE VOITURE2 VOITURE3

123 JEAN Stephan POLO ESPACE TWINGO
948 CUSSONET Simon MINI COOPER
715 PAUL Luc CLIO 206

Je n'obtiendrai donc que 3 lignes. Je ne m'y connais pas en VBA c'est pour ca que je viens vers vous !

Merci beaucoup pour votre aide !

++

6 réponses

  1. Contributeur
    bonjour

    En supposant que ton tableau commence en A1 et que chaque identifiant est unique, je te propose :
    Private Sub groupe()
    Dim lig As Double
    ActiveSheet.UsedRange.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'tri sur identifiant
    For lig = 1 To ActiveSheet.UsedRange.Rows.Count
    If Cells(lig, 1).Value = Cells(lig + 1, 1).Value _
        And Cells(lig, 1).Value <> "" Then
            Cells(lig, Cells(lig, 256).End(xlToLeft).Column + 1).Value _
                = Cells(lig + 1, 4).Value      'regroupement
            Rows(lig + 1).Delete          'suppression ligne regroupée
            lig = lig - 1
    End If
    Next lig
    End Sub
    1. Merci beaucoup gbinforme !
      Ca fonctionne. Je voudrais juste unn renseignement supplémentaire. Dans mon exemple le nombre maximum de voiture par personne est de 3. Est ce que le code fonctionne egalement si une personne en possède 10 voir plus ?
      1. Contributeur
        bonjour

        Est ce que le code fonctionne egalement si une personne en possède 10 voir plus ?

        Si tu as la version 2003 ou inférieur tu peux aller jusqu'à 256 colonnes donc 253 voitures.

        Pour en avoir une par jour annuel, il faut passer à Excel 2007 qui autorise 512 colonnes, sauf erreur...
        1. Ok je comprend mieux maintenant, merci beaucoup, ca répond exactement à mon attente !

          ++
          1. Dernière petite question,

            Si je rajoute dans mon tableau initial une colonne avec la marque de la voiture et que je souhaite suite à l'éxécution de la macro que la marque s'ajoute à coté du modèle de la voiture, que dois-je modifier dans le code vba ?

            pour obtenir par exemple (sachant que les marques sont renseignées ds le tableau initial):

            123 JEAN Stephan POLO VOLKSWAGEN ESPACE RENAULT TWINGO RENAULT

            D'avance merci.