Bouton d'éxécution MACRO

Bonjour à tous,

Je souhaite créer un bouton sur une feuille excel qui effectue les opérations suivantes :

  • ouverture d'un autre fichier excel
  • application d'une macro sur cet autre fichier excel

Mon problème :

- Le fichier excel à ouvrir change tous les mois "2009 06.xls" ==> "2009 07.xls" ==> "2009 08.xls" ............

Mon but est d'automatiser un maximum le processus; c'est pourquoi je me demandais si ce problème en est vraiment un.

Merci à ceux qui se pencheront sur le sujet.

Cordialement,

Etienne

[EDIT : J'aurai également souhaité (toujours grâce à un bouton) actualiser les différents tableaux croisés dynamiques qui s'y trouvent ( 1 seul click )]

Bonjour,

application d'une macro sur cet autre fichier excel

Sans savoir de quelle macro il s'agit ou de voir ton fichier, egarde ce lien qui fait un peu ce que tu demandes et dis si cela te conviendrai.

https://www.excel-pratique.com/forum/viewtopic.php?t=12547

Pour actualiser les TCD, mets l'instruction suivante à la fin de la macro :

THISWORKBOOK.REFRESHALL

Attention que ce code réactualisera tous les TCD même si tu ne le souhaites pas.

Amicalement

Dan

RE Nad-Dan,

Merci pour l'actualisation des TCD, on arrête pas d'apprendre.

Sinon la macro concernée est une macro de mise à jour; elle me permet de transférer des données (sorte de copier-coller automatique), comme elle est un peu longue je te la met dans un fichier word joint. ===> https://www.excel-pratique.com/~files/doc2/Macro.doc

