Comparation de fichiers Excel et similitude

Bonjour à tous,

Dans le cadre de mon travail, je dois comparer en quelque sorte deux fichiers:

Dans les deux fichiers se trouvent des ID (colonne A) qui comporte des commentaires spéciaux (colonne M). Les commentaires ne se trouvent que dans le deuxième fichier.

Je dois donc, à la main, vérifier si des ID du second fichier se retrouvent dans le premier. Et si oui, recopier les commentaires correspondant au bon ID dans le premier.

Le but étant maintenant d'automatiser ce processus. Mais je ne vois pas comment...

J'espère avoir été assez clair car ce n'est pas évident à expliquer !

Je vous remercie par avance de votre aide.

Salut Octaz!

On me demande également de faire ce genre de procédure à mon travail :p (t'est comptable?)

Je te le dit comme je le dit à mes responsables lorsqu'il me demande quelles solutions existent :

1) Par VBA

2) Par formule & Liaison

3) Copier / Coller dans un même classeur les onglets, et donc par formule

Qu'est-ce qui te tente parmi ces propositions ?

Restant à dispo!

Bonjour Juice,

J'ai essayé par VBA mais je n'ai pas réussi à faire exactement ce que je voulais.

La copie des commentaire se fait mais ne prend pas en compte les ID donc c'est une copie banale.

Ci-dessous, ce que j'ai essayé de faire.

Sub test()

    Dim dossier As String
    Dim fichier As String
    Dim imb_src As Range
    Dim comm As Range
    Dim ws As Worksheet
    Dim valeur As Range

    Dim cellule_cible As Range
    Dim imb_cible As Range
    Dim comm_cible As Range

    'fichier cible
    dossier = ("C:\Users\BJTC5415\Desktop\Dossier test\")
    fichier = (dossier + "S45_RATAFIA_G2R_KS.xlsx")
    Workbooks.Open (fichier)
    Set cellule_cible = Workbooks("S45_RATAFIA_G2R_KS.xlsx").Sheets(1).Range("M2")
    Set imb_cible = Workbooks("S45_RATAFIA_G2R_KS.xlsx").Sheets(1).Range("A2:A150")

    'fichier source
    Set ws = ThisWorkbook.Sheets("Feuil1")
    Set imb_src = ws.Range("A2:A150")
    Set comm = ws.Range("M2")

    ws.Activate

    'boucle de vérification et copie
    For Each imb_src In Range("A2:A150")

       If comm > 0 Then imb_src.Offset(0, 12).Activate
            ActiveCell.Copy

            If imb_src = imb_cible Then
            cellule_cible.PasteSpecial Paste:=xlPasteValues
            End If

    Next imb_src

End Sub

C'est très brouillon...

(IMB correspond à l'ID).

Cordialement.

Donc on va fonctionner par VBA. Merci de me donner plus de précision en répondant aux questions ci-dessous stp :

Dans quelle colonne se trouve tes ID sur ton fichier source?

Dans quelle colonne se trouve tes ID sur ton fichier cible?

Quelle est le fichier qui reçoit les commentaires?

Dans quelle condition?

A te lire

Mes excuses pour le temps de réponse et meilleurs voeux !

Mes ID se trouvent dans la colonne A dans les deux fichiers.

Les commentaires se trouvent dans le fichier cible.

Et le but est de vérifier si des ID similaires au fichier source se trouvent dans le fichier cible, et si oui, de vérifier si les commentaires existent. Sinon, il faut recopier les commentaires correspondant.

Re Octaz,

Meilleurs vœux également ;D

Concernant ta demande et suite à tes précisions, tu trouveras ci-dessous un code qui devrait résoudre ton problème :

Sub Control()
Dim x As Long, wb As String, c As Range
wb = ThisWorkbook.Name
Workbooks.Open Filename:="C:\Chemin\Fichier.xls"
For x = 1 To Workbooks(wb).Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
    Set c = Columns(1).Find(what:=Workbooks(wb).Sheets(1).Cells(x, 1), LookAt:=xlWhole)
    If Workbooks(wb).Sheets(1).Cells(x, 13) = "" And Not c Is Nothing Then Workbooks(wb).Sheets(1).Cells(x, 13) = Cells(c.Row, 13)
Next
End Sub

La seule chose que tu dois changer c'est le chemin vers le fichier source [Chemin + Nom Fichier + Extension] pour l'ouvrir et ensuite transférer les commentaires vers ton fichier cible :3

Restant à dispo si tu a des questions!

Merci beaucoup ! Ca à l'air de fonctionner !

Seulement maintenant, le but est de sélectionner lequel est le fichier source, et lequel est le fichier cible. Mais je n'arrive pas à l'adapter à ton code :

Sub Control()

Dim x As Long, wb As String, c As Range

'Définition du fichier source
fichier_src = Application.GetOpenFilename()
    If fichier_src <> False Then
    Else
        MsgBox "Vous n'avez pas sélectionné de fichier.", vbExclamation
    End If

'Définition du fichier cible où doivent être copiés les commentaires
fichier_cible = Application.GetOpenFilename()
    If fichier_cible <> False Then
    Else
        MsgBox "Vous n'avez pas sélectionné de fichier.", vbExclamation
    End If

wb = Workbooks(fichier_cible).Name
Workbooks.Open Filename:=fichier_src
For x = 1 To Workbooks(wb).Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
    Set c = Columns(1).Find(what:=Workbooks(wb).Sheets(1).Cells(x, 1), LookAt:=xlWhole)
    If Workbooks(wb).Sheets(1).Cells(x, 13) = "" And Not c Is Nothing Then Workbooks(wb).Sheets(1).Cells(x, 13) = Cells(c.Row, 13)
Next
End Sub

J'ai une erreur , "l'indice n'appartient pas à la sélection" ici :

(wb = Workbooks(fichier_cible).Name)

:/

Re!

Mon code part du principe que :

  • Le fichier qui doit recevoir les commentaires est déjà ouvert et c'est de lui que le code part
  • Le fichier qui envoie les commentaires est fermé

Ce n'est pas le cas chez toi ?

Quand tu dit [...]

maintenant, le but est de sélectionner lequel est le fichier source, et lequel est le fichier cible

Qu'est ce que tu entend par sélectionner ?

Saisir le nom dans le code ?

Saisir le nom dans une cellule ?

Saisir le nom dans une InputBox ?

Choisir le fichier via le répertoire ?

A te lire

Pardonnez moi, il serait mieux d'avoir ce code dans un classeur vierge où je clique simplement sur un bouton pour effectuer les manoeuvres.

Ensuite, le fait est que les fichiers changent tous les semaines. Le mieux est donc de choisir manuellement quel fichier est la source, et quel fichier est la cible. Pour après pouvoir effectuer votre code.

Vous me suivez ?

Vous me suivez ?

Parfaitement

Je reviens vers toi un peu plus tard avec un nouveau fichier !

Je vous remercie pour le temps que vous m'accordez !

Je crois avoir trouvé :

Sub Control()

Dim x As Long, wb As String, c As Range

'Définition du fichier source
fichier_src = Application.GetOpenFilename()
    If fichier_src <> False Then
    Else
        MsgBox "Vous n'avez pas sélectionné de fichier.", vbExclamation
    End If

'Définition du fichier cible où doivent être copiés les commentaires
fichier_cible = Application.GetOpenFilename()
    If fichier_cible <> False Then
    Else
        MsgBox "Vous n'avez pas sélectionné de fichier.", vbExclamation
    End If

    Workbooks.Open Filename:=fichier_cible

wb = ActiveWorkbook.Name
Workbooks.Open Filename:=fichier_src
    For x = 1 To Workbooks(wb).Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
        Set c = Columns(1).Find(what:=Workbooks(wb).Sheets(1).Cells(x, 1), LookAt:=xlWhole)
        If Workbooks(wb).Sheets(1).Cells(x, 13) = "" And Not c Is Nothing Then Workbooks(wb).Sheets(1).Cells(x, 13) = Cells(c.Row, 13)
    Next

End Sub

J'ai ajouté ceci :

 Workbooks.Open Filename:=fichier_cible 

Du coup tu a trouvé ta solution ?

Si oui pense à clôturer ce sujet ^^

Oui, merci beaucoup pour votre aide !

Rechercher des sujets similaires à "comparation fichiers similitude"