Désactiver un bouton après avoir été actionné
#1
Débutant XLPages

Inscription: 24/06/2010

Messages: 8

Système d'exploitation:
PC
Version Excel utilisée:
2003 et 2007 (plusieur PC)
Posté le : 25-06-2010 10h40
Bonjour,

Suite à l'aide que vous m'avez apporté sur le timer (http://www.mdf-xlpages.com/modules/ne ... ?topic_id=600&forum=4 ), je recherche comment faire pour désactiver un bouton après l'éxecution de la macro auquel il est associé jusqu'à la réouverture du fichier Excel.

Par exemple, si j'ai un bouton "Pause de 10 secondes" (...et oui faut bien soufflé un peu de temps en temps ... ) sur ce bouton j'ai mis le code : (voir fichier joint)

Sub Pause10s_Clic()
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
End Sub


Que faut-il ajouter SVP pour m'empêcher de faire plus d'une pause de 10 secondes par ouverture de ce fichier?
Avec un message, qui par exemple dirait "Pause déjà éffectuée !!! " et le bouton qui changerai de couleur du bleu au gris.

Merci par avance.

Pièce jointe:
zip Pause 10s.zip   [ Taille: 10.30 Ko - Téléchargements: 430 ]
Hors Ligne
Rapport   Haut 

Re: Désactiver un bouton après avoir été actionné
#2
Débutant XLPages

Inscription: 24/06/2010

Messages: 8

Système d'exploitation:
PC
Version Excel utilisée:
2003 et 2007 (plusieur PC)
Posté le : 25-06-2010 11h54

... J'ai trouvé cela mais je ne sais pas si c'est la bonne solution ...

Met la valeur 0 à D110 à l'ouverture du classeur.

Private Sub Workbook_open()
'Remet la valeur 0 dans la cellule D110 pour permettre l'execution de la macro du bouton.
[D110].Value = 0

End Sub

Du coup, j'ajoute une variable x qui prend la valeur de D110 et qui ajoute 1 et qui ensuite donne cette nouvelle valeur à D110.
Je met une condition sur l'execution de la macro que si la valeur de D110 est = 1

Sub Pause10s_Clic()
'
' Macro pour un pause de 10 secondes
'
Dim x As Integer
x = [D110].Value + 1
[D110].Value = x

If x = 1 Then
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10

waitTime = TimeSerial(newHour, newMinute, newSecond)

Application.Wait waitTime
Else: MsgBox "Trop de pause !!!"
End If

End Sub


Du coup cela fonctionne mais ce n'est peut être pas le plus simple....
Je progresse .... :)



Pièce jointe:
zip Pause 10s.zip   [ Taille: 11.19 Ko - Téléchargements: 469 ]
Hors Ligne
Rapport   Haut 

Re: Désactiver un bouton après avoir été actionné
#3
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 25-06-2010 22h24
Bonsoir Alex62, le Forum,

A vrai dire, je n'ai pas trop compris le principe de ton bouton "Pause", mais sinon, pour reproduire l'effet que tu as réalisé, tu pouvais aussi faire simplement comme ça :
Sub Pause10()
Static DejaFait As Boolean
    If DejaFait Then
        MsgBox "Trop de pause !!!"
        Exit Sub
    End If
    Application.Wait (Now + TimeValue("0:00:10"))
    DejaFait = True
End Sub
C'est tout à fait dans ce genre de situation qu'on peut tirer partie d'une variable déclarée "Static".
A toutes fins utiles, j'en explique l'utilité et le fonctionnement dans le tutoriel VBA et les variables


En tout cas, merci à toi d'avoir tenu compte des règles de fonctionnement du forum et d'être en plus revenu par toi-même déposer ta propre réponse . Ce réflexe est grandement apprécié.


Juste un petite info supplémentaire (qui peut aussi te faire gagner un peu de temps et te simplifier grandement la mise en forme du code VBA dans tes posts) :



Oui je sais, le webmaster est un ch..., mais c'est aussi pour ça que ce forum reste de qualité

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Désactiver un bouton après avoir été actionné
#4
Débutant XLPages

Inscription: 24/06/2010

Messages: 8

Système d'exploitation:
PC
Version Excel utilisée:
2003 et 2007 (plusieur PC)
Posté le : 26-06-2010 09h27
Bonjour,

En effet, ta solution est nettement plus simple... encore un problème de logique !!!
Merci pour les conseils d'utilisation et les appréciations.
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes