Autres extraire valeurs ligne par ligne sans doublons

mysti54

XLDnaute Nouveau
Bonjour à tous

J'aimerais avoir de l'aide s'il vous plait

Le tableau initial c'est celui qui se trouve en I6-P15, qui ne faut pas toucher, les doublons sont dans tableau R6-w15 si un doublons se trouve dans le tableau initial ligne par ligne, il est supprimé d'office et dans le tableau Z6-ag15, ce sera le tableau final avec les numéro sans doublons c'est à dire par exemple la première ligne au lieu d'avoir =>1-11-5-9-4-12-17 ça devient 1-11-14-5-9-12-17, mais par exemple le 6 qui se trouve dans les doublons mais qui ne figure pas dans le tableau initial ne dois pas être retenu également.

Merci d'avance
 

Pièces jointes

  • trot plat.xlsx
    13.1 KB · Affichages: 9
Solution
Bonjour Mysti,
Un essai en PJ. J'en profite pour remplir le premier tableau, les formules deviennent inutiles.
La macro est valable quelle que soit le nombre de ligne. Avec :
VB:
Sub SansDoublon()
    Dim DL%, L%, C%, Col%, Valeur, T
    DL = [B1000].End(xlUp).Row      ' Dernière
    Range("I6:P" & DL).ClearContents
    Range("Z6:AG" & DL).ClearContents
    Application.ScreenUpdating = False
    For L = 6 To DL                 ' Remplissage de la matrice col I à col P.
        T = Split(Cells(L, "G"), "-")
        For N = 0 To 7
            If T(N) <> 0 Then Cells(L, 9 + N) = T(N) ' 9 car à partir de la colonne I
        Next N
    Next L
    For L = 6 To DL                 ' Analyse de chaque ligne
        Col = 26
        For C = 9 To 16...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Mysti,
Un essai en PJ. J'en profite pour remplir le premier tableau, les formules deviennent inutiles.
La macro est valable quelle que soit le nombre de ligne. Avec :
VB:
Sub SansDoublon()
    Dim DL%, L%, C%, Col%, Valeur, T
    DL = [B1000].End(xlUp).Row      ' Dernière
    Range("I6:P" & DL).ClearContents
    Range("Z6:AG" & DL).ClearContents
    Application.ScreenUpdating = False
    For L = 6 To DL                 ' Remplissage de la matrice col I à col P.
        T = Split(Cells(L, "G"), "-")
        For N = 0 To 7
            If T(N) <> 0 Then Cells(L, 9 + N) = T(N) ' 9 car à partir de la colonne I
        Next N
    Next L
    For L = 6 To DL                 ' Analyse de chaque ligne
        Col = 26
        For C = 9 To 16             ' Si valeur absente, on recopie la valeur
            Valeur = Cells(L, C)
            If Application.CountIf(Range(Cells(L, "R"), Cells(L, "W")), Valeur) = 0 Then    ' Non doublon
                Cells(L, Col) = Valeur: Col = Col + 1
            End If
        Next C
    Next L
End Sub
Pensez à valider les macros si ce n'est déjà fait.
 

Pièces jointes

  • trot plat (1).xlsm
    19.6 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Normalement c'est la même chose. :)

Il faut mettre en vert le post qui contient la solution, pas votre réponse.
Le but est de faire remonter cette solution juste après votre demande, et ,par appui sur le bouton, le futur lecteur est dirigé directement vers la solution.
( ici il est redirigé vers " je vais garder votre code et adapter mon fichier " :)

1729775984591.png
 

Discussions similaires

Réponses
10
Affichages
359
Réponses
49
Affichages
882

Statistiques des forums

Discussions
314 426
Messages
2 109 473
Membres
110 488
dernier inscrit
glossaire