FIND entre 2 fichiers

  • Initiateur de la discussion zeboue
  • Date de début
Z

zeboue

Guest
Bonjour,

J'ai un problème avec l'usage de la fonction Find entre 2 fichiers.
La macro est enregistrée dans le fichier A

Je voudrai effectuer une boucle sur un fichier B en récupérant une valeur de la 1ère colonne puis aller chercher cette valeur dans la 1ère colonne du fichier A

Voici le code
-------------------------------
Sub Macro1()

Dim c As Variant
Dim zeValeur, ficA, ficB As String

ficA = ThisWorkbook.Name

Workbooks.Open Application.GetOpenFilename("Sélection fichier B (*.xls), *.xls")
Range("A2").Select ' on se positionne en A2
Do While Application.ActiveCell <> "" ' tant que la cellule du fichier B n'est pas vide
zeValeur = Selection.Value ' valeur à chercher
Workbooks(1).Activate ' pointe sur fichier A
With Worksheets(1).Columns("A:A") ' recherche sur la colonne A
Set c = Selection.Find(zeValeur, _
After:=ActiveCell, _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not c Is Nothing Then
If ActiveCell.Value = zeValeur Then
MsgBox "Trouvé " & zeValeur & " dans cellule " & c.FormulaR1C1
End If
Else
MsgBox "Traitement à faire pour pas trouvé " & zeValeur
End If
End With

Workbooks(2).Activate ' on repointe vers fichier controle
ActiveCell.Offset(1, 0).Select ' va vers ligne suivante
Loop
End Sub

-------------------------------------

Cela ne marche pas !


merci aux gourous de m'indiquer où se trouvent les erreurs.
 
M

Minick

Guest
Salut,

Puisque jmps à trop mangé :eek:) je m'y suis collé

Voila ce que je te propose:


Sub Compare()
Dim ShA As Worksheet
Dim ShB As Worksheet
Dim Cellule As Range
Dim Recherche As Variant
Dim Temp As String


Set ShA = ThisWorkbook.Sheets("Feuil1")
Temp = Application.GetOpenFilename("Sélection fichier B (*.xls), *.xls")

If Temp <> "Faux" And Temp <> ThisWorkbook.FullName Then
Workbooks.Open (Temp)
Set ShB = ActiveWorkbook.Sheets("Feuil1")

For Each Cellule In ShB.Range("A2:A" & ShB.Range("A65536").End(xlUp).Row)
Set Recherche = ShA.Range("A1:A" & ShA.Range("A65536").End(xlUp).Row).Find(What:=Cellule)
If Not Recherche Is Nothing Then
MsgBox "Trouvé " & Cellule & " dans cellule " & Recherche.Address
Else
MsgBox "Traitement à faire pour pas trouvé " & Cellule
End If
Next
End If
End Sub


J'ai considéré que tu avais tes valeurs à rechercher et ta plage de recherche
dans des feuilles nommé "Feuil1" à toi d'adapter

@+ Minick
 
J

jmps

Guest
Bonjour zeboue, Minick, le Forum,

zeboue, tu vois je t'avais dit que tu aurais une réponse. Et en plus j'ai rien eu à faire ;°)
Merci à Minick de s'y être collé !

Bonne journée à tous.

José
 
Z

zeboue

Guest
Bonjour tout le monde


Grand merci à Minick , ça marche !

Je ne connaissais pas l'objet Range. En fait je m'étais lancé à partir de l'enregistreur de macro, d'où l'usage de Worksheet

Maintenant je vais essayer de récupérer les données du row de ShB pour màj ShA

Bonne journée


ZeBoué
 

Discussions similaires

Réponses
2
Affichages
215
Réponses
7
Affichages
484

Statistiques des forums

Discussions
313 020
Messages
2 094 435
Membres
106 027
dernier inscrit
DonSparks