Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro qui se lance pas

  • Initiateur de la discussion Initiateur de la discussion Sophie
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sophie

Guest
Bonjour tout le monde,


J ai un classeur excel avec quelques macros et bouton liés aux macros. Un bouton par jour, si on est lundi on clic sur lundi, si on est mardi on clci sur mardi....mais si jamais on se trompe de jour ou de bouton ca ma plante tout mon travail. Est ce possible de lier une cellule qui afficherai le jour de la semaine avec mes macros qui afficherai un message d erreur du style 'On est MERCREDI' par exmple pour empecher toute erreur?
 
Bonjour Sophie,

Ci-joint en exemple, une solution possible.

On ajoute au début de chaque macro associée à un bouton journalier la ligne suivante :
If Not VerifJour(CommandButton1.Caption) Then Exit Sub
et on ajoute ensuite cette fonction pour la gestion de l'ensemble :
Il convient de veiller toutefois que chacun des boutons comporte bien une Caption comme suit :'LUNDI', 'MARDI', 'MERCREDI', etc...en MAJUSCULE.

Une autre solution consisterait à jouer sur la propriété Enabled des boutons journaliers en fonction de la date du jour et à l'ouverture du classeur (Workbook_Open).

Cordialement.
[file name=PourSophie.zip size=17240]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourSophie.zip[/file]
 

Pièces jointes

