Microsoft 365 VBA - Importer les données de différents fichiers fermés sur un même tableau

annieginette

XLDnaute Nouveau
Bonjour à vous chers champions(nes) d'Excel VBA

Je vous expose ma problématique :

Mes employés nourrissent un fichier qui est déposé sur notre réseau d'entreprise, où nous avons tous accès. Je voudrais, lorsque je clic sur un bouton dans mon fichier global, importer les données de tous les employés, un à la suite des autres. (Surement XLdown)
*** à noter que tous les fichiers des employés sont sous le même format, même colonne etc

Je vous joins des fichiers fictifs, c'est pour comprendre le principe, ensuite je l'adapterai à mon fichier réel.

Merci encore de votre aide.

AnnieGinette
 

Pièces jointes

  • Employé Caroline.xlsx
    10.2 KB · Affichages: 4
  • Employé Lucie.xlsx
    10.2 KB · Affichages: 4
  • Employé Marie-Claude.xlsx
    10.2 KB · Affichages: 4
  • Fichier global tous les employés.xlsx
    13.6 KB · Affichages: 4

Jacky67

XLDnaute Barbatruc
Bonjour à vous chers champions(nes) d'Excel VBA

Je vous expose ma problématique :

Mes employés nourrissent un fichier qui est déposé sur notre réseau d'entreprise, où nous avons tous accès. Je voudrais, lorsque je clic sur un bouton dans mon fichier global, importer les données de tous les employés, un à la suite des autres. (Surement XLdown)
*** à noter que tous les fichiers des employés sont sous le même format, même colonne etc

Je vous joins des fichiers fictifs, c'est pour comprendre le principe, ensuite je l'adapterai à mon fichier réel.

Merci encore de votre aide.

AnnieGinette
Bonjour,
Un exemple avec une plage nommée dynamiquement contenant les noms des employés dans une autre feuille
Dans l'exemple tous les classeurs sont dans le même répertoire
 

Pièces jointes

  • Fichier global tous les employés.xlsm
    24.4 KB · Affichages: 7

annieginette

XLDnaute Nouveau
@Jacky67 Merci beaucoup, effectivement ça fonctionne. J'ai cependant une question pour toi, je vais l'adapté à mon fichier au bureau, Je comprends que les noms des employés sont listés dans un onglet distinct, ça me va mais je me demandais comment on nomme une plage dynamiquement, est-ce que la formule que tu as insérée dans le tableau je dois la mettre à quelque part précisément dans mon vrai fichier?

Merci encore

plage nommée
Employés=DECALER(Employé!$A$1;1;;NBVAL(Employé!$A:$A)-1)
 

Jacky67

XLDnaute Barbatruc
@Jacky67 Merci beaucoup, effectivement ça fonctionne. J'ai cependant une question pour toi, je vais l'adapté à mon fichier au bureau, Je comprends que les noms des employés sont listés dans un onglet distinct, ça me va mais je me demandais comment on nomme une plage dynamiquement, est-ce que la formule que tu as insérée dans le tableau je dois la mettre à quelque part précisément dans mon vrai fichier?

Merci encore

plage nommée
Employés=DECALER(Employé!$A$1;1;;NBVAL(Employé!$A:$A)-1)
RE...
Oui
Dans le menu formule==>gestionnaire de noms
Comme ci-dessous (pour le nouveau classeur (V2))
Ainsi les changements ou l'ajout de noms dans la feuille "Employé" sera pris en compte automatiquement sans avoir à modifier les codes.
Prends le fichier en pièce jointe qui est un peu plus complet et qui prévient si un fichier n'est pas présent
1668709901765.png
 

Pièces jointes

  • Fichier global tous les employés v2.xlsm
    26.8 KB · Affichages: 5
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir;

Avec 365 vous pouvez utiliser Power Query qui fait ça comme un grand :)
Mettez le fichier ci-dessous et tous les fichiers dans le même répertoire
La requête traitera tous les fichiers du répertoire dont le nom commence par "Employé"
Avant d'actualiser la requête (données/actualiser tout), vérifiez que C2 contient le bon chemin vers le répertoire des fichiers.

Cordialement
 

Pièces jointes

  • Fichier global tous les employés.xlsx
    32.7 KB · Affichages: 14

annieginette

XLDnaute Nouveau
RE...
Oui
Dans le menu formule==>gestionnaire de noms
Comme ci-dessous (pour le nouveau classeur (V2))
Ainsi les changements ou l'ajout de noms dans la feuille "Employé" sera pris en compte automatiquement sans avoir à modifier les codes.
Prends le fichier en pièce jointe qui est un peu plus complet et qui prévient si un fichier n'est pas présent
Regarde la pièce jointe 1155675
Wow c'est super merci beaucoup ! Hâte de tester au bureau... mais ici c'est génial
 

annieginette

XLDnaute Nouveau
Bonsoir;

Avec 365 vous pouvez utiliser Power Query qui fait ça comme un grand :)
Mettez le fichier ci-dessous et tous les fichiers dans le même répertoire
La requête traitera tous les fichiers du répertoire dont le nom commence par "Employé"
Avant d'actualiser la requête (données/actualiser tout), vérifiez que C2 contient le bon chemin vers le répertoire des fichiers.

