Comparer deux colonnes de deux feuilles et renvoie des valeurs manquantes

Bonjour ,j'ai réussi à avoir un code qui permet de comparer les données de deux feuilles et renvoyer les données manquantes sur la feuille 1 selon le critère sur la colonnes E (code Psa), le problème que j'ai actuellement avec ce code , c'est que je peux renseigner les colonnes B ou C de la feuille 1(données d'entré) en manuel vu que je connais tjrs pas le code Psa, mais une fois je lance la macro il vérifie la 1 ière ligne qui n'a pas de code et l'écrase , la ligne est écrasé vu qu'il y a pas de code Psa renseigné .Y-a-t-il un moyen pour éviter ce problème, j'ai essayé d'ajouter des conditions sur les colonnes B ou C mais ça n'a pas marché ?
Merci pour votre aide.

18sanae-4.xlsm (22.33 Ko)

Hello,

Si j'ai bien compris

Option Compare Text
Sub InsertCode()
Dim Ext As Worksheet: Set Ext = Worksheets("Extraction")
Dim Bdd As Worksheet: Set Bdd = Worksheets("donnée d'entrée")
Dim Bdd_L, J

Dim Ext_D As Range:    Set Ext_D = Ext.Cells.Find("code PSA", lookat:=xlPart).Offset(1) ' première cellule de la table extraction
Dim Ext_F As Range:    Set Ext_F = Ext.Cells(Ext.Rows.Count, "D").End(xlUp)             ' dernière cellule de la table extraction
Dim Bdd_D As Range:    Set Bdd_D = Bdd.Cells.Find("code PSA", lookat:=xlPart).Offset(1) ' première cellule de la table Bdd
Dim Bdd_F As Range:
Dim Cols As Integer:   Cols = 9   ' Nombre de colonnes à copier

    For J = Ext_D.Row To Ext_F.Row
    'Copier juste les colonnes 'OUI'
        If Ext.Rows(J).Columns("K") = "Oui" Then
            Set Bdd_F = Bdd.Cells(Bdd.Rows.Count, "B").End(xlUp).Offset(1)  ' Ligne Bdd disponible pour ajout
            If Bdd_F.Row < Bdd_D.Row Then Set Bdd_F = Bdd.Cells(Bdd_D.Row, "B")
            ' On recherche le code dans la colonne en partant du bas
            Set Bdd_L = Bdd.Columns("D").Find(Ext.Cells(J, "D"), _
                LookIn:=xlValues, lookat:=xlWhole)
            If Bdd_L Is Nothing Then
                Bdd.Cells(Bdd_F.Row, "B").Resize(, Cols).Borders.LineStyle = xlContinuous
                With Bdd.Rows(Bdd_F.Row)
                    .Columns("B") = Ext.Rows(J).Columns("B")
                    .Columns("C") = Ext.Rows(J).Columns("C")
                    .Columns("D") = Ext.Rows(J).Columns("D")
                    .Columns("G") = Ext.Rows(J).Columns("G")
                End With
            End If
        End If
    Next
End Sub

Bonjour, merci pour votre aide et désolée d'avoir tardé pour répondre. En fait, j'ai essayé d'adapter le code à mon fichier mais malheureusement ça ne fonctionne pas .Pourriez-vous confirmer que la seule ligne changée est celle là : Bdd_L = Bdd.Columns("D").Find(Ext.Cells(J, "D"), _ LookIn:=xlValues, lookat:=xlWhole)

Hello,

il me semble que j'ai changé ces 2 lignes :

Set Bdd_F = Bdd.Cells(Bdd.Rows.Count, "B").End(xlUp).Offset(1)  ' Ligne Bdd disponible pour ajout
            If Bdd_F.Row < Bdd_D.Row Then Set Bdd_F = Bdd.Cells(Bdd_D.Row, "B")

Bonjour ,j'ai vérifié , j'ai pas trouvé un changement au niveau de ces deux lignes. y a t il une possibilité d'ajouter une condition sur l'une des deux colonnes B ou C .Une fois qu'on a une valeur sur l'une de ces deux colonnes , la ligne disponible pour ajout se décale vers le bas ?

Merci d'avance pour ton aide

hello,

j'ai vérifié , j'ai pas trouvé un changement au niveau de ces deux lignes

T'es sur qu'à la base tu pointes sur la colonne B ? Il me semble que c'est la D de base

Bonjour , oui vous avez tout à fait raison. J'aurai du changer l'indice de la colonne .Ca marche parfaitement, merci beaucoup pour ton aide .

Rechercher des sujets similaires à "comparer deux colonnes feuilles renvoie valeurs manquantes"