Problème _Macro mise à jour automatique

Bonjour,

Je vous expose mon problème.

J'ai dans un classeur Excel des données enregistrée sur la Feuille 1 du classeur.

Je souhaite à l'aide d'une macro, retraiter les données enregistrées sur la Feuille 1 pour obtenir de nouvelles données qui seront enregistrées sur la feuille 2 du même classeur. A partir de des données de la feuille 2, je souhaite générer grâce à une autre macro, un TCD. Etant un utilisateur débutant des macros, je me suis servi de l'enregistreur de macro pour obtenir mes macros. Cependant lorsque j'ajoute des nouvelles données à celles qui existaient déjà dans la feuille 1, ma feuille 2 et le TCD ne sont pas mis à jour. En d'autres termes les données ajoutées ne sont pris en compte, même lorsque je fais "actualiser les données" dans excel. J'ai joint des fichiers en guise d'exemple.

Dans le fichier nommé "Reporting" il y a dans l'onglet (factures du mois) mon tableau. Le tableau sera retraité lorsqu'on clic sur le bouton "macro 1" qui se trouve dans l'onglet (macro) du même fichier. Ces données seront enregistrées dans l'onglet (factures du mois 2). Lorsqu'on appuie ensuite sur le bouton "macro 2" on obtient un TCD.

Mon objectif c'est de pouvoir sélectionner les données qui se trouvent dans le fichier nommé "classeur 2" et les copier dans à la suite des données qui se trouvent dans l'onglet (factures du mois) du fichier "reporting". Une fois que la copie est faite manuellement, les données qui se trouvent dans l'onglet (factures du mois 2) et le TCD se mettent à jour automatiquement.

Pouvez vous me dire comment faire?

Merci pour votre aide

9reporting.xlsm (79.11 Ko)
9classeur-2.xlsx (17.45 Ko)

Bonjour,

juste "vite fait", l'enregistreur de macro c'est bien, voir très bien, mais il ne prend pas en compte les "tailles" variables.

Je m'explique : si vous sélectionnez la zone A1:C7, alors l'enregistreur écrit en "dur" dans le code VBA la zone Range("A1:C7").

De ce fait si votre zone augmente, par exemple A1:C10, quand vous lancer la macro, seule la région écrite en dur est utilisée, soit A1:C7....

Il vous faut transformer ces valeur de début et de fin de zone par des variables, dans cet exemple, A1 est fixe donc on le garde, la colonne C est fixe, on peut la garder, il nous faut une variable pour le numéro de ligne de fin de zone. A la fin on a : Range("A1:C" & variable_ligne) où variable_ligne correspond à la valeur 7 (ou plus tard 10 etc...)

Il faut donc définir variable_ligne en la "calculant", plutôt en demandant à VBA de la calculer.

Si cette ligne correspond à la dernière ligne "pleine" de votre tableau alors vous pouvez la définir par :

variable_ligne = Range("A65536").End(xlUp).Row

Ce qui veut dire : en partant de la cellule A65536, et en remontant, donne mois le numéro de la première ligne "pleine" que tu trouves, donc si A10 est la dernière cellule pleine de la colonne, alors en partant du bas A65536 et en remontant, c'est bien A10 qui sera la première cellule pleine rencontrée. Le .Row renvoit le numéro de la ligne dont la cellule correspond à la demande donc on a :

variable_ligne = 10, votre zone dans la macro est dites "dynamique" !

si vous ajoutez des données en ligne 11 ou douze, alors la variable_ligne sera mise à jour et votre zone aussi, donc les calculs aussi etc....

Donc comme vous pouvez le voir, il faut peut-être revoir tous les codes de vos macros enregistrées....

@ bientôt

LouReeD

Bonjour LouReeD

Je vous remercie d'avoir pris le temps de répondre à ma demande. Je vais essayer d'inclure dans la macro enregistrée les variables que vous m'avez données. J'avoue que j'aurai du mal à réécrire toute la macro parce que sans l'enregistreur, je ne m'en sors pas.

Puis je vous contacter au cas où je n'y arriverais pas?

Cordialement

Bonsoir,

no problem (c'est de l'anglais je crois )

@ bientôt

LouReeD

Rechercher des sujets similaires à "probleme macro mise jour automatique"