Cordialement
Wow Hasco c'est génial, ça fonctionne aussi, très contente, je vais tester avec l'environnement du bureau et je vous donne des nouvelles demain. Merci !!!!

Je me demande comment vous faite pour afficher dans C2 mon emplacement directement, quand je clic dessus je vois tout autre chose :
=GAUCHE(CELLULE("nomfichier");TROUVE("[";CELLULE("nomfichier");1)-1)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

=GAUCHE(CELLULE("nomfichier");TROUVE("[";CELLULE("nomfichier");1)-1)
C'est une formule.
La fonction CELLULE("nomfichier") renvoie ici le chemin complet vers le fichier excel qui la contient avec des [] qui entourent le nom de fichier
Le couple GAUCHE,TROUVE Renvoie la partie du chemin avant le premier [
 

annieginette

XLDnaute Nouveau
Wow c'est super merci beaucoup ! Hâte de tester au bureau... mais ici c'est génial

RE...
Oui
Dans le menu formule==>gestionnaire de noms
Comme ci-dessous (pour le nouveau classeur (V2))
Ainsi les changements ou l'ajout de noms dans la feuille "Employé" sera pris en compte automatiquement sans avoir à modifier les codes.
Prends le fichier en pièce jointe qui est un peu plus complet et qui prévient si un fichier n'est pas présent
Regarde la pièce jointe 1155675
Bonjour Jacky67, je suis tellement triste car au bureau ça ne fonctionne pas, je dois dire que les données sont sur un serveur externe (un genre de dropbox privé) et au final, il dit qu'il ne trouve pas les fichiers, et ils sont bien là... Aurais-tu une autre idée???
 

Jacky67

XLDnaute Barbatruc
Bonjour Jacky67, je suis tellement triste car au bureau ça ne fonctionne pas, je dois dire que les données sont sur un serveur externe (un genre de dropbox privé) et au final, il dit qu'il ne trouve pas les fichiers, et ils sont bien là... Aurais-tu une autre idée???
Re..
Tous les classeurs sont dans le même répertoire, y compris celui qui lance la macro ?
Les fichiers sont bien sous le format "Employé "+le nom+.xlsx
La proposition de Hasco fonctionne ?
 

annieginette

XLDnaute Nouveau
Re..
Tous les classeurs sont dans le même répertoire, y compris celui qui lance la macro ?
Les fichiers sont bien sous le format "Employé "+le nom+.xlsx
La proposition de Hasco fonctionne ?
Bonjour, j'ai aussi des fichiers .xlsm mais j'ai modifié la macro pour .xls*

Pour la proposition de Hasco, je constate une erreur dans la référence de l'adresse, j'ai essayé et réussi de la charger mais j'avoue que je suis moins à l'aise avec Power Query. Je manque de pratique.
 

annieginette

XLDnaute Nouveau
Une version qui prend en compte tous les fichiers commençant par "Employé"
Donc, plus de feuille avec les noms et plus de message si fichier non présent.
Merci beaucoup, j'ai testé et j'ai un message d'erreur comme de quoi il ne trouve pas mon fichier employé annie, il est bien dans le même répertoire pourtant, j'ai vu que c'était le premier de la liste, je l'ai alors renommé Xannie pour voir. J'ai relancé la macro et là il me dit qu'il ne trouve pas Caroline, c'est vraiment ce nom qui est le premier de mon répertoire, alors il les voit bien.

Aussi, je me demandais, au lieu de donner un répertoire, pourrait-on donner une adresse internet? car mon stockage externe du bureau c'est en fait une adresse internet qui commence par https...

Merci encore Jacky67 ton aide est très appréciée

1669201400414.png

1669201432419.png
 

Jacky67

XLDnaute Barbatruc
Merci beaucoup, j'ai testé et j'ai un message d'erreur comme de quoi il ne trouve pas mon fichier employé annie, il est bien dans le même répertoire pourtant, j'ai vu que c'était le premier de la liste, je l'ai alors renommé Xannie pour voir. J'ai relancé la macro et là il me dit qu'il ne trouve pas Caroline, c'est vraiment ce nom qui est le premier de mon répertoire, alors il les voit bien.

Aussi, je me demandais, au lieu de donner un répertoire, pourrait-on donner une adresse internet? car mon stockage externe du bureau c'est en fait une adresse internet qui commence par https...

Merci encore Jacky67 ton aide est très appréciée

Regarde la pièce jointe 1156169
Regarde la pièce jointe 1156170
Re..
Là, je ne serais plus d'aucune aide. Ce n'était pas précisé que c'était sur le web.
Je ne peux que suggérer de faire un lien hypertexte qui pointe sur l'emplacement du classeur de lancement.
Si cela ne fonctionne pas, ouvrir un nouveau post en précisant cette option web.
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Oui vous auriez du nous le dire plus tôt :)
Essayez 'Données/A partir du web' et voyez ce que vous proposera power query.
Si ça fonctionne pour un fichier power query pourra pour plusieurs si vos fichiers sont listés sur une page web.
Et prenez conscience que nous ne pourrons jamais tout résoudre à votre place.
Aussi vous devrez fouiller, farfouiller et apprendre à vous servir des ces outils.
Même dans une macro on pourra pas toujours êtres là pour deviner que le répertoire machin est devenu le répertoire truc. A vous de mettre les mains dans le cambouis.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 202
Membres
102 817
dernier inscrit
Nini668