Crééer une macro mensuelle

Bonjour à tou(te)s

J’ai du mal à peaufiner ma macro, un pro pourrait-il m’aider ?

Tous les mois nous procédons aux mêmes manipulations :

  • copier les données du mois d’un fichier source (même plage de données) - ce fichier comporte 24 feuilles (1 par mois de préparation et 1 par mois pour la copie)
  • coller ces données sur d’autres fichiers de destinations - ces fichiers comportent 12 feuilles (1 par mois prête à recevoir la copie) - tous les fichiers de destinations ont la même configuration et les mêmes noms de feulles (Janvier 2023, Février 2023…)

Nous filtrons uniquement sur une colonne du fichier source pour copier et coller les bonnes données dans les bons fichiers - la plage de copie reste identique à tous les fichiers. Il peut arriver qu’un fichier de destination ne soit plus concerné le mois suivant par cette manipulation.

Voici ce que j’aimerai écrire dans mon code :

Créer un fichier dédié à la macro pour ne l’utiliser que mensuellement sans alourdir les fichiers concernés

Copier dans la plage A2:A4 de ma macro le premier élément et ouvrir dans le dossier des fichiers de destination le fichier excel dont le nom comporte l’élément copié mais si cet élément contient « (plus) » alors passer à l’élément suivant de la plage A2:A4

Si une boite de dialogue s’affiche à l’ouverture du fichier alors cliquer sur « Mettre à jour » sinon continuer

Ouvrir le fichier source dans le dossier du fichier source

Copier dans la plage B2:B4 de la macro le premier élément mais si cet élément contient « (plus) » passer à l’élément suivant de la plage B2:B4

Filtrer dans la cellule H2 de la feuille du mois concerné du fichier source par l’élément copié dans la plage B2:B4 puis OK

Si le filtre est vide, fermer le fichier de l’élément copié dans la plage A2:A4 et recommencer
Sinon copier toutes les lignes non vides de la plage A:V à partir de la ligne 2

Coller ces lignes dans la cellule A5 de la feuille du mois concerné du fichier excel ouvert de l’élément copié dans la liste A2:A4

Se positionner sur O6, écrire « = » en début de formule puis Entrer
Faire glisser la formule de la cellule O6 jusqu’à la dernière ligne non vide

Enregistrer et fermer ce fichier

Recommencer ainsi jusqu’au dernier élément de la liste A2:A4 et à la fin afficher dans une boite de dialogue « Les tableaux fournisseurs ont été complétés »

J’espère avoir été claire dans mes propos, n’hésitez pas à m’indiquer si une zone de flou persiste.
Merci pour votre temps ! :slight_smile:

Bonjour et bienvenue sur le Forum :slight_smile:
C’est difficile de t’aider sans avoir le fichier sur lequel tu travailles…
Essaye de joindre une version sans données confidentielles pour qu’on puisse voir le code et te proposer une solution :wink:

1 « J'aime »

Bonjour,
Comme @patrick.p a mentionné, un fichier d’exemple nous aidera encore plus.
Cordialement
Will

Merci pour vos retours,

Alors voici l’exemple du fichier source :
exemple fichier source.xlsx (9,6 Ko)

Et l’exemple du fichier de destination :
Fichier destination Alouette.xlsx (10,2 Ko)

Chaque mois, sur l’onglet du mois en cours dans le fichier source :

  • je filtre par le premier élément de la liste (ici « Alouette »)
  • J’ouvre le fichier de destination nommé « Alouette » dans le dossier des fichiers de destinations
  • Je copie dans le fichier « Alouette » toutes les lignes non vides de la plage A:V
  • Je me positionne en début de formule de la cellule O6 du fichier « Alouette », j’ajoute un « = » en début de formule, et je fais glisser la formule pour toutes les lignes non vides
  • J’enregistre et je ferme
  • je répète la manipulation avec l’élément suivant du filtre de la colonne H du fichier source (ici « Barbe »)
  • j’ouvre le fichier « Barbe » et ainsi de suite jusqu’au dernier élément présent dans la liste de la colonne H (ici « Sortie »)

J’espère être claire dans mes explications et que ces fichiers peuvent vous aider ?

Merci à vous

Bonjour, c’est un peu plus clair déjà, si les fichiers sont dans le même répertoire, si leur dénomination est standard ("Fichier destination " + texte de la colonne H (Alouette, Barbe, etc.) il est possible de faire un script VBA qui va ouvrir le fichier et copier les lignes automatiquement. Par contre quelle règle pour choisir l’onglet de destination ? Enfin c’est quoi cette formule " = " en O6 ? = quoi ? sachant qu’on vient de copier les valeurs des colonnes A à V du fichier source, donc la colonne O est comprise, c’est pas clair…

Bonjour Patrick,

Merci pour ton retour !
La règle pour choisir l’onglet de destination est « nom de l’onglet source = nom de l’onglet de destination » => nous copions les informations du mois de mai sur mai, juin sur juin etc
La formule en O6 et un =Si pour calculer un montant automatiquement
Dans le fichier source cette formule est présente sur toutes les cellules de O6 sans le « = » pour ne pas fausser les calculs

Fichier destination Alouette.xlsx (11,4 Ko)
Fichier destination Barbe.xlsx (11,4 Ko)
Fichier source.xlsm (20,9 Ko)

Voici une première version, la macro lit le fichier source et copie les données dans le fichier de destination correspondant à la valeur de la colonne H, dans l’onglet portant le même nom que l’onglet source. Pour la formule en cellule O il faudra voir ce que ça donne avec les vrais données parce que c’est pas évident à valider avec mes données de test…

Bonjour,

Malheureusement votre macro n’a pas fonctionné mais j’ai réussi à modifier mon code pour qu’elle fonctionne.
En vous remerciant

Cordialement

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.