CommandButton
Résolu/Fermé
Markos
-
16 juin 2013 à 15:36
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 23 juin 2013 à 20:33
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 23 juin 2013 à 20:33
Bonjour à toutes et à tous,
Je souhaite créer un bouton de commande ActiveX qui afficherait tour à tour des messages différents dans une cellule, toujours la même (le message serait remplacé à chaque clic sur le bouton), puis, après le dernier message, un dernier clic ferait disparaître le bouton.
Merci d'avance pour votre aide,
Cordialement,
Je souhaite créer un bouton de commande ActiveX qui afficherait tour à tour des messages différents dans une cellule, toujours la même (le message serait remplacé à chaque clic sur le bouton), puis, après le dernier message, un dernier clic ferait disparaître le bouton.
Merci d'avance pour votre aide,
Cordialement,
3 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
16 juin 2013 à 18:47
16 juin 2013 à 18:47
Bonjour,
Par exemple :
Par exemple :
Option Explicit Private Sub Worksheet_Activate() Me.CommandButton1.Visible = Visible End Sub Private Sub CommandButton1_Click() Const m1 As String = "Message 1" Const m2 As String = "Message 2" Const m3 As String = "Message 3" Const m4 As String = "Message 4" Const m5 As String = "Message 5" Const m6 As String = "Message 6" Dim cel As Range Set cel = Range("B2") If cel.Value = m1 Then cel.Value = m2 ElseIf cel.Value = m2 Then cel.Value = m3 ElseIf cel.Value = m3 Then cel.Value = m4 ElseIf cel.Value = m4 Then cel.Value = m5 ElseIf cel.Value = m5 Then cel.Value = m6 ElseIf cel.Value = m6 Then cel.Value = "Terminé" Else cel.Value = m1 End If If cel.Value = "Terminé" Then Me.CommandButton1.Visible = False End Sub
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
23 juin 2013 à 11:49
23 juin 2013 à 11:49
Bonjour,
Je viens de vérifier, ce code fonctionne bien :
1 - Ouvres un nouveau classeur (vierge);
2 - Insère un bouton de commande sur la feuille1 : Developpeur / Inserer / Controle ActiveX / Bouton de commande
3 - Copies le code ci-dessus dans le module de la feuille1 : Copier / clic droit sur l'onglet de la feuille 1 / Visualiser le code / Coller
4 - Reviens sur la feuille 1 : Alt+F11
5 - Décoche le mode création, enregistres le fichier et essayes-le
Je viens de vérifier, ce code fonctionne bien :
1 - Ouvres un nouveau classeur (vierge);
2 - Insère un bouton de commande sur la feuille1 : Developpeur / Inserer / Controle ActiveX / Bouton de commande
3 - Copies le code ci-dessus dans le module de la feuille1 : Copier / clic droit sur l'onglet de la feuille 1 / Visualiser le code / Coller
4 - Reviens sur la feuille 1 : Alt+F11
5 - Décoche le mode création, enregistres le fichier et essayes-le
Merci, Patrice.
Cependant, il faudrait que, le processus terminé, rien n'apparaisse plus (ici, on affiche le message "Terminé") ; je rappelle mon idée de départ :
L'idée est la suivante : je suis intérimaire. Chaque fin de semaine, je dois remplir mon relevé d'heures hebdomadaire, le faire signer par mon responsable, puis faire une photocopie, et enfin le faxer à l'agence d'intérim. J'ai pensé d'abord à une fonction simple sous excel, dans n'importe quelle cellule d'un fichier que j'utilise tous les jours, me rappelant qu'on est vendredi, et que je dois penser à la feuille d'heures. Puis, j'ai voulu créer un contrôle, comme un bouton de commande, qui affiche un message qui me rappelle où j'en suis : 1) préparer la feuille 2) faire signer par la responsable 3) faxer....
Le bouton (ou tout autre contrôle), ou plutôt la cellule reliée au contrôle, ferait s'afficher le message complémentaire correspondant : par exemple, "faxer la feuille".
En m'inspirant de votre code, j'ai écrit le code suivant, qui comporte une erreur, puisqu'il ne fonctionne pas, mais je ne vois pas laquelle. Merci de m'aider à y voir plus clair :
Option Explicit
Private Sub Workbook_Open()
Feuil1.CommandButton1.Visible = False
If (Weekday(Date) = 1) Then
MsgBox "Aujourd'hui c'est vendredi, pense au relevé d'heures !", vbInformation
Feuil1.CommandButton1.Visible = True
End If
End Sub
Private Sub CommandButton1_Click()
Const m1 As String = "Préparer la feuille d'heures"
Const m2 As String = "Remettre la feuille d'heures au responsable"
Const m3 As String = "Récupérer la feuille d'heures"
Const m4 As String = "Faire 2 photocopies"
Const m5 As String = "Faxer la feuille d'heures"
Const m6 As String = "Récupérer l'accusé de réception du fax"
Dim cel As Range
Set cel = Range("G2")
If cel.Value = m1 Then
cel.Value = m2
ElseIf cel.Value = m2 Then
cel.Value = m3
ElseIf cel.Value = m3 Then
cel.Value = m4
ElseIf cel.Value = m4 Then
cel.Value = m5
ElseIf cel.Value = m5 Then
cel.Value = m6
ElseIf cel.Value = m6 Then
cel.Value = "Terminé"
Else
cel.Value = m1
End If
If cel.Value = "Terminé" Then
Feuil1.CommandButton1.Visible = False
End Sub
Qu'est-ce qui cloche, là-dedans ? En outre, il faudrait que, le processus terminé, rien n'apparaisse plus (ici, on affiche le message "Terminé")...
Merci encore d'avance pour votre précieuse collaboration.
Cependant, il faudrait que, le processus terminé, rien n'apparaisse plus (ici, on affiche le message "Terminé") ; je rappelle mon idée de départ :
L'idée est la suivante : je suis intérimaire. Chaque fin de semaine, je dois remplir mon relevé d'heures hebdomadaire, le faire signer par mon responsable, puis faire une photocopie, et enfin le faxer à l'agence d'intérim. J'ai pensé d'abord à une fonction simple sous excel, dans n'importe quelle cellule d'un fichier que j'utilise tous les jours, me rappelant qu'on est vendredi, et que je dois penser à la feuille d'heures. Puis, j'ai voulu créer un contrôle, comme un bouton de commande, qui affiche un message qui me rappelle où j'en suis : 1) préparer la feuille 2) faire signer par la responsable 3) faxer....
Le bouton (ou tout autre contrôle), ou plutôt la cellule reliée au contrôle, ferait s'afficher le message complémentaire correspondant : par exemple, "faxer la feuille".
En m'inspirant de votre code, j'ai écrit le code suivant, qui comporte une erreur, puisqu'il ne fonctionne pas, mais je ne vois pas laquelle. Merci de m'aider à y voir plus clair :
Option Explicit
Private Sub Workbook_Open()
Feuil1.CommandButton1.Visible = False
If (Weekday(Date) = 1) Then
MsgBox "Aujourd'hui c'est vendredi, pense au relevé d'heures !", vbInformation
Feuil1.CommandButton1.Visible = True
End If
End Sub
Private Sub CommandButton1_Click()
Const m1 As String = "Préparer la feuille d'heures"
Const m2 As String = "Remettre la feuille d'heures au responsable"
Const m3 As String = "Récupérer la feuille d'heures"
Const m4 As String = "Faire 2 photocopies"
Const m5 As String = "Faxer la feuille d'heures"
Const m6 As String = "Récupérer l'accusé de réception du fax"
Dim cel As Range
Set cel = Range("G2")
If cel.Value = m1 Then
cel.Value = m2
ElseIf cel.Value = m2 Then
cel.Value = m3
ElseIf cel.Value = m3 Then
cel.Value = m4
ElseIf cel.Value = m4 Then
cel.Value = m5
ElseIf cel.Value = m5 Then
cel.Value = m6
ElseIf cel.Value = m6 Then
cel.Value = "Terminé"
Else
cel.Value = m1
End If
If cel.Value = "Terminé" Then
Feuil1.CommandButton1.Visible = False
End Sub
Qu'est-ce qui cloche, là-dedans ? En outre, il faudrait que, le processus terminé, rien n'apparaisse plus (ici, on affiche le message "Terminé")...
Merci encore d'avance pour votre précieuse collaboration.
Pardon : dans ma précipitation, j'ai recopié une erreur supplémentaire. Ce n'est pas ça qui bloque, naturellement : il faut lire "If (Weekday(Date) = 6" (qui correspond bien à Vendredi) et non "If (Weekday(Date) = 1". J'ai fait cette modification pour pouvoir tester ce code aujourd'hui dimanche, bien sûr.
Merci encore de votre aide.
Merci encore de votre aide.
(re-)Bonjour, Patrice, et bonjour à tous !
J'ai trouvé ! Eurêka !
Il faut une Sub rattachée à ThisWorkbook :
...Et puis une autre rattachée à Feuil1 :
CQFD ! Merci encore pour votre collaboration !
A bientôt !
J'ai trouvé ! Eurêka !
Il faut une Sub rattachée à ThisWorkbook :
Option Explicit Private Sub Workbook_Open() Feuil1.CommandButton1.Visible = False If Weekday(Date) = 6 Then MsgBox "Aujourd'hui c'est vendredi, pense au relevé d'heures !", vbInformation Feuil1.CommandButton1.Visible = True Range("B2").Value = "Préparer le relevé d'heures" End If End Sub
...Et puis une autre rattachée à Feuil1 :
Private Sub CommandButton1_Click() Const m1 As String = "Préparer le relevé d'heures" Const m2 As String = "Remettre le relevé au responsable" Const m3 As String = "Faire 2 photocopies, et en remettre une au responsable" Const m4 As String = "Faxer le relevé d'heures" Const m5 As String = "Récupérer l'accusé de réception du fax" Dim cel As Range Set cel = Range("B2") Select Case cel.Value Case m1 cel.Value = m2 Case m2 cel.Value = m3 Case m3 cel.Value = m4 Case m4 cel.Value = m5 Case m5 cel.Clear Case Else cel.Value = m1 End Select If cel.Value = "" Then Feuil1.CommandButton1.Visible = False End Sub
CQFD ! Merci encore pour votre collaboration !
A bientôt !
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 23/06/2013 à 20:47
Modifié par Patrice33740 le 23/06/2013 à 20:47
Bonjour,
Cependant, il faudrait que, le processus terminé, rien n'apparaisse plus (ici, on affiche le message "Terminé")
Il suffit de remplacer "Terminé" par "" c'est-à-dire :
Cordialement
Patrice
Cependant, il faudrait que, le processus terminé, rien n'apparaisse plus (ici, on affiche le message "Terminé")
Il suffit de remplacer "Terminé" par "" c'est-à-dire :
... ElseIf cel.Value = m6 Then cel.Value = "" Else cel.Value = m1 End If If cel.Value = "" Then Feuil1.CommandButton1.Visible = False End If End Subet d'ajouter le End If manquant !
Cordialement
Patrice
22 juin 2013 à 10:07
Merci encore pour le temps et la patience que vous consacrez à mes questions.
A bientôt !