Comparaison de deux fichiers excel et soustraction

emars

XLDnaute Nouveau
fichier 1.PNG fichier 2.PNG
Bonjour ,
Etant debutante sur VBA, je viens vers vous pour demander votre aide.
En effet, j'ai deux fichiers Excel qui se présentent sous cette forme
Fichier 1

fichier 1.PNG



Fichier 2
fichier 2.PNG


Les fichiers sont joints. ( En réalité le fichier 1 contiendra bientôt 2000 lignes et le fichier 2 100 lignes)
Je souhaiterai un code VBA qui cherche pour chaque ligne du fichier 2 sa correspondante en fichier 1 ( grâce aux colonnes ID et unité), et dès qu'il l'a trouvera les valeurs pour chaque moins seront retranchées entre les deux fichiers ( résultat dans un fichier 3)

J'ai vu que pour comparer deux colonnes il faut utiliser des find imbriqués mais je ne sais pas comment faire, ni comment récupérer l'adresse de la ligne en cas de correspondence.
Voici le début du code (trouvé sur internet)
VB:
 Dim wbFicA As Workbook, wbFicB As Workbook, wbFicAna As Workbook
    Dim wsFicA As Worksheet, wsFicB As Worksheet, wsFicAna As Worksheet
' Classeur d'analyse
    Set wbFicAna = ThisWorkbook
    Set wsFicAna = wbFicAna.ActiveSheet

    ' Ouverture du fichier A et définition de la feuille de traitement
    Set wbFicA = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "Fichier A.xls")
    Set wsFicA = wbFicA.Worksheets("Feuil1")
   
    ' Ouverture du fichier B et définition de la feuille de traitement
    Set wbFicB = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "Fichier B.xls")
    Set wsFicB = wbFicB.Worksheets("Feuil1")
     Dim nblig2 As Long
For nblig2 = 2 To 10
    Set CodeCommande = wsFicA.Cells(nblig2, 1).Value
       Set CommandeCell = wsFicA.Columns(1).Find(what:=CodeCommande, LookAt:=xlWhole)
A ce stade des boucles imbriquées, je suis bloquée. Pourriez-vous m'aider?
Ci-joint les fichiers excels

Merci d'avance
 

Pièces jointes

  • fichier 1.xlsx
    33.3 KB · Affichages: 48
  • fichier 2.xlsx
    9 KB · Affichages: 42

Theze

XLDnaute Occasionnel
Bonsoir,

Une piste où le résultat sera affiché dans la fenêtre d'exécution (Ctrl+G). Seule contrainte, les deux classeurs doivent être ouvert :
Code:
Sub Test()
   
    Dim Classeur1 As Workbook
    Dim Classeur2 As Workbook
    Dim Plage1 As Range
    Dim Plage2 As Range
    Dim Cel1 As Range
    Dim Cel2 As Range
    Dim Tbl() As String
    Dim I As Long
    Dim Adr As String
   
    Set Classeur1 = Workbooks("Fichier 1.xlsx")
    Set Classeur2 = Workbooks("Fichier 2.xlsx")
   
   
    With Classeur1.Worksheets("Feuil1"): Set Plage1 = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
    With Classeur2.Worksheets("Feuil1"): Set Plage2 = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
   
    For Each Cel2 In Plage2
   
        Set Cel1 = Plage1.Find(Cel2, , xlValues, xlWhole)
       
        If Not Cel1 Is Nothing Then
       
            Adr = Cel1.Address
           
            Do
               
                I = I + 1
                ReDim Preserve Tbl(1 To 2, 1 To I)
               
                Tbl(1, I) = Cel1.Value
                Tbl(2, I) = Cel1.Address(0, 0)
               
                Set Cel1 = Plage1.FindNext(Cel1)
               
            Loop While Cel1.Address <> Adr
           
        End If
       
    Next Cel2
   
    For I = 1 To UBound(Tbl, 2)
   
        Debug.Print "La valeur '" & Tbl(1, I) & "' a été trouvée dans la cellule >" & Tbl(2, I) & "< de la feuille ""Feuil1"" du classeur 1"
   
    Next I
   
End Sub
 

zebanx

XLDnaute Accro
Bonjour Gosselien

Le regret, c'est de ne pas pouvoir liker l'une ou les réponses communiquées (qui font le job - réponse de GMB).
Mais merci à toi d'avoir mis le lien, la réponse et le code sont d'intérêt ;) et devraient favorablement conclure cette demande.

bonne journée
zebanx
 

Theze

XLDnaute Occasionnel
Bonjour,

