Comparaison des info dans deux colonnes differentes de deux

Bonjour,

j'ai deux fichiers

un premier: donnees ( qui comporte des donnees qui peuvent changer a chanque fois comportant 03 colonnes "nom,date et statut").

un 2eme: comparaison ( avec une liste de donnees qui ne change pas comportant deux colonnes "nom et statut")

le but est de creer un code vba qui prend la valeur de la premiere cellule de la colonne "nom" du fichier "donnees" et la cherche dans la colonne "nom" du fichier "comparaison".

s'il trouve que c'est identique, alors il copie le contenu de la cullule correspondante de la colonne "statut" du fichier "donnees" et la colle dans la cellule correspondante dans la colonne "statut" du fichier "comparaison". s'il la trouve.

s'il la trouve pas, il passe a la cellule suivante (de la colonne "nom du fichier "donnees") et cherche de la meme maniere, jusqu'a la fin.

ex:

PSP1 se trouve dans les fichiers, alors il prend le contenu du "statut" du fichier "donnees" et le colle dans "statut" du fichier "comparaison".

81comparaison.xlsx (13.51 Ko)
66donnees.xlsx (13.90 Ko)

merci pour votre aide.

Pas besoin de VBA :

=SIERREUR(RECHERCHEV(E2;[donnees.xlsx]Sheet1!$A:$C;3;0);"???")

bonjour,

et merci pour la réponse. je ne sais pas si je me suis bien exprimé, mais le but est d'automatiser le travail face a 50-70 lignes.

j'ai deux fichiers, je cherche a coller le contenu d'une cellule d'un fichier A dans une autre cellule d'un fichier B si une condition est remplie (un contenu identique entre les deux fichier des cellules de la colonne statut).

merci pour votre retour.

Tu peux éventuellement partir de cette formule, et créer une macro par apprentissage en finissant par un copier/coller valeurs uniquement dans ce cas.

bonjour,

merci pour ce retour. effectivement elle marche, mais il faut la traduire en code VBA !!!

Dans comparaison :

Sub compare()

Set principal = ThisWorkbook
Set secondaire = Workbooks("donnees.xlsx")

For Each cel In Range("E2:E" & Range("E1").End(xlDown).Row)

    Set C = secondaire.Sheets("Sheet1").Columns("A").Find(cel.Value, Range("A1").End(xlDown), xlValues, xlWhole)
    If Not C Is Nothing Then
        cel.Offset(0, 1).Value = C.Offset(0, 2).Value
    End If

Next

Set secondaire = Nothing
Set principal = Nothing

End Sub

bonjour,

Merci pour ce retour. je vais essayer de la tester.

Bonjour,

dans la même veine tout en conservant la couleur de fond, démonstration à coller dans le classeur Comparaison :

Sub Demo()
Dim Rs As Range, Rg As Range
Set Rs = Workbooks("donnees.xlsx").Worksheets(1).Cells(1).CurrentRegion.Columns(1)
Application.ScreenUpdating = False

With ThisWorkbook.Worksheets(1)
    For R& = 2 To .Cells(5).CurrentRegion.Rows.Count
           Set Rg = Rs.Find(.Cells(R, 5).Value, , xlValues, xlWhole)
        If Not Rg Is Nothing Then Rg(1, 3).Copy .Cells(R, 6)
    Next
End With

Set Rg = Nothing
Set Rs = Nothing
End Sub

cette macro bloque a la 3eme ligne

Set Rs = Workbooks("donnees.xlsx").Worksheets(1).Cells(1).CurrentRegion.Columns(1)

Aucun souci de mon côté en ouvrant les deux fichiers joints initialement !

Avec le message d'erreur et son aide, tu dois comprendre pourquoi …

bonjour,

j'ai bon fait mais ya pas moyen, elle bloque toujours dans la 2eme ligne avec l'erreur

Run Time error '9':

Subscript Out of range

et pourtant j'utilise les meme fichiers postés. la macro je la lance depuis le fichier ''comparaison''.

Marc L a écrit :

Aucun souci de mon côté en ouvrant les deux fichiers joints initialement !

Et le code de Steelson ?

sans oublier d'ouvrir "donnees", sinon je peux ajouter une fonction d etest et d'ouverture ...

Bonjour et dsl pour ce retard.

les deux macro bloque sur la 3eme ligne avec le meme message d'erreur:

Set secondaire = Workbooks("donnees.xlsx") ==> Run Time error '9': Subscript Out of range

Set Rs = Workbooks("donnees.xlsx").Worksheets(1).Cells(1).CurrentRegion.Columns(1) ==> Run Time error '9': Subscript Out of range.

les deux fichiers sont ouvert en même temps.

tu peux rajouter si tu veux le test.

Comme nos codes fonctionnent bien de notre côté avec tes classeurs joints, évidemment tu ne nous dis pas tout !

Avec un test, il n'y aurait certes pas de message d'erreur mais comme le fichier ne sera pas trouvé,

le traitement ne s'effectuera pas …

As-tu au moins testé nos codes avec tes classeurs joints dans ce forum et non pas avec tes fichiers source ?!

L'orthographe d'un nom de fichier a aussi son importance …

franchement j'ai rien a dire de plus.

je viens de telecharger les deux fichiers joint. et les deux macro bloque sur ces deux lignes.

ci-joint la capture d'ecran en lancant la 2eme macro Demo.

erreurvba

Apparemment tu disposes de plusieurs versions d'Excel : tu as essayé sur toutes et sur différents ordinateurs ?

ca par contre non. et je crains que ça sera pas possible.

ca bloque au niveau de l'allocation du fichier donnees.xlsx


la je me demande, est ce que le probleme ne vient pas au niveau des declarations:

ub Demo()

Dim Rs As Range ou RG, et mettre workbook ?

sachant que j'ai modifie RS As range par worbook, tjrs prob.

mais je me suis dit que pt etre c'est pas ce qu'il fallait mettre.

une autre idee?

Il y a clairement un souci de ton côté vu que cela fonctionne du nôtre !

Dans le VBE, décocher les références manquantes (via le menu Outils). Quelles sont celles restantes ?

Merci Marc.

a priori j'ai un souci, j'ai demandee a un ami de la tester sur son poste, il me dit que ca fonctionne chez lui (Dommage j'ai pas pu voir le resultat).

vraisemblablement j'ai un souci.

quand je regarde sur Excel,=>onglet Developer => Use relative references est bien desactivee.

dans VBE, je trouve que ces case cochées

visual basic for application

microsoft excel 14.0 object library

OLE Automation

le reste est décoché.

Rechercher des sujets similaires à "comparaison info deux colonnes differentes"