Consolidation de données via macro

Bonjour à tous,

Alors voilà je suis novice dans tout ce qui est macro VBA, je sais faire quelques petits truc mais sans plus .

Je souhaite consolider les données d'un fichier que l'on va nommé "A" (fichier qui peut changer de nom et de contenue) vers un fichier "B" (fichier contenant donc plusieurs données de fichier A différents de part leur contenue), j'espère ne pas être trop brouillon sur cette explication

Ce que j'aimerai obtenir, c'est que dans le fichier B il y ai un bouton avec une macro affectée permettant d'aller chercher le fichier A souhaité, et donc de lancer la consolidation par la même occasion en selectionnant les cases du fichier A qui m'interessent, chaque ligne du fichier B représentant un fichier A différents (voir fichier B avec l'explication).

Et c'est là ou je suis perdue je trouve ça hyper compliqué, y'a pas mal de solutions envisageable, mais si on affecte une macro à un bouton, la macro effectuera toujours la même action non ?, donc en gros une seule une ligne du fichier "B" sera toujours rempli (voir remplacé par les données d'un autre fichier A), en l'occurence ce que je veux c'est consolider plusieur fichier "A"(différents de par leur contenue) donc en gros sauter une ligne à chaque nouveau fichier "A" intégré dans le fichier "B"

Donc si je peux avoir les bases c'est à dire une macro me permettant d'aller chercher un fichier "A" (peu importe son nom) ça serait cool , pour ce qui est des cases à sélectionner pour mettre dans le fichier "B" je me débrouillerai (c'est un banal copié/collé, mais si vous avez un exemple à me soumettre pour que ça soit plus fluide que l'enregistrement de macro je suis preneuse).

Sachant que ce type de consolidation étant du cas par cas, je me tourne vers ce forum dans lequel bien souvent sans avoir posté de sujet j'ai réussi par le biais d'autre post à trouver solutions à mon problème.

Voici les fichiers en questions :

Dans le fichier "A" seul l'onglet général (Colonne B ,C ,E) contiendra les données que je souhaite mettre dans le fichier "B"

Ne faite pas attention j'ai supprimé le contenue des fichiers pour raison de confidentialité

15fichier-a.xlsm (43.12 Ko)
15fichier-b.xlsx (20.59 Ko)

En vous remerciant par avance, je vous souhaite une bonne journée

Bonsoir,

Pour pouvoir commencer à étudier ta question, il faut des classeurs modèles dont les intitulés de colonnes ne soient pas absent (de façon qu'on voie les correspondances), avec des données (qui doivent être du même type que les données réelles : texte, nombres dates...), et il faut savoir où la macro trouvera les chemins et les noms de fichiers à ouvrir, de même que les modalités d'utilisation (au cas par cas, en bloc pour tous les classeurs concernés...).

Cordialement

Ferrand

Bonjour MFerrand,

Merci pour ta réponse,

De mon côté j'ai reussi à obtenir ce que je voulais ou presque (disons les bases)

J'ai trouvé ce bout de code qui conviens parfaitement mais j'y ai ajouté des annotations :

Sub consolidation()

Dim Nom_Fichier As Variant

Set Wb = ActiveWorkbook

MsgBox ("Selectionnez le fichier A")
Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
'j'aimerai pouvoir rajouter l'extension xlsm mais commment faire ?

Set TechWb = Workbooks.Open(Nom_Fichier)
Wb.Activate

'Etape suivante : Mettre les chemins du fichier A vers fichier B (en gros copier coller, que je peux réaliser)
'Instaurer une condition , exemple si ligne B9 est rempli alors passer à la ligne suivante B10 et ainsi de suite ( mettre une boucle may be ?)

' Message de fin
MsgBox ("La consolidation est terminée, Veuillez vérifier les données et pensez à enregistrer votre travail")
End Sub

Bonjour,

Tu devrais pouvoir faire avec : ...GetOpenFilename("Fichiers Excel (*.xls*), *.xls*")

Mais là tu n'en est qu'à tu qu'à fournir manuellement les fichiers à traiter à la macro (un par un dans l'état du code).

Cela peut être une méthode si ce traitement est ponctuel. Si le traitement est groupé, cela n'est plus intéressant. Mieux vaut alors fournir une liste à la macro pour qu'elle se débrouille avec...

Dispositif intermédiaire : ouvrir la possibilité de sélectionner plusieurs fichiers avec GetOpenFilename (il faut alors ajouter l'argument MultiSelect:=True). La variable récupèrera alors un tableau de noms de fichiers (donc test à prévoir pour détecter le cas dans la macro).

Le chargement des fichiers peut d'ailleurs être isolé dans une procédure Function appelée par la macro principale. Cela permet d'autonomiser les diverses fonctionnalités à mettre en oeuvre dans une opération. Avantages : un dysfonctionnement sera plus rapidement localisé, et en supplément cette fonctionnalité peut être utilisée dans d'autres opérations nécessitant de charger des classeurs...

Il me semble que pour la suite tu ne sais pas encore trop où tu vas... La question est de délimiter exactement ce qui doit être prélevé sur A et où, puis de définir où chaque élément prélevé doit aller sur B. C'est à partir de là que le comment peut être défini (choix de méthode la plus pratique et efficace selon les mouvements à opérer...)

Je n'ai d'autre part pas bien compris ta remarque sur les chemins à fournir : pour le fichier A, tu l'as fourni en le sélectionnant, et le fichier B lance la macro. Il n'y a plus de chemin à donner !

De toutes façons cela n'aurait rien eu à voir avec du copier-coller.

Une dernière remarque : le copier-coller sous ses différentes formes est souvent la méthode la plus pratique à mettre en oeuvre dans Excel manuellement ; quand on travaille avec VBA, ce n'est plus du tout le cas, il faut laisser le copier-coller de côté et n'y revenir qu'en dernier recours si les méthodes propres à VBA se révèlent trop difficiles à mettre en oeuvre par rapport à un copier-coller, ce qui est très excessivement rare !

Bon courage

Ferrand

Rechercher des sujets similaires à "consolidation donnees via macro"