Merci pour la réponse. Avez-vous testé le code? Il ne marche pas pour mon cas
Oui je l'ai testé et voici le résultat dans la fenêtre d'exécution :
Code:
La valeur 'HA47' a été trouvée dans la cellule >A27< de la feuille "Feuil1" du classeur 1
La valeur 'HA47' a été trouvée dans la cellule >A28< de la feuille "Feuil1" du classeur 1
La valeur 'HA47' a été trouvée dans la cellule >A29< de la feuille "Feuil1" du classeur 1
La valeur 'HA47' a été trouvée dans la cellule >A30< de la feuille "Feuil1" du classeur 1
La valeur 'HA47' a été trouvée dans la cellule >A31< de la feuille "Feuil1" du classeur 1
La valeur 'GZ28' a été trouvée dans la cellule >A49< de la feuille "Feuil1" du classeur 1
La valeur 'GZ28' a été trouvée dans la cellule >A50< de la feuille "Feuil1" du classeur 1
La valeur 'GZ28' a été trouvée dans la cellule >A51< de la feuille "Feuil1" du classeur 1
La valeur 'GZ28' a été trouvée dans la cellule >A52< de la feuille "Feuil1" du classeur 1
La valeur 'GZ16' a été trouvée dans la cellule >A75< de la feuille "Feuil1" du classeur 1
La valeur 'GZ16' a été trouvée dans la cellule >A76< de la feuille "Feuil1" du classeur 1
La valeur 'GZ16' a été trouvée dans la cellule >A77< de la feuille "Feuil1" du classeur 1
La valeur 'GZ16' a été trouvée dans la cellule >A78< de la feuille "Feuil1" du classeur 1
La valeur 'GX24' a été trouvée dans la cellule >A97< de la feuille "Feuil1" du classeur 1
La valeur 'GX24' a été trouvée dans la cellule >A98< de la feuille "Feuil1" du classeur 1
La valeur 'GX24' a été trouvée dans la cellule >A99< de la feuille "Feuil1" du classeur 1
La valeur 'GX24' a été trouvée dans la cellule >A100< de la feuille "Feuil1" du classeur 1
La valeur 'GX24' a été trouvée dans la cellule >A101< de la feuille "Feuil1" du classeur 1
La valeur 'GX24' a été trouvée dans la cellule >A102< de la feuille "Feuil1" du classeur 1
La valeur 'GX24' a été trouvée dans la cellule >A103< de la feuille "Feuil1" du classeur 1
La valeur 'GW26' a été trouvée dans la cellule >A121< de la feuille "Feuil1" du classeur 1
La valeur 'GW26' a été trouvée dans la cellule >A122< de la feuille "Feuil1" du classeur 1
La valeur 'GW26' a été trouvée dans la cellule >A123< de la feuille "Feuil1" du classeur 1
La valeur 'GW26' a été trouvée dans la cellule >A124< de la feuille "Feuil1" du classeur 1
La valeur 'GT42' a été trouvée dans la cellule >A141< de la feuille "Feuil1" du classeur 1
La valeur 'GT42' a été trouvée dans la cellule >A142< de la feuille "Feuil1" du classeur 1
La valeur 'GT42' a été trouvée dans la cellule >A143< de la feuille "Feuil1" du classeur 1
La valeur 'GT42' a été trouvée dans la cellule >A144< de la feuille "Feuil1" du classeur 1
La valeur 'GT42' a été trouvée dans la cellule >A145< de la feuille "Feuil1" du classeur 1
La valeur 'GS73' a été trouvée dans la cellule >A165< de la feuille "Feuil1" du classeur 1
La valeur 'GS73' a été trouvée dans la cellule >A166< de la feuille "Feuil1" du classeur 1
La valeur 'GS73' a été trouvée dans la cellule >A167< de la feuille "Feuil1" du classeur 1
La valeur 'GS73' a été trouvée dans la cellule >A168< de la feuille "Feuil1" du classeur 1
La valeur 'GS21' a été trouvée dans la cellule >A181< de la feuille "Feuil1" du classeur 1
La valeur 'GS21' a été trouvée dans la cellule >A182< de la feuille "Feuil1" du classeur 1
La valeur 'GS21' a été trouvée dans la cellule >A183< de la feuille "Feuil1" du classeur 1
La valeur 'GS21' a été trouvée dans la cellule >A184< de la feuille "Feuil1" du classeur 1
La valeur 'GS18' a été trouvée dans la cellule >A193< de la feuille "Feuil1" du classeur 1
La valeur 'GS18' a été trouvée dans la cellule >A194< de la feuille "Feuil1" du classeur 1
La valeur 'GS18' a été trouvée dans la cellule >A195< de la feuille "Feuil1" du classeur 1
Bien évidement, les résultats sont à adapter selon tes besoins !
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505