Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Consolidation de plusiers fichiers grâce à VBA

Chrystel01

XLDnaute Occasionnel
Bonjour,

J'ai réalisé une macro en m'appuyant sur des codes que j'ai pu voir mais la macro bugge et je n'arrive pas à solutionner le pb.

J'ai de multiples fichiers à consolider qui ont toujours le même nombre de colonnes mais des lignes variables.
Je vous joints un exemple avec 2 fichiers : base 1 et 2.
La macro est dans le fichier de consolidation.

Elle repère dans un 1er temps la liste des dossiers du répertoire
Puis elle les ouvre, copie le pavé de 25 colonnes et x lignes.
Elle les colle dans le fichier de consolidation en ajoutant sur la colonne 26 la source = le nom du fichier ouvert (base 1, base 2...)

Malheureusement, je n'arrive pas à faire la copie des données et du nom de fichier source.

Je ne suis pas experte VBA et j'apprends sur le tas....
Pourriez-vous m'aider SVP ?

Je vous remercie par avance

Chrystel
 

Pièces jointes

  • CONSO.zip
    79 KB · Affichages: 19
Solution
Bonjour Chrystel01,Rachid, le forum

Un essai pour modification de macro.
J'utilise toujours range("A:") plutôt que range(cells(,..)) car c'est le bazar pour les copies entre fichiers (pour faire simple).
Mais sinon, c'est à peu près pareil avec un choix de méthode (M1 ou M2) pour utiliser le fichier que vous ouvrez. Le fichier est traité avec la méthode M2 ici.

Bonne journée
zebanx

Chrystel01

XLDnaute Occasionnel
Bonjour,
on peut le faire avec Power Query et sans VBA.
Voir PJ


Cordialement
Bonjour,

Je vous remercie malheureusement je n'ai pas cette fonctionnalité et elle ne sera pas installée sur mon poste.
Je ne peux pas non plus le faire moi même car je n'ai pas les droits admin...
Sauriez-vous m'aider sur mon code VBA ? il me manque 1 ou 2 lignes pour gérer la copie mais je sèche???

Merci par avance

Bon week-end

Chrystel
 

zebanx

XLDnaute Accro
Bonjour Chrystel01,Rachid, le forum

Un essai pour modification de macro.
J'utilise toujours range("A:") plutôt que range(cells(,..)) car c'est le bazar pour les copies entre fichiers (pour faire simple).
Mais sinon, c'est à peu près pareil avec un choix de méthode (M1 ou M2) pour utiliser le fichier que vous ouvrez. Le fichier est traité avec la méthode M2 ici.

Bonne journée
zebanx
 

Pièces jointes

  • consotest.xlsm
    59.7 KB · Affichages: 15
Dernière édition:

Chrystel01

XLDnaute Occasionnel
Bonjour Zebanx,

Merci beaucoup ppur votre aide !
Cela répond parfaitement à ce que je souhaitais faire

Juste une petite question car j'apprends en même temps et cela me sera utile sur d'autres programmes sans doute...

Sur la fin du code, je ne comprends pas l'expression "Cells(Rows.Count, 1).End(3).Row" issue de cette ligne /
"ligne_coller = aw.Sheets("Consolider").Cells(Rows.Count, 1).End(3).Row + 1 'ligne_coller + 1 + (DerLig_fichier_ouvert - 1)"

Pourriez-vous m'expliquer SVP ?
Encore merci pour tout et bon week-end

Chrystel
 

zebanx

XLDnaute Accro
Re-

De rien. Vous aviez déjà bien préparé le terrain mais copier entre fichiers, il faut être attentif car on a souvent des erreurs et il faut comprendre d'où elles viennent, ça m'arrive encore du reste.

L'utilisation de la variable "ligne-coller" original dans votre code ajoutait un interligne entre chaque feuille.
J'ai donc modifié le code pour aller chercher la dernière ligne en partant du bas et en rajoutant 1 (première ligne après cette dernière ligne à utiliser comme référence.

En résumé :
aw = votre classeur de consolidation (activeworkbook)
cells(rows.count,1).end(3).row = numéro de dernière ligne. Le end(3) pourrait être end(xlup). C'est une autre manière de l'écrire. A savoir : 1 pour XlLeft, 2 pour XlRight, 3 pour XlUp, 4 pour XlDown

Bonne intégration de vos données.
Xl-ment
zebanx
 

zebanx

XLDnaute Accro
Merci.
Et bravo pour votre petit fichier de consolidation des noms de fichiers du répertoire actif.
J'avais l'habitude d'en utiliser un en getopenfile() mais le votre peut servir, je l'enregistre car il est court / pratique.

Très bon we -)
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

[Pour infos]
le demandeur à dit:
Je vous remercie malheureusement je n'ai pas cette fonctionnalité et elle ne sera pas installée sur mon poste.
Je ne peux pas non plus le faire moi même car je n'ai pas les droits admin...
J'étais dans ce cas.
J'ai juste eu à contacter ma DSN.
Qui a ensuite pris la main sur mon PC (à distance) et à procéder à l'installation.
NB: Comme c'est un addon en provenance de Microsoft, normalement les DSN l'installent sans problème.

DSN= Direction des Services Numériques

*: j'ai écrit le demandeur ...
(car plus simple lors de la rédaction des messages sur XLD, et facilite mes CTRL/C/V)
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…