[VBA]Faire correspondre des données de 2 classeurs distincts

Bonjour à toutes et à tous.

Je vous explique mon problème.

Je souhaiterais faire correspondre des données de deux classeurs différents dont un sert de base de données mais je ne sais pas comment m'y prendre.

Dans mon cas précis, je voudrais faire venir les données la colonne "Code Postal" du fichier BDD.xlsx sur le fichier FichierTest.xlsm et les faire correspondre aux bons identifiants.

Pour l'instant, j'arrive à importer les codes postaux via ma procédure VBA, seulement je bloque quand il s'agit de bien les faire correspondre aux bons identifiants.

J'espère avoir été clair, mais je vous joins les deux fichiers pour que vous compreniez mieux la situation.

64bdd.xlsx (10.02 Ko)
23fichiertest.xlsm (14.47 Ko)

Merci d'avance.

Cordialement,

Tibolito

Bonjour et bienvenu sur le forum

Voici un essai.

Te convient-il ?

107fichiertest.xlsm (18.91 Ko)

Bonjour ! Merci, je vais tenter de m'intégrer mais je n'ai qu'un niveau amateur en Excel, je débute ^^

J'ai découvert les macros il n'y a pas longtemps, et il y a un potentiel monstre. J'ai suivi les tutos VBA de Excel-pratique, mais je suis encore bien léger...

Bon, revenons au sujet. Tout d'abord un grand merci à toi

Je viens de tester et en effet ça marche très bien, c'est exactement ce qu'il me fallait.

Le code est très propre et je vais essayer de comprendre tout ça pour l'adapter par la suite à d'autres fichiers qui différeront un peu de ceux-là.

J'aurais simplement une autre question.

Sur le long terme, j'aurais besoin de cette procédure VBA pour beaucoup de fichiers qui seront plus longs.

Les deux fichiers que j'ai joins sont des exemples, les fichiers sur lesquels je travaillerais feront 500 lignes ou plus (surtout le fichier BDD qui ne cessera pas de se remplir). Autre problème, parfois, il n'y aura pas le même nombre de lignes dans les colonnes "Identifiants" des deux fichiers. C'est à dire que TestFichier.xlsm pourra faire 20 lignes quand BDD.xls fera 500 lignes, et donc il faudra récupérer uniquement 20 codes postaux du fichier BDD et non pas les 500, et bien sûr les faire correspondre aux bons identifiants dans le fichier TestFichier.xlsm .

Est-ce que cette procédure serait valable si les deux fichiers ne disposaient pas du même nombre de lignes ?

Je ne sais pas si je suis clair, ma demande d'explication parait barbare comme ça, je reste à disposition si besoin il y avait de mieux vous expliquer la situation.

Encore merci, et bonne journée

Tibolito.

Re bonjour

Tu écris :

Est-ce que cette procédure serait valable si les deux fichiers ne disposaient pas du même nombre de lignes ?

Le nombre de lignes n’a aucune importance.

Les contraintes sont autres. La macro fonctionnera correctement si :

• dans ton fichier test, les identifiants sont en colonne « »A »

• il n’y a que des identifiants dans cette colonne et pas de cellules vides entre deux identifiants

• c’est toujours en colonne « D » que tu veux mettre les codes postaux

• le fichier BDD s’appelle toujours « BDD.xlsx »

• dans ce fichier BDD les identifiants sont en colonne A et les codes postaux en colonne B (là, peu importe s’il y a des vides entre les identifiants)

• si à chaque identifiant correspond toujours le même code : la macro s’arrête au premier

Si une ou plusieurs de ces conditions ne sont pas remplies, il faut adapter le code.

Bye !

Re-bonjour !

D'accord, très bien, je devrais m'en sortir donc et je ré-adapterais le code en temps voulu si les colonnes venaient à bouger ou quoi, la base est là désormais

Je te remercie vraiment et sincèrement, tu m'enlèves une belle épine du pied par ton aide, j'étais vraiment bloqué à cause de ça...

Bonne fin de journée.

Bonjour,

Bon, je croyais que la modification de ton code parfait serait simple mais en fait non ^^

J'ai changé plusieurs contraintes sans problème mais sur une, je bloque.

Désormais, je veux faire venir les codes postaux en colonne F, problème, dans ta macro, je ne vois absolument pas où est notifié la colonne de destination :/

Merci.

Bonjour,

Bon, je croyais que la modification de ton code parfait serait simple mais en fait non ^^

J'ai changé plusieurs contraintes sans problème mais sur une, je bloque.

Désormais, je veux faire venir les codes postaux en colonne F, problème, dans ta macro, je ne vois absolument pas où est notifié la colonne de destination :/

Merci.

Edit : c'est Offset bien sûr, je suis un crétin. Merci de ne pas tenir compte de mon message du coup :p

Bonjour,

Je relance ce sujet car des modifications du fichier BDD me sont tombées sur la poire et me bloquent à nouveau.

Le fond du problème reste le même.

Mais le fichier BDD se retrouve modifié. En effet, au lieu d'avoir une colonne Identifiant, il y en a 3.

Je voudrais donc faire venir les données la colonne "Code Postal" du fichier BDD.xlsx sur le fichier FichierTest.xlsm et les faire correspondre aux bons identifiants, sachant que désormais, les colonnes B, C et D de mon fichier BDD.xlsx contiennent aussi des identifiants.

En gros, si un des identifiant d'une des colonnes A, B, C ou D du fichier BDD correspond à l’identifiant de FichierTest.xlsm, on colle le code postal adéquat dans le fichier FichierTest.xlsm.

Est-ce possible tout d'abord ?

Merci d'avance.

Tibolito.

En PJ, les deux fichiers.

16fichiertest-1.xlsm (16.15 Ko)
22bdd.xlsx (10.39 Ko)

Bonjour

Tibolito7 a écrit :

Est-ce possible tout d'abord ?

C'est possible : gmb l'a fait !

Bye !

26fichiertest.xlsm (22.81 Ko)

GMB est descendu de l'Olympe pour aider un pauvre Exceleur encore dans le besoin ^^

Merci l'ami, tu gères vraiment, encore une fois c'est nikel

Bonjour à tous

Je relance un peu ce sujet car j'aurais quelques questions concernant l'optimisation de code.

Ton code GMB fonctionne très bien, cependant, dès lors que les fichiers deviennent volumineux (et les miens augmentent considérablement chaque semaine), la macro patine et met très longtemps à s'exécuter.

Par exemple, actuellement mon fichier "BDD.xlsx" fait 300000 lignes et mon fichier "FichierTest.xlsm" en fait 35000. La macro met plusieurs heures (près de 5 heures environ) pour se terminer, et je trouve ça quand même long.

J'ai rajouté au code les instructions "Application.ScreenUpdating = False" ou encore "Application.ScreenUpdating = True" en début et fin de code, je gagne un peu de temps mais ce n'est pas encore ça.

Il y aurait-il une manière d'accélérer significativement le temps de traitement du code de GMB ?

Merci d'avance, bonne fin de journée

Bonjour

Tu devrais mettre tes fichiers (allégés : pas avec 30000 lignes) en pièce jointe si tu veux avoir quelque chance de réponse, ce que je te souhaite vivement.

Bye !

Rechercher des sujets similaires à "vba correspondre donnees classeurs distincts"