Bouton de commande et Macro

pingouinal

XLDnaute Occasionnel
Bonjour le forum,

Voilà, j'ai un petit problème sur un bouton de commande.
J'ai créé une macro pour effectuer moult tâches répétitives et elle fonctionne très bien. Je voudrais donc pouvoir la lancer en cliquant sur un bouton. Je créé alors le bouton et dans le code du bouton, je copie-colle ma macro. Mais lorsque je clique sur le bouton, la macro plante, alors que toute seule elle marche sans problème.
Y aurait-il une astuce que j'ai oublié?

De plus dans ma macro, je supprime certaines feuilles et excel me demande à ce moment là de confirmer (je doit cliquer sur "OK"), y a-t-il une manière d'intégrer ce clic sur "OK" dans la macro? Car pour le moment, quand la macro arrive à ce passage, je doit cliquer sur "OK" manuellement.

Edit : cette macro travaille à partir de 5 documents excel différents que j'ouvre avant de la lancer. Est-il possible de demander à cette macro de tous les ouvrir elle-même?

Merci d'avance pour votre aide et désolé si ce sont des questions de débutant. ^_^'.
J'ai utilisé la fonction recherche, mais n'ai pas trouvé la solution à mon problème.
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Bouton de commande et Macro

Bonjour Pingouinal, bonjour le forum,

Difficile de te répondre sans avoir la macro sous les yeux. Pourrais-tu envoyer ton fichier ou seulement la macro si celui-ci est trop lourd. Pour ce qui est du message de confirmation tu peux l'éviter avec cette ligne, placée avant, qui supprime les messages Excel :
Code:
Application.DisplayAlerts = False

Mais n'oublie surtout pas de rétablir la situation en remettant en fin de code :
Code:
Application.DisplayAlerts = true

Édition :

Salut Romain, Luki... Hé non, je suis pas parti mangé parce que à la maison (congés) et je me lève à peine...
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : Bouton de commande et Macro

Salut Pingouinal,

Pour ce qui est du message que tu ne veux plus voir apparaitre, il te suffit de mettre Application.DisplayAlerts = False en début de macro et surtout de penser a le remettre a True en fin de macro.

Je ne voudrais pas te prendre pour un Ane puisque c'est moi qui en suis un, mais question toute con, as-tu pensé a enlever le Sub nom_de_ta_macro() quand tu as copié le code dans le code du bouton. Tu evrais avoir un truc du genre :
Private Sub CommandButton1_Click()
'ton code
End Sub

et non :
Private Sub CommandButton1_Click()
Sub macro()
'ton code
End Sub
End Sub

@+

Edition : Arf Salut Robert, t'es pas encore partis mangé, moi qui pensais etre tranquil a cette heure là...
 

Luki

XLDnaute Accro
Re : Bouton de commande et Macro

bonjour pingouinal,

pour ce qui est du plantage, il faudrait voir ton code.

Pour ce qui est de la suppression de feuille sans message, ceci:
Code:
Application.DisplayAlerts = False ' desactiver les messages d'alerte
Worksheets(1).Delete
Application.DisplayAlerts = True  ' les réactiver
A+


Et Bing! robert et Rebing! Romain
 

pingouinal

XLDnaute Occasionnel
Re : Bouton de commande et Macro

Bonjour tout le monde,

Merci beaucoup pour la réponse sur les messages, je vais tester ça juste après manger.

Pour l'extrait du code du bouton, le voici (l'erreur se situe à la ligne Range("A1:K1").Select) :

Code:
Private Sub CommandButton1_Click()

    Windows("Book1.xls").Activate
    Range("A1:K1").Select
    Selection.AutoFilter
    Range("D:D,H:H,I:I,J:J").Select
    Range("J1").Activate
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("E:E,F:F").Select
    Range("F1").Activate
    Selection.Style = "Comma"
    Selection.AutoFilter Field:=8, Criteria1:="RU"
    Selection.AutoFilter Field:=1, Criteria1:="00001"
    Range("B2:K2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("Unapplied Cash Template.xls").Activate
    Sheets("Austria").Select
    Range("A5").Select
    ActiveSheet.Paste
    Sheets("Denmark").Select
    Sheets.Add
    Windows("Unapplied Cash last.xls").Activate
    Range("F2:M2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Unapplied Cash Template.xls").Activate
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Names.Add Name:="last01", RefersToR1C1:="=Sheet1!R1C1:R36C8"
    Sheets("Austria").Select
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=COUNT(Sheet1!C[-1])"
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A3").Select
    Sheets("Sheet1").Select
    Range("B44").Select
    Windows("Book1.xls").Activate
    Selection.End(xlUp).Select

Après il se répète pour d'autres pays.

Encore merci. :eek:)
 

porcinet82

XLDnaute Barbatruc
Re : Bouton de commande et Macro

re, Salut Luki,

Pingouinal, je viens de tester ton code chez moi et il fonctionne parfaitement (en tout cas, pas d'erreur sur la ligne que tu indiques). Une erreur survient seulement si il n'y a aucune données sur la feuille. Peut etre d'ailleurs que quand tu selectionnes ton classeur, tu ne te trouves pas sur la bonne feuille ?
Je ne sais pas ce qu'en pense Robert et Luki, mais peut etre qu'un exemple de ton fichier pourrait nous eclairer...

@+

PS : Luki, ca fais plaisir de te revoir parmis nous ;)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Bouton de commande et Macro

