Comparer deux colonnes et copier la valeur a coté

Fermé
josejuan87 Messages postés 1 Date d'inscription mercredi 12 septembre 2018 Statut Membre Dernière intervention 12 septembre 2018 - 12 sept. 2018 à 15:10
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 12 sept. 2018 à 19:16
Bonjour les amis,
J'aurais besoin d'un programme que suite a une colonne dans un excel avec des numeros (ex 123456789) vient chercher les memes numeros dans une autre colonne placé dans un autre fichier excel mais qui n'a pas les 9 numeros (c'est à dire, ca s'arrete a 6 donc 123456) et puis que ca copie a coté de ce numero la colonne qu'il a juste a coté.
Merci d'avance et désolé si je me suis pas super bien exprimé ^^
José

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
12 sept. 2018 à 19:16
Bonjour José, bonjour le forum,

D'habitude je propose des codes "full comment" mais comme tu n'as même pas daigné fournir des explications précises, je te propose le code ci-dessous à adapter à ton cas :

Sub Macro1()
Dim CD As Workbook
Dim OD As Worksheet
Dim CS As Workbook
Dim OS As Worksheet
Dim CLS As Integer
Dim CLD As Integer
Dim DLS As Integer
Dim DLD As Integer
Dim TVD As Variant
Dim TVS As Variant
Dim I As Integer
Dim J As Integer

Set CD = ThisWorkbook
Set OD = CD.Worksheets("Feuil1") 'à adapter à ton cas
Set CS = wokbooks("ICI_le Nom_du_Classeur_Source.xlsx") 'à adapter à ton cas
Set OS = CS.Worksheets("Feuil1") 'à adapter à ton cas
CLD = 1 'à adapter à ton cas (Colonne des données à 9 chiffres)
CLS = 1 'à adapter à ton cas (Colonne des données à 6 chiffres)
DLD = OD.Cells(Application.Rows.Count, CLD).End(xlUp).Row
DLS = OS.Cells(Application.Rows.Count, CLS).End(xlUp).Row
TVD = OD.Range(OD.Cells(1, CLD), OS.Cells(DLD, CLD))
TVS = OS.Range(OS.Cells(1, CLS), OS.Cells(DLS, CLS + 1))
For I = 1 To UBound(TVD, 1)
    For J = 1 To UBound(TVS, 1)
        If CStr(Left(TVD(I, 1), 6)) = CStr(TVS(J, 1)) Then
            OD.Cells(I, CD + 1).Value = TVS(J, 2)
            Exit For
        End If
    Next J
Next I
End Sub

Les deux classeurs doivent être ouverts et le code est à placer dans le classeur qui contient 9 chiffres...
0