Automatisation d'une MACRO

Bonjour,

j'ai une macro que j'ai développé (dans le cadre de mon stage), le problème c'est que tous les matins je modifie 5 lettres et chiffres (voir ci-dessous les lettres et chiffres en gras) et par la suite je lance ma macro.

J'ai besoin de votre aide pour automatiser ma macro à savoir:

'modules à copier coller en remplacant le NUMERO FICHIER SOURCE et COLONNE DE COLLAGE

Set classeurSource = Application.Workbooks.Open("Z:\TableauExportIndexJournalier_113.xls", , True)

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J2:J157").Copy classeurDestination.Sheets("BDD").Range("BX2")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J159:J215").Copy classeurDestination.Sheets("BDD").Range("BX158")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J216:J278").Copy classeurDestination.Sheets("BDD").Range("BX216")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J158").Copy classeurDestination.Sheets("BDD").Range("BX279")

classeurSource.Close False

'modules à copier coller en remplacant le NUMERO FICHIER SOURCE et COLONNE DE COLLAGE

Set classeurSource = Application.Workbooks.Open("Z:\TableauExportIndexJournalier_114.xls", , True)

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J2:J157").Copy classeurDestination.Sheets("BDD").Range("BY2")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J159:J215").Copy classeurDestination.Sheets("BDD").Range("BY158")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J216:J278").Copy classeurDestination.Sheets("BDD").Range("BY216")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J158").Copy classeurDestination.Sheets("BDD").Range("BY279")

classeurSource.Close False

'modules à copier coller en remplacant le NUMERO FICHIER SOURCE et COLONNE DE COLLAGE

Set classeurSource = Application.Workbooks.Open("Z:\TableauExportIndexJournalier_115.xls", , True)

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J2:J157").Copy classeurDestination.Sheets("BDD").Range("BZ2")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J159:J215").Copy classeurDestination.Sheets("BDD").Range("BZ158")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J216:J278").Copy classeurDestination.Sheets("BDD").Range("BZ216")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J158").Copy classeurDestination.Sheets("BDD").Range("BZ279")

classeurSource.Close False

merci infiniment de l'aide que vous pouvez m'apportez pour terminer cette tâche.

Salut,

Ta colonne BX est la 76ème colonne de ta feuille. Donc tu peux également faire référence à la cellule BX158 par l’instruction Cells(158, 76). La cellule BY158 est donc tout logiquement la Cells(158, 77).

Si tu places des ‘compteurs’ dans une feuille (masquée ?) nommée par exemple ‘Compteurs’, tu peux incrémenter ces compteurs à chaque lancement de ta macro.

Admettons que sur ta feuille ‘Compteurs’ tu inscrives 113 en A1 et 76 en A2 et que tu modifies ta macro de la manière ci-dessous, tes références devraient être à chaque fois correctement incrémentées :

'modules à copier coller en remplacant le NUMERO FICHIER SOURCE et COLONNE DE COLLAGE

Compteur_1 = Sheets("Compteurs").Range("A1")
Compteur_2 = Sheets("Compteurs").Range("A2")

Set classeurSource = Application.Workbooks.Open("Z:\TableauExportIndexJournalier_" & Compteur_1 & ".xls", , True)
classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J2:J157").Copy classeurDestination.Sheets("BDD").Cells(2, Compteur_2) 'Range("BX2")
classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J159:J215").Copy classeurDestination.Sheets("BDD").Cells(158, Compteur_2) 'Range("BX158")
classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J216:J278").Copy classeurDestination.Sheets("BDD").Cells(216, Compteur_2) ' Range("BX216")
classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J158").Copy classeurDestination.Sheets("BDD").Cells(279, Compteur_2) 'Range("BX279")
classeurSource.Close False
Sheets("Compteurs").Range("A1") = Compteur_1 + 1
Sheets("Compteurs").Range("A2") = Compteur_2 + 1

Si la modification de cette macro ‘sans filet’ ne fonctionne pas, merci de joindre ton ‘filet’, enfin je veux dire ton ‘fichier’.

A te relire.

Bonjour Yvouille,

merci beaucoup pour ta réponse.

pour info: je ne suis pas expert dans les macros, je cherche dans le net pour trouver mon bonheur....

Voici le lien de mon fichier Excel: http://xls.lu/58vu

le nom du fichier source ainsi que les valeurs changent tous les jours à 1h40 mais pas la forme de la feuille de ce fichier.

le lien de fichier source: http://xls.lu/hrPB

voila je reste a ta dispo

En fait, le fichier tableauExportIndexJournalier_xxx est généré pâr un serveur que je ne peut pas le modifié, je le droit de copier les données pas plus.

Re,

