VBA, Trouver et identifier une cellule dans un autre fichier

HerwinPew Messages postés 11 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 25 novembre 2010 - 14 oct. 2010 à 14:37
HerwinPew Messages postés 11 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 25 novembre 2010 - 26 oct. 2010 à 16:36
Bonjour,

je ne connais pas grand chose en VBA excel et j'aurais besoin d'aide.
Malgré de nombreuses recherches sur le net, je n'ai rien trouvé sur le sujet que voici :
-----------------------------------------------------------------------
J'ai deux fichiers excel. Appelons-les, fichier A et fichier D.
Dans chacun de ces deux fichiers, j'ai une colonne avec des codes.
Les codes sont de même nature dans les deux fichiers (code à 6chiffres et une lettre à la fin).
Une partie des codes de A correspond à ceux dans D mais pas complètement (l'ordre des codes est différent et le nombre de codes aussi).
Ma colonne de référence est celle du fichier D (là où il y a l'ensemble des codes).

Je voudrais pouvoir créer une macro, qui par selection d'un code en A1, dans la colonne A du fichier A, me trouve le code correspondant dans le fichier D.
Disons que ce code se trouve en D6 de la colonne D du fichier D.
Puis, qu'elle me fasse un copier-coller de la cellule à côté de D6, soit E6 dans le fichier A à côté de A1 soit B1.
Et ainsi de suite pour toutes les cellules de la colonne A.

Je tiens à préciser que je ne recherche pas à faire une recherchev.
Le copier-coller a sa raison d'être.

J'ai conscience que c'est complexe et j'espère avoir pu vous offrir une description claire de mon problème.

En vous remerciant d'avance pour votre aide,

Cordialement,

HerwinPew.

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 oct. 2010 à 16:47
Salut

Décompose ce que tu as à faire :
Lors d'une recherche, il te faudra :

- Ouvrir le classeur D : --> Enregistreur de macro

- Rechercher une cellule dans un ensemble de cellules --> Voir l'exemple de code que je donne dans <cette réponse>. Une fois que tu auras compris comment marche ce genre de boucle, il te sera facile d'ajouter le test "la cellule contient-elle ce que je cherche"

- Une fois que tu seras sur la cellule identique, utilise .Offset pour te déplacer relativement à cette cellule (puisque tu dois prendre la cellule d'à côté)

- Pour arrêter de faire la recherche dans la boucle For-Next, utilise un Exit For

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
HerwinPew Messages postés 11 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 25 novembre 2010
14 oct. 2010 à 22:29
Merci beaucoup Jack,

je teste ca demain et je repost un message pour te donner mes impressions.
0
HerwinPew Messages postés 11 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 25 novembre 2010
15 oct. 2010 à 14:41
Rebonjour,

Jack, pourrais-tu me guider un peu plus car comme je l'ai dit je n'y connais pas grand chose en VBA.

Voilà ce que j'ai compris concernant mon problème. Mais je ne sais pas l'exprimer en VBA.

Sélectionner la cellule de A1(dans le classeur 1)
For each A (du classeur 1)range in RangeTotal
If D (du classeur 2)= A then (j'ai repris mon exemple avec A1(classeur1)=D5(classeur2).

Range("D5").offset(0,1)
Selection.Copy
Windows("classeur1.xls").Activate
Range("B1").Select
ActiveSheet.Paste

Exit For
End Sub

Pourquoi y a-t-il des petits ronds devant tes "ranges" ?

Par avance, merci sincèrement.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
15 oct. 2010 à 15:22
Non, je ne te fournirai pas de code tout cuit.
Pas le temps de donner des cours particuliers.
Colle l'exemple dans un nouveau classeur, fais des essais, utilise le débogage pour suivre le programme et vérifier les données pointées ...
Je t'ai donné les éléments, à toi d'approfondir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HerwinPew Messages postés 11 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 25 novembre 2010
15 oct. 2010 à 15:38
Très bien merci quand même ;)
0
HerwinPew Messages postés 11 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 25 novembre 2010
26 oct. 2010 à 16:36
Rebonjour,

après avoir un peu potassé VBA et fait musette avec l'enregistreur, je produis mon premier code.
Mais, hélas, comme beaucoup de nouveau VBeurs en herbe, ma petite macro ne semble pas fonctionner.

Merci à l'âme charitable qui pourra me guider dans la voie du programme qui marche ;)

-----------------------------------------------------------
Sub testcopiage()

Columns("E:E").Select
Selection.Insert Shift:=xlToRight
Range("E1").Select
ActiveCell.FormulaR1C1 = "A copier"

Dim ColonneATotal As Range
Dim CelluleA As Range
Set ColonneATotal = Range("K2", Range("K65535").End(xlUp))

For Each CelluleA In ColonneATotal

CelluleA.Select
Selection.Copy
Windows("fichier semaine dernière.xls").Activate
Cells.Find(What:=CelluleA.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Selection.Offset(0, 1).Select
Application.CutCopyMode = False
Selection.Copy
ThisWorkbooks.Activate
CelluleA.Offset(0, 1).Select
ActiveSheet.Paste

Next CelluleA

Exit For

End Sub
0
Rejoignez-nous