Comparaison tableau/colonne 2

Résolu
Pierau666 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
Pierau666 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai posté une question il y a quelques jours sur ce forum (https://forums.commentcamarche.net/forum/affich-33714884-comparaison-tableau-colonne#p33715395) pour copier les données d'un tableau dans un autre tableau seulement si une colonne dans les deux tableaux est identique.

Le code suivant m'a permis de le faire mais j'ai un autre problème maintenant. Jusqu'a maintenant mon tableau qui devait recevoir les données copiées a partir d'un autre tableau ne contenait dans la colonne comparée avec l'autre tableau aucun doublon. Seulement, j'ai un nouveau tableau qui contient dans la colonne à comparer plusieurs fois les memes données. Et je voudrai que toutes les lignes soient remplies quand meme. Mais le code que j'utilise ne permet que de remplir la premiere ligne...

Je sais que je ne suis pas clair, c'est pourquoi je vous ai joint deux fichiers:

- l'ancien tableau avec ce code qui fonctionne bien (qui me permet de remplir le tableau contenu sur la feuille data a partir du tableau contenu sur la feuille base): https://www.cjoint.com/c/FGqtKvPYXQq

- le nouveau tableau avec ce code qui fonctionne mal (qui ne remplit que la premiere ligne du tableau contenu sur la feuille data a partir du tableau contenu sur la feuille base): https://www.cjoint.com/c/FGqtLbaBjqq

Mon but est de remplir toutes les lignes du tableau de la feuille data....

Je vous remercie par avance et m'excuse pour mon manque de clarté....


Sub ccm_maj()
Dim Derlig As Long, T_ref As Range, T_maj As Range, obj As Object
Dim Cptr As Long, Lig As Long, Col As Byte, Nbre As Long
    Application.ScreenUpdating = False 'fige l'écran: confort et rapidité
    'mémorisation des modifs
    With Sheets("base")
        Derlig = .Columns("B").Find(what:="*", searchdirection:=xlPrevious).Row
        Set T_ref = .Range("B2:B" & Derlig)
        Set T_maj = .Range("C2:D" & Derlig)
        If Derlig = 2 Then
            Nbre = 1
        Else
            Nbre = T_ref.Cells.Count
        End If
    End With
    'ouverture de la datebase
    With Sheets("data")
        For Cptr = 1 To Nbre
                Set obj = .Columns("B").Find(T_ref.Cells(Cptr, 1))
            If Not obj Is Nothing Then
              Lig = obj.Row
              For Col = 1 To 2
                  .Cells(Lig, 2 + Col) = T_maj.Cells(Cptr, Col)
              Next
            End If
        Next
    End With
A voir également:

3 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
toujours la m^me discordance xlsx et xlsm ....
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour tout le monde,

Fichier modifie pour remplissage de toutes les lignes, y compris les doublons:

https://www.cjoint.com/c/FGrgRyTUpLf
0
Pierau666 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Michel_m, je ne comprends pas pourquoi le fichier ne fonctionne pas...

f894009, merci pour ce code, il fonctionne parfaitement.

En tous cas, merci à tous les deux de s'etre penché sur mon problème :)

Un bon dimanche :)
0