J’avais compris que tu n'avais dans ton fichier qu’un seul bloc d’instructions semblable à celui-ci-dessous :

  'modules à copier coller en remplacant le NUMERO FICHIER SOURCE et COLONNE DE COLLAGE
  Set classeurSource = Application.Workbooks.Open("Z:\TableauExportIndexJournalier_109.xls", , True)
  classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J2:J157").Copy classeurDestination.Sheets("BDD").Range("BT2")
 classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J159:J215").Copy classeurDestination.Sheets("BDD").Range("BT158")
 classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J216:J278").Copy classeurDestination.Sheets("BDD").Range("BT216")
 classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J158").Copy classeurDestination.Sheets("BDD").Range("BT279")
  classeurSource.Close False

Et j’ai encore compris que tu m’en montrais 3 exemples différents pour 3 jours et 3 traitements successifs (dans ton premier message j’ai compris que la première fois tu ouvrais le fichier TableauExportIndexJournalier_113, le lendemain le 114 et le surlendemain le 115).

Mon explication concernait donc la modification d’un bloc seul.

Dans le fichier ‘bdd-suivi-journalier’ que tu me fournis maintenant, tu n’as pas 1 bloc d’instructions mais 8 par lesquels tu ouvres l’un après l’autres les fichiers TableauExportIndexJournalier_109 à TableauExportIndexJournalier_116.

Je ne comprends donc plus rien puisque dans ton premier message tu dis que tu fais ça tous les matins, mais à chaque fois pour 8 fichiers vraiment ? Si oui, quelle est l’évolution de la numérotation journalière de ces 8 fichiers ?

Et comme j’avais compris que chaque jour tu voulais faire évoluer l’incrémentation des lignes à copier-coller mais qu’il semble maintenant que cette incrémentation se passe à l’intérieur de la même macro, il faudra voir si je comprends ce que tu désires à ce niveau-là en fonction de ta réponse à ma première demande ci-dessus.

A te relire.

Merci Yvouille,

en ai presque sur la même longueur d'onde.

Concernant les autres 8 fichiers, il restes sur le serveurs mais je n'ai plus l’utilité de ces fichiers car j'ai déjà les valeurs dans mon fichier "BDD Suivi Journalier CPE". Au lieu que je modifié la fameuse paragraphe:

"

'modules à copier coller en remplacant le NUMERO FICHIER SOURCE et COLONNE DE COLLAGE

Set classeurSource = Application.Workbooks.Open("Z:\TableauExportIndexJournalier_114.xls", , True)

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J2:J157").Copy classeurDestination.Sheets("BDD").Range("BY2")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J159:J215").Copy classeurDestination.Sheets("BDD").Range("BY158")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J216:J278").Copy classeurDestination.Sheets("BDD").Range("BY216")

classeurSource.Sheets("TableauExportIndexJournalier").Cells.Range("J158").Copy classeurDestination.Sheets("BDD").Range("BY279")

classeurSource.Close False

"

je fais copier/ coller et ensuite je modifie la deuxième paragraphe sans toucher à la précédente c'est par crainte que mes données soient supprimées (je sais que c'est nulle...). mais a toi (l'expert VBA) de ma rassurer pour alléger cette macro.

voila voila. est ce que ma réponse est clair? si non, je peux me répliquer autrement et en mieux.

Salut,

Comme tu demandais de l’aide par rapport à ta macro, j’ai tenté de te répondre dans ce sens là. Mais finalement j’aurais peut-être mieux fait de te demander tout de suite ce que tu voulais réaliser.

Voici donc ce que j’ai compris maintenant : A une certaine périodicité, tu veux aller chercher un fichier sur Internet, l’enregistrer dans ton arborescence, ouvrir ton fichier BDD et qu’une macro te transfert les données de la colonne J (dans un certain ordre) du fichier téléchargé dans ton fichier BDD à la suite – sur la droite - des données déjà en place.

Si je t’ai bien compris, j’aurais alors quelques questions.

1) Réalises-tu cela tous les matins ou seulement les jours où tu travailles ? Apparemment tous les jours, puisqu’il n’y a pas de vides dans tes colonnes C à CA de ton fichier BDD.

2) Si tu réalises cela tous les jours, rattrapes-tu certains jours où tu étais absent les jours suivants ou est-ce qu’il y a toujours quelqu’un qui réalise se travail quotidiennement ?

3) Comment est établie la numérotation des fichiers ‘tableauexportindexjournalier’ ? Est-elle fixée d’avance ou est-ce que c’est toi qui as décidé d’attribuer le numéro X au fichier de la date Y ?

4) Est-ce que l’on peut établir une relation entre le numéro du fichier ‘tableauexportindexjournalier’ et la date du jour qu’il concerne (A chaque incrémentation du numéro du fichier correspond l’incrémentation d’un jour de l’année ?)

Peut-être qu’à la lumière de tes réponses je vais pouvoir t’aider un peu mieux. Inutile de reprendre l’entièreté de mes questions dans tes réponses. Réponds uniquement quelque chose du genre : ‘1) Non, c’est plutôt le contraire. 2) Oui, c’est bien cela, etc.

A te relire.

Rechercher des sujets similaires à "automatisation macro"