VBA rechercher remplacer dans deux classeurs différents

therollerxaxa

XLDnaute Nouveau
Salut à tous!
Actuellement en licence pro géomatique, j'a ai eu droit à quelques cours de VBA, mais c'est pas facile tout les jours...!

Je dois écrire une macro en VBA pour une projet tuteuré, mais je n'ai pas pu avoir de réponse valable de la part de mes profs, et les syntaxes trouvées sur le net sont multiples et variées, mais avec moi, y'en a pas une qui fonctionne correctement.
Voila mon problème :
j'ai une table nomenclatures (colonnes nom province, code NUTS)
une table 2000 (colonne nom province, et d'autres colonnes qui importent peu)
chacune dans un classeur différent
nomenclatures.nom province = 2000.nom province

Il faut en fait que j'ajoute à ma table 2000 un colonne avec le code NUTS correspondant à chaque province, en sachant qu'elles ne sont pas dans le même ordre dans les deux tables, et qu'il y a des lignes en plus dans 2000 (trop facile sinon!)

J'ai fait une tentative avec l'enregistreur de macro et la fonction rechercev, mais la syntaxe R1C1 sonne un peu comme du chinois pour moi!
Je vous joint mes deux classeurs avec ce post.

Pour le fin du fin, il faudrait que j'applique cette macro à une cinquantaine de classeurs, s'il y avait un moyen de le faire d'un coup, ca me ferait gagner beaucoup de temps, et m'apprendrait des choses utiles par la même occasion. (toutes les tables à renseigner ont les mêmes lignes)

Merci d'avance pour votre aide
Xavier
 

Pièces jointes

  • nomenclatures_eurostat.xls
    32.5 KB · Affichages: 116
  • 2000.xls
    28 KB · Affichages: 78
  • 2000.xls
    28 KB · Affichages: 92
  • 2000.xls
    28 KB · Affichages: 76

julberto

XLDnaute Occasionnel
Re : VBA rechercher remplacer dans deux classeurs différents

Bonjour therollerxaxa, bonjour le forum

Je pensais que tu aurais eu quelques indications sans que pour autant on te réalise ton projet.
Je m'y colle donc.

Un langage ne se maîtrise que lorsque l'on s'y confronte; je ne te donnerai donc que des pistes de recherche. L'aide d'Excel pourra faire le reste, l'enregistreur de macro fera l'appoint.

1 - La table "nomenclatures" (nom province) contient en fin de désignation des caractères "espace" et "espace insécable" de code 32 et 160 qu'il te faut éliminer pour être conforme à la cible.
len donne la longueur d'une chaîne de caractères
Left, Right, Trim agissent sur une chaîne aussi.
2 - L'insertion de colonne se réalise avec la méthode Insert
3 - La méthode Range.Find(Quoi, LookIn:=xlValues) te sera nécessaire.
4 - End(xlUp/xlDown) t'ammènera en fin d'une liste.
5 - Pour parcourir une collection de cellules, d'objets For Each est bien pratique.
6 - Set associe une référence d'objet à une variable.
7 - Le renvoi de collection d'objets Workbooks, Worksheets, Range .

Je n'ai pas utilisé d'autres méthodes ou fonctions pour réaliser ton projet, excepté Offset dont tu peux te passer.

That's all folk ! Cordialement
 

JNP

XLDnaute Barbatruc
Re : VBA rechercher remplacer dans deux classeurs différents

Bonjour le fil :),
Un langage ne se maîtrise que lorsque l'on s'y confronte; je ne te donnerai donc que des pistes de recherche. L'aide d'Excel pourra faire le reste, l'enregistreur de macro fera l'appoint.
L'approche pédagogique est bonne, bien qu'entre les explications et la réalisation, le gouffre est pas mal grand :p...
Dans les fonctions que tu as oubliées et qui me paraissent indispensables :
Trim prendra l'espace 32, mais pas le 160... Donc à bien manier avec précaution... Par contre, Replace() et Chr() manquent dans ton explication, comme par exemple
Code:
Selection = Trim(Replace(Selection, Chr(160), ""))
Pour .Find, LookAt:=xlWhole me parrait indispensable à rajouter :rolleyes:...
Enfin, la méthode Open pour ouvrir les classeurs peut être aussi utile, ainsi que les FSO (FileSystemObject) pour décrire la collection de fichier comme
Code:
Set fs = CreateObject("Scripting.FileSystemObject")
Bonne journée et bon courage :cool:
 

therollerxaxa

XLDnaute Nouveau
Re : VBA rechercher remplacer dans deux classeurs différents

ok, merci a vous pour les pistes, comme vous dites, l'aide de vba est assez bien faite, mais quand on ne connait pas les syntaxes, c'est pas toujours évident de savoir par où commencer.
Julberto, comme tu dis le mieux n'est pas que vous me fassiez mon projet, mais que je me débrouilles avec ce que vous venez de me donner, c'est la meilleure pédagogie pour apprendre.

Je vous tiens au courant des avancements, bonne fin de journée!
 

JNP

XLDnaute Barbatruc
Re : VBA rechercher remplacer dans deux classeurs différents

Re :),
mais quand on ne connait pas les syntaxes, c'est pas toujours évident de savoir par où commencer.
Comme dirais Lapalisse, le plus simple, c'est par le début :p...
Si tu commences VBA, plutôt que de te lancer dans une Sub interminable, je te conseilles de faire des petites Sub que tu peux tester individuellement, puis un Sub principale qui appelle les Sub les unes derrières les autres :rolleyes:.
Donc par exemple une Sub Nettoyage() qui va supprimer les fameux espaces, puis une Sub Insertion() qui va ajouter la colonne, une Sub VaChercher() qui va aller chercher la valeur et la ramener.
A ce moment là, tu pourras écrire
Code:
Sub Main()
Call Nettoyage
Call Insertion
Call VaChercher
End Sub
qui te fera tout ;)...
Pour les fichiers multiples, on t'aidera certainement quand ces premiers codes seront au point :rolleyes:...
Bon courage :cool:
 

Discussions similaires

Réponses
26
Affichages
537

Statistiques des forums

Discussions
312 677
Messages
2 090 807
Membres
104 671
dernier inscrit
Guilbry