Comparaison tableau/colonne 2

Résolu/Fermé
Pierau666 Messages postés 9 Date d'inscription mercredi 13 juillet 2016 Statut Membre Dernière intervention 17 juillet 2016 - 16 juil. 2016 à 21:37
Pierau666 Messages postés 9 Date d'inscription mercredi 13 juillet 2016 Statut Membre Dernière intervention 17 juillet 2016 - 17 juil. 2016 à 10:25
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 juil. 2016 à 08:07
toujours la m^me discordance xlsx et xlsm ....
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 juil. 2016 à 08:44
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 mercredi 13 juillet 2016 Statut Membre Dernière intervention 17 juillet 2016
17 juil. 2016 à 10:25
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