Bonjour le fil, bonjour le forum,

Je pense que si tu spécifies un autre classeur que celui où se trouve le bouton tu dois spécifier chaque fois l'onglet par son nom Sheets("lenon").Range("A1:K1") ou bien par Activesheet.Range("A1:K1"). Mais ce n'est qu'une hypotèse...

Édition :

Damned ce Romain a même eu le courage de créer des fichiers avec les noms et tout et tout... Je suis vert.
 
Dernière édition:

Dan

XLDnaute Barbatruc
Re : Bouton de commande et Macro

Bonjour,

1. Ta macro se trouve dans le classeur Book1 ou non ?
2. De même pour ton bouton ?

Sinon essaie en modifiant la première instruction et remplace :
Code:
Windows(book1.xls).activate
par
Code:
Workbooks("Book1.xls").Sheets("feuil1").Activate
avec feuil1 le nom de ta feuille

A te lire

Edition : oups Robert, je t'avais pas vu. Cela faisait longtemps que l'on s'était croisé sur un fil si je me souviens. Bonjour à toi !
 

pingouinal

XLDnaute Occasionnel
Re : Bouton de commande et Macro

Tout d'abord merci pour vos réponses.
Ensuite, j'ai essayé de remplacé le code, comme proposé par Dan, mais j'ai la même erreur. Ce qui m'étonne c'est que si je fais tourner la macro, je n'ai aucune erreur, c'est juste quand je rentre ce code dans le bouton et que je le lance en cliquant sur le bouton que ça ne fonctionne plus.
 

porcinet82

XLDnaute Barbatruc
Re : Bouton de commande et Macro

re, Salut Dan,

Je suppose que le code de ton bouton se trouve dans un module de feuille et non un module standard, le problème vient donc peut etre de là.

Au lieu de mettre directement le code de ta macro dans ton bouton, fais appel à la macro dans le code de ton bouton, un truc du genre :
Private Sub CommandButton1_Click()
Call Ta_macro

End Sub

Et tu places le code de ta macro dans un module standard.

A suivre...

@+
 

pingouinal

XLDnaute Occasionnel
Re : Bouton de commande et Macro

Re porcinet82 (ou Romain, je ne sais pas lequel tu préfères ^_^' ),

ça marche avec ton code, merci beaucoup.:D

J'ai également testé le "Application.DisplayAlerts = False" qui marche parfaitement aussi. Merci à tous ceux qui me l'ont donné.

Maintenant il ne me reste plus qu'à trouver les lignes de commande pour que la macro ouvre elle-même les 5 fichiers excel dont elle a besoin, car pour le moment je doit les ouvrir moi-même à l'avance. Si certains ont une suggestion, je suis preneur. :)

Ensuite je pourrais venir vous ennuyer avec des questions sur d'autres rapports et macros.:D

Merci encore à tous.
 

porcinet82

XLDnaute Barbatruc
Re : Bouton de commande et Macro

re,

Pour ouvrir un fichier si il ne change pas de place, tu peux utiliser le code suivant (a toi d'adapter le chemin du fichier) :
Workbooks.Open Filename:="C:\Documents and Settings\Moi\Bureau\Ton_fichier.xls"

@+
 

pingouinal

XLDnaute Occasionnel
Re : Bouton de commande et Macro

Bonjour le forum,

Concernant la ligne de commande pour ouvrir un fichier depuis une macro (Workbooks.Open Filename:="C:\Documents and Settings\Moi\Bureau\Ton_fichier.xls"), je voudrais savoir si il est possible de la modifier pour que la macro ouvre toujours ce fichier, même si il change de place sur le disque mais en restant toujours dans le même dossier que le fichier contenant la macro.

Par exemple le fichier contenant la macro et la fichier à ouvrir sont tous les deux ici : "C:\Janvier" et si je les déplace tous les deux dans "C:\Février", la macro ne trouve plus le fichier à ouvrir. Est-il possible de dire que le chemin d'accès au fichier à ouvrir soit toujours dans le même dossier que la macro?

Je ne sais pas si je suis très clair, mais merci d'avance à tous ceux qui pourront m'aider. :)
 

porcinet82

XLDnaute Barbatruc
Re : Bouton de commande et Macro

Salut pingouinal,

Si j'ai bien comprs, tu peux faire ce que tu souhaites avec la ligne de code suivante qui te donne le chemin dans lequel se trouve le fichier en cours d'utilisation (c'est à dire celui qui execute la macro).
Dim Chemin As String
Chemin = ThisWorkbook.Path & "\"

Donc le code suivant devrait fonctionner :
Chemin = ThisWorkbook.Path & "\" & "Ton_fichier.xls"

@+
 

Discussions similaires

Réponses
4
Affichages
189

Statistiques des forums

Discussions
312 215
Messages
2 086 325
Membres
103 179
dernier inscrit
BERSEB50