Or, le fichier source change tous les mois (le but est d'avoir un bouton qui va effectuer la macro de mise à jour sur le fichier source le plus récent)

[Ca me semble impossible mais je voudrais essayer]

Si je ne suis toujours pas assez clair, n'hésite pas à me le dire, j'essaierai de me faire mieux comprendre

[NB : je peux prévoir le nom du prochain fichier source, peut-être que ça peut aider]

re,

Pas facile sans voir le fichier car tu fais pleins de couper - coller au début de ta macro.

Essaie de modifier le début de ta macro comme suit :

Sub MACROMaJ()
    'Columns("B:B").ClearContents
    Columns("D:D").Cut Destination:=Columns("B:B")
    Columns("E:H").Delete Shift:=xlToLeft
    Columns("I:I").Cut Destination:=Columns("D:D")
    'Columns("G:G").ClearContents
    Columns("F:F").Cut Destination:=Columns("G:G")
    Columns("E:E").Cut Destination:=Columns("I:I")
    Columns("J:T").Delete Shift:=xlToLeft
    Selection.Cut Destination:=Columns("F:F")
    Columns("K:K").Cut Destination:=Columns("E:E")
    Columns("L:L").Delete Shift:=xlToLeft
    Selection.Cut Destination:=Columns("J:J")
    Columns("M:M").Delete Shift:=xlToLeft
'Macro de filtration'
    Range("A1:AD20000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    Workbooks("Fichier Gestion Grands comptes.xls").Sheets("Critères").Range( _
    "A1:A14"), Unique:=False
....

Ce qu"il faut savoir :

  • Le nom du fichier source
  • ce que tu cherches à copier (c'est après un filtrage)
  • le nom du fichier, le nom de la feuille de destination
  • la cellule de destination (toujours la même cellule ou pas ?)

A te relire

Dan

Bonjour Dan,

En rajoutant 2 lignes à ta modification, la macro est allégée et fonctionne parfaitement, je t'en remercie.

Ce qu'il faut savoir :

  • Nom du fichier source (qui change tous les mois) : "2009 07.xls" puis "2009 08.xls" puis "2009 09.xls"..... [onglet "MASTER"]
  • Je cherche à copier des données particulières (aussi bien numériques que textuelles)
  • Nom du fichier de destination : "Fichier Gestion Grands comptes.xls" ; onglet "Base de données Grd cptes 2009"
  • La cellule de destination est toujours la même, en A2

Merci pour ton aide,

Cordialement,

Etienne

[EDIT : Voila la version allégée de la macro : https://www.excel-pratique.com/~files/doc2/4QGjGMacro.doc ]

re,

Merci des précisions.

Je suppose que ta macro est placée dans le fichier de destination.

En gros, depuis de le fichier "Fichier Gestion Grands comptes.xls" on ouvre le fichier "2009 07.xls" puis on exécute la macro qui supprime les colonnes, copie des données vers le fichier "Fichier Gestion Grands comptes.xls".

Est-ce bien cela ?

A noter que je pense au vu de ton code, que la suppression des colonnes n'est pas nécessaire, de même que les couper-coller que tu fais. Mais bon sans le fichier ce n'est pas possible de te faire un code sans ces instructions.

A te relire

Dan

Re Dan,

Oui, c'est bien cela;

Voila un fichier excel qui reprend les infos nécessaires :

https://www.excel-pratique.com/~files/doc2/Exemple_fichiers.xls

Merci pour ton temps et ton aide,

A bientôt,

Etienne

re,

merci de tes explications.

Pourrais-tu m'envoyer le fichier "Format fichier source" complet avec toutes les colonnes (pas besoin de toutes les données 2 ou 3 lignes suffisent).

Il n'y a en effet pas besoin de supprimer tes colonnes ou de faire des copier coller.

Le tout est de savoir où l'information se trouve et où elle doit aller dans le fichier "destination".

A te relire

Dan

Bonjour Dan,

Dans le fichier excel que j'ai joint dans mon dernier post, il devrait y avoir un onglet "source" et un onglet "destination".

(je finis à 17h, c'est difficile de se croiser)

Merci :O

A bientôt,

Etienne

Ok,

Tu peux essayer cette macro pour ouvrir le fichier en question puis appliquer la macroMaj

Sub ouvrir()
Dim mavariable As Stringk
mavariable = Application.GetOpenFilename()
On Error GoTo fin
Workbooks.Open mavariable
Call MACROMaJ
Exit Sub
fin:
MsgBox "vous avez effectué une mauvaise opération"
End Sub

Pour modifier le code MacroMaj, il faut que je saches si la colonne A ne comporte que des années 2009 par exemple. Dans ton exemple on ne voit que des années 2007, 2006, etc.. alors que le fichier destination comporte des années 2009.

en grso, doit-on recopier toutes les données du fichier source vers le fichier destination ?

A te relire

Dan

Re Dan,

Non, il ne faut pas recopier toutes les données uniquement certaines colonnes, c'est la raison pour laquelle mon code d'origine comporte une partie de "mise en forme" du fichier source (je garde uniquement ce qui m'intéresse, puis je copie, puis je colle).

Les données qui m'intéressent sont les colonnes : [Année ; Groupe ; Mois ; RA ; CA réalisé ; NBjT ; Type ; Country ; Produit ; Prix moyen] ==> dans cet ordre précis.

Une fois que les données sont filtrées selon ces critères, je prends tout et je colle en A2 dans le fichier de destination.

Cordialement,

Etienne

re,

Les données qui m'intéressent sont les colonnes : [Année ; Groupe ; Mois ; RA ; CA réalisé ; NBjT ; Type ; Country ; Produit ; Prix moyen] ==> dans cet ordre précis.

Une fois que les données sont filtrées selon ces critères

J'avais bien compris cela par contre c'est plutôt ce que tu mets dans ton critère que j'essaie de comprendre. Là je vois que (dans macro de filtration) tu utilises le Range(A1:A14).

En fait le but final est d'éviter tous ces couper-coller dans ton fichier, c'est cela que je voulais changer éventuellement dans ta macro Maj.

Si dans ta colonne A, le critère choisit est l'année, on peut très bien dire au code qu'il ne prenne que les données pour lesquelles l'année est celle choisie par le critère ou par exemple faire un filtre automatique dans la colonne A pour choisir l'année puis copier les données en question.

Sinon as-tu essayé le code que je te propose ? macro Ouvrir avec ta macro Maj.

A te relire

Dan

Re Dan,

Au temps pour moi, j'avais omis les critères

Je t'ai rajouté ça dans un nouvel onglet

[https://www.excel-pratique.com/~files/doc2/Dq1o5Exemple_fichiers.xls]

Merci à toi,

Etienne

[EDIT : Je n'arrive pas à faire marcher ton code, dois-je le placer à l'intérieur de ma macro, ou juste avant? ; j'ai le message d'erreur suivant : "Erreur de compilation : Type défini par l'utilisateur non défini]

Je reste un débutant excel et vba, j'ai tenté de comprendre mon erreur, en vain.

re,

tu dois le placer en dessous de ton code, juste après le END SUB de la macroMaj et ce dans le fichier de destination.

ensuite tu démarres avec la macro SUB OUVRIR.

A te relire

Dan

Re Dan,

Toujours le même message d'erreur .

J'ai une question simple : Comment peut-on ouvrir un fichier excel grâce à un code où le nom du fichier n'est pas mentionné? :/

Dois-je "adapter" le code que tu m'as fourni? Ca me paraîtrait logique.

Cordialement,

Etienne

re,

désolé mais il y a une erreur dans cette ligne :

Dim mavariable As Stringk

Enlève le K (erreur de frappe)

Dan

Re,

Bien vu! Le code semble marcher mais il ne fait que m'ouvrir une boite de dialogue du style "parcourir" pour aller chercher le fichier.

Il n'ouvre pas encore le fichier.

A voir,

Etienne

re,

Normal qu'il ne t'ouvre pas le fichier. L'avantage est que tu décides où aller le chercher et surtout lequel ouvrir. (2009 07, 2009 08 ...)

Amicalement

Dan

Re,

Excuse-moi mais j'ai du mal à saisir l'utilité d'une telle manip.

Le but n'est-il pas d'effectuer la mise à jour uniquement en lançant une macro?

Cordialement,

Etienne

re,

Le but n'est-il pas d'effectuer la mise à jour uniquement en lançant une macro?

C'est ce que fais le code :

  • Tu ouvres ton fichier Grand comptes dans lequel se trouve les deux macros
  • Tu choisis tes critères (entre A1 et A14)
  • Tu exécutes la macro "ouvrir" qui va te demander d'ouvrir le fichier 2009 XX de ton choix (Regarde ta première demande sur ce fil)
  • Une fois fait, la mise à jour s'effectue automatiquement

L'utilité est que tu ne sais pas quel fichier tu vas ouvrir (2009 07, 2009 08 ??). Là il faut faire un choix.

Amicalement

Dan

Rechercher des sujets similaires à "bouton execution macro"