Avec le meme bouton (un seul bouton), tu pourrais exécuter ta macro en récupérent le numero du jour actuel (au moment de l'exécution).

Dim intJour As Integer
intJour = Application.WorksheetFunction.Weekday(Date)

La valeur de intJour comprend le dimanche.

Je dirais meme, a la limite, que si a chaque fois que le fichier s'ouvre, le but est d'exécuter ta macro, alors tu pourrais faire exécuter ta macro sans avoir besoin de l'intervention de qui que se soit. Il s'agirait de mettre ta macro dans ThisWorkbook et d'utiliser la procédure suivante:

Private Sub Workbook_Open()
Dim intJour As Integer
intJour = Application.WorksheetFunction.Weekday(Date)
'pointe vers ta_macro' avec (intJour) entre parenthese
Ou la mettre ici
end sub

Private Sub 'ta_macro' (recupere_intJour As Integer)
ton code...
end sub


Voila

Phil
 
Bonjour le forum, myDearFriend!, Hellboy, merci pour votre aide et vos reponses.


@ myDearFriend! :

Ton exemple me semble etre ce que je recherche mais le probleme c est que je n ai pas utilisé les meme boutons que toi, je te met un lien ou tu pourras choper mon classeur avec mes boutons, les boutons en question sont sur la feuille 'saisie journee'.

@ Hellboy :


Ton exemple me semble tres bien aussi mais je n ai aucune idee de la facon a le traiter, je te met un lien pour mon fichier si tu as un peu de temps ca serai sympa de me developper ton idee dans mon classeur.

Voici le lien pour mon fichier, je l ai pas mis en piece jointes car il est trop volumineux meme zippé!

Ce lien n'existe plus

Merci beaucoup pour votre c est- vraiment tres gentil de m accorder un peu de votre temps.


Je vous met mon adresse email au cas ou si vous avez le temps de me le renvoyer avec vos reponses car les deux solutions m interresent et m aprennent a mieux me servir d 'Excel.
 
Bonsoir Sophie, Hellboy, le Forum.

Sophie, effectivement tu as utilisé des Shapes (issus de la 'barre d'outils Formulaire') et non des contrôles ActiveX (issus de la 'barre boîte à outils contrôles') comme je les présentais dans mon exemple précédent.

Aussi, pour simplifier la mise en oeuvre, je te propose d'appliquer la solution ci-dessous en exemple et correspondant à ton code lié au bouton 'LUNDI'. Il conviendra évidemment de faire de même pour les autres jours et de ne pas oublier de recopier la Function VerifJour() dans ce même Module1 :


Par ailleurs, t'envoyer le classeur ainsi rectifié directement par mail ne me paraît pas une bonne idée pour 3 raisons :
[ol][li]Tu n'as pas laisser ton adresse mail... 😛 [/li]
[li]Le principe de ce Forum repose sur le partage et, l'envoi d'une solution par un chemin 'extérieur' priverait la communauté de cet échange.[/li]
[li]Par ailleurs, je pense que la mise en oeuvre de la solution par toi-même te permettrait d'apprendre d'autant plus vite...[/li][/ol]
Cordialement.
 
Bonsoir le forum,

@ myDearFriend! :

Merci pour ton aide comme d'hab lol 😉 , je ne sais par quel miracle j ai reussi a le faire en changeant mes boutons et tatonnant sans trop savoir ce que je faisais lol. J ai commence par ajouter un userform comme il y avait dans ton exemple, apres j ai mis des options explicit un peu partout mais ca ne marché pas et ensuite j ai finalement changé les noms des boutons et ca a marche sans trop savoir pourquoi!!!!

En fait j aimerai comprendre par exemple ce que ca a changer de mettre un userform et surtout c est quoi un userform??? Je n ai vraiment rien fait a part clilquer sur ajouter user form! Et quand on met option explicit ou dim rep as string, ou encore Dim RangePlage As Range ca veut dire quoi? Tu connaitrai pas un lien ou est explique tous ces codes?

Pour repondre a l histoire du mail:
1 lolllll tu as raison pour mon mail je ne l ai pas mis!
2 c est clair que je ressen une satisfaction quand j y arrive par moi meme mais en general c est grace en grande partie au forum
3 le partage est une tres bonne idee et je pense qu il y a une parade au mail c est un site que j utilise souvent c est yousendit.com on pourrait tous s en servir quand on a de gros fichiers a poster comme ca on partagerai tous les reponses et on n utilisera pas la place du forum, bien sur a moins qu il soit interdit d utiliser ce genre de site par les modos au quel cas je ne le ferai plus!


@ Hellboy : Merci pour ton aide egalement, c est gentil de ta part de vouloir consacrer du temps a mon probleme.


Et pour finir puis je mettre mon fichier final sur le forum via 'yousendit.com' pour corriger mes eventuels erreur ou meme me propser d autres solutions pour mes differentes macros?
 
Bon voici les modifs que je te propose:
voici une autre procédure que je t'ai rajouté avec commentraires
Private Sub Workbook_Open()
' Cette macro s'exécute automatiquement lors de l'ouverture du fichierDim strJour As String
With Worksheets('SAISIE JOURNEE')
.Select
Select Case Application.WorksheetFunction.Weekday(Date) 'Va detecter quel journée nous sommes à l'ouverture du fichier Case 2 ' Ensuite associe le numero de la journée a un nom de jounée
strJour = 'Lundi'
Case 3
strJour = 'Mardi'
Case 4
strJour = 'Mercredi'
Case 5
strJour = 'Jeudi'
Case 6
strJour = 'Vendredi'
End Select
.Shapes.Item(1).DrawingObject.Caption = strJour ' Pour ensuite changer l'étiquette du bouton avec le nom de la journée.
End With
' Donc un seul bouton a gérer, et ne peut pas se tromper de journée, a moins que la date du PC est fausse.
End Sub

Et pour ce qui est des boutons 'Lundi', 'Mardi' ... J'en ai conservé qu'un seul (et aussi enlever les autre procédures des boutons effacé)

Sub Bouton1_QuandClic()
rep = MsgBox('Etes vous sur de vouloir continuer pour' & _
Worksheets('SAISIE JOURNEE').Shapes.Item(1).DrawingObject.Caption & ' ?', 68, 'Appliquer le Copie Coller') ' applique ici le nom de la journée dans le message box

If rep = vbYes Then
Dim RangePlage As Range
Set RangePlage = Worksheets('SAISIE JOURNEE').Range('A1:h120')
RangePlage.Copy Destination:=Worksheets('SAUVEGARDE SEMAINE').Range('A1')
End If
End Sub
 
Salut 'Sophie
bonsoir le Fil
je vois que ça avance une question serait il possible de faire
Private Sub Workbook_Open()
' Cette macro s'exécute automatiquement lors de l'ouverture du fichier
With Worksheets ('SAISIE JOURNEE')
.Select
.Shapes.Item (1).DrawingObject.Caption =Format(Date, ' dddd ')
' Pour changer l'étiquette du bouton avec le nom de la journée.
End With
' Donc un seul bouton a gérer, et ne peut pas se tromper de journée, a moins que la date du PC est fausse.
End Sub
merci d'avance
Jean Marie
 
ChTi160 écrit:

Tu as tout a fait raison.
toute cette partie pourrait être éliminé:

Select Case Application.WorksheetFunction.Weekday(Date) 'Va detecter quel journée nous sommes à l'ouverture du fichier Case 2 ' Ensuite associe le numero de la journée a un nom de jounée
strJour = 'Lundi'
Case 3
strJour = 'Mardi'
Case 4
strJour = 'Mercredi'
Case 5
strJour = 'Jeudi'
Case 6
strJour = 'Vendredi'
End Select

et remplacer par le commentaire de Jean Marie

Message édité par: Hellboy, à: 25/04/2005 18:12

Message édité par: Hellboy, à: 25/04/2005 18:13
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
0
Affichages
427
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…