Récupérer les informations d'un autre classeur

Bonjour,

Je suis un débutant en VBA et même si je parviens à modifier des macro et à les adapter pour mes problèmes, là je sèche un peu.

Voici ce que je voudrais faire. J'ai deux fichiers, mettons fichierA.xlsm et fichierB.xlsm.

Dans mon fichierA.xlsm, j'ai des feuilles, que l'on pourrait appeller France, Belgique, Allemagne, etc. Chacune de ces feuilles contient une information en cellule B15.

Dans mon fichierB.xlsm, j'ai une seule feuille avec la colonne A rempli de pays (France, etc).

Mon but serait de parvenir à faire un macro qui fonctionnerait selon l'algorithme suivant :

  • je regarde la cellule A1 de mon fichierB.xlsm, je vois qu'il y a écrit : France
  • dans mon fichierA.xlsm, j'ouvre la feuille dont le nom est France
  • je copie la cellule B15 de cette feuille
  • je colle cette valeur dans la cellcule B1 de mon fichierB.xlsm
  • je passe à la cellule A2 de mon fichierB.xlsm
  • etc., jusqu'à ce que l'on arrive sur une cellule vierge de la colonne A de mon fichierB.xlsm

Pourriez-vous m'aider ? Je vous en serais grandement reconnaissant.

Merci par avance,

Thomas

Bonsoir

peut-être avec le tableau exemple, je comprendrai mieux.

ensuite, as-tu exploré la fonction RechercheV plutôt que de faire une macro ?

cette fonction permet de ramener dans un classeur des valeurs d'un autre classeur, à condition d'avoir un identifiant commun dans chaque classeur permettant d'établir la correspondance.

Je ne sais pas si la recherchev sera suffisante pour mon souhait, du moins je ne l'ai jamais utilisée autrement que pour chercher une info sur la même ligne qu'un critère dans une liste de données.

Je joins un exemple de ce que je voudrais faire.

94fichiera.xlsx (7.94 Ko)
73fichierb.xlsx (7.67 Ko)

Edit : avec une recherchev, ça pourrait donner un truc comme ça :

=RECHERCHEV(info;'[fichierA.xlsx]France'!$1:$65536;2;0)

(avec "info", ce qui est rentré dans la cellule A15 de chaque feuille, c'est-à-dire juste à gauche de la valeur cherchée pour chaque pays)

Après, je voudrais savoir comment, à la place de France dans la formule, on pourrait faire référence à une cellule ?

Bonjour

il me manque du contexte pour bien comprendre l'usage et faire les choix pertinents au milieu de nombreuses solutions.

en l'état, je vois des solutions évoquées par ailleurs dans ce même forum :

en colonne B, formule simple mais figée ; en colonne C, une formule plus dynamique

Colonne A_________Colonne B___________________colonne C

Source :______________________________________[fichierA-1.xlsx]

France________='[fichierA-1.xlsx]France'!$B$15_____ =INDIRECT(ADRESSE(15;2;;1;$C$1&A2))

Allemagne ____='[fichierA-1.xlsx]Allemagne'!$B$15___=INDIRECT(ADRESSE(15;2;;1;$C$1&A3))

Belgique______='[fichierA-1.xlsx]Belgique'!$B$15____=INDIRECT(ADRESSE(15;2;;1;$C$1&A4))

Espagne______='[fichierA-1.xlsx]Espagne'!$B$15 ____=INDIRECT(ADRESSE(15;2;;1;$C$1&A5))

La formule dans la colonne C me renvoie 0, tu peux m'expliquer pourquoi ? (je ne connais pas cette formule)

Aussi, le contexte est le suivant : j'ai un fichier avec des infos de pays (à chaque feuille correspond un pays), et un fichier qui récapitule tous les pays avec les infos associées (grosso modo, une ligne = un pays), et plutôt que de devoir retapper toutes les infos, je voudrais les récupérer par des formules.

flipcup a écrit :

La formule dans la colonne C me renvoie 0, tu peux m'expliquer pourquoi ? (je ne connais pas cette formule)

je ne connaissais pas la formule avant de traîner dans ce forum

quant à son dysfonctionnement (valeur 0), j'ai négligé un point dans les références : quand j'ai téléchargé ton tableau A, en m'y reprenant à 2 fois, il est devenu fichierA-1.xlsx

probablement que chez toi, fichierA.xlsx conviendrait mieux pour définir la source

enfin, il y a plein de solutions différentes pour traiter les questions ; même avec ces précisions, je pense à d'autres pistes telles que

  • pourquoi avoir des fichiers séparés ?
  • pourquoi fractionner les informations par feuille de pays ?
  • est-ce que tu as essayé les un tableau croisé dynamique ?
...

bref, mon expérience me dit qu'il faut souvent repenser la première idée pour simplifier l'organisation des données et arriver enfin à des solutions souples, évolutives etc.

Quant aux questions sur l'organisation, j'ai grandement simplifié la chose, il s'agit de récupérer diverses infos d'une base de données sous excel énorme avec des centaines de feuilles, déjà remplies. Après, je pourrais faire ça sur une autre feuille du fichier qui nous intéresse, mais ça n'est pas la chose la plus compliquée à gérer j'imagine ?

Voici ce que j'ai fait pour le moment :

91fichierb.xlsx (8.16 Ko)

Finalement ça fonctionne assez bien, je vais essayer de voir comment je peux améliorer ça pour l'adapter à mon cas, mais sur le fond c'est ce que je voulais.

Merci bien !

Ah si j'ai une question, j'utilise donc cette formule :

=INDIRECT("[fichierA.xlsx]"&A4&"!$B15")

Quand je la tire vers le bas, dans la formule la cellule A4 devient A5, mais la cellule B15 reste B15 et j'aimerais que ça passe à B16, comment faire ?

up ?

J'ai trouvé, merci.

=INDIRECT(ADRESSE(MOD(LIGNE(B15);30);2;;1;"[fichierA.xlsx]"&A1))

Rechercher des sujets similaires à "recuperer informations classeur"