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

Un bouton pour plusieurs macros

  • Initiateur de la discussion Initiateur de la discussion dam31
  • 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 !

D

dam31

Guest
Bonsoir tout le monde,​

Je dois créer une macro qui fait fonctionner un feu tricolore dessiné sur excel.

Pour cela j'ai crée :

- la macro "vert" qui colore la case du bas en vert
- la macro "orange" qui éteint le vert et allume la case du milieu en orange
- la macro "rouge" qui éteint l'orange et allume le rouge (en haut)
- la macro 'éteint" qui éteint tout.

Je veux contrôler le feu par l'intermédiaire d'un seul bouton
=> 1er clic vert => 2 ème orange => 3 ème rouge => 4 ème éteint => 5 ème vert => etc

Mon idée est donc de créer une macro "contrôle" qui appelle les 4 autres en fonction de l'état du feu :
1er clic => la variable état=1 alors j'appelle la macro vert
2 ème clic => la variable état=2 alors j'appelle la macro orange
etc

A la fin après le 4 ème clic je vais faire une boucle qui repart au début
Le problème étant que je n'arrive pas à créer la macro "contrôle"
Donc j'espère que vous pourrez m'aider, en vous remerciant d'avance

Cordialement Damien​
 
Re : Un bouton pour plusieurs macros

Bonsoir dam31
Code:
[COLOR="DarkSlateGray"]Sub Zonedetexte1_QuandClic()
   Select Case (Range("A3").Interior.ColorIndex = 4) + _
      2 * (Range("A2").Interior.ColorIndex = 45) + _
      4 * (Range("A1").Interior.ColorIndex = 3)
   Case 0: Range("A1:A2").Interior.ColorIndex = xlNone
      Range("A3").Interior.ColorIndex = 4 '50
   Case -1: Range("A1,A3").Interior.ColorIndex = xlNone:
      Range("A2").Interior.ColorIndex = 45
   Case -2: Range("A2:A3").Interior.ColorIndex = xlNone:
      Range("A1").Interior.ColorIndex = 3
   Case Else: Range("A1:A3").Interior.ColorIndex = xlNone
   End Select
End Sub[/COLOR]
Voyez la mise en œuvre dans le classeur joint.
(A adapter pour Excel2007)​
ROGER2327
#1973
 

Pièces jointes

Dernière édition:
Re : Un bouton pour plusieurs macros

Bonsoir Damien

pourquoi créer 4 macros ? une seule devrait suffire.


Amicalement
Bonsoir Roger , je suis arrivé un peu tard.
 
Dernière édition:
Re : Un bouton pour plusieurs macros

Bonsoir,

Ci-joint une autre solution

Code:
Sub Test()
Range("B7").Value = Range("B7").Value + 1
If Range("B7").Value = 4 Then Range("B7").Value = 0
End Sub

Ce code utilise une MFC dans la feuille.
 

Pièces jointes

Dernière édition:
Re : Un bouton pour plusieurs macros

Bonsoir à tous

Pour se joindre à la fête


a partir du code de Papounet

En utilisant "mal" Switch
Code:
Private Sub CommandButton1_Click()
If Feu = 3 Then Feu = 0 Else Feu = Feu + 1
Label1.BackColor = Switch(Feu = 0, &HFFFFFF, Feu = 1, &HFFFFFF, Feu = 2, &HFFFFFF, Feu = 3, &HFF&)
Label2.BackColor = Switch(Feu = 0, &HFFFFFF, Feu = 1, &HFFFFFF, Feu = 2, &H80C0FF, Feu = 3, &HFFFFFF)
Label3.BackColor = Switch(Feu = 0, &HFFFFFF, Feu = 1, &HC000&, Feu = 2, &HFFFFFF, Feu = 3, &HFFFFFF)
End Sub
 
Re : Un bouton pour plusieurs macros

Bonjour,

Super élégante ta solution, JM (tu as la nuit productive)!
Je ne connaissais pas l'instruction"Switch", mais nul doute que je saurai l'utiliser à la première occasion.

Cordialement.
 
Re : Un bouton pour plusieurs macros

Bonjour à tous


Bonjour Papou-net


Je pense qu'en combinant Switch et la logique de ROGER2327 on peut réduire encore le code (mais je n'y suis pas parvenu)


C'est pourquoi j'ai appliqué Switch à ton code 😉 et que je disais "mal" utiliser Switch. car j'ai l'intuition (mais me trompe-je ?) qu'on peut réduire la chose à une seule ligne de code.
 
Re : Un bouton pour plusieurs macros

Bonjour,

avec un "SpinButton" (pour un retour éventuel) :
Code:
Private Sub SpinButton1_Change()
  [A1:A3].Interior.ColorIndex = xlNone
  If SpinButton1 = 4 Then SpinButton1 = 0
  Select Case SpinButton1
  Case 1: [A3].Interior.ColorIndex = 4
  Case 2: [A2].Interior.ColorIndex = 45
  Case 3: [A1].Interior.ColorIndex = 3
  End Select
End Sub
 

Pièces jointes

Re : Un bouton pour plusieurs macros

Bonjour Lii

EDITION: code adapté pour un ToggleButton, sur une feuille d'un classeur
Code:
Private Sub ToggleButton1_Click()
    With ToggleButton1
        If .Value Then
            ' rouge
            .BackColor = RGB(255, 0, 0)
            .Caption = Chr(160)
            Else
            ' vert
            .BackColor = RGB(0, 255, 0)
        End If
    End With
End Sub


Lii: Ton message me fait penser au ToggleButton et son TripleState

et la maison mère nous disait

http://support.microsoft.com/kb/829070

 
Dernière édition:
Re : Un bouton pour plusieurs macros

Re


Désolé j'oubliais d'honorer mon Switch 😀

Code:
Private Sub ToggleButton1_Click()
With ToggleButton1
.BackColor = Switch(.Value = True, RGB(255, 0, 0), .Value = False, RGB(0, 255, 0))
End With
End Sub
 
Re : Un bouton pour plusieurs macros

Re


Lii
: crois-tu comme moi que l'on peut réussir à faire "tenir" le code de ce feu tricolore sur une seule ligne

J'en ai rêve cette nuit, depuis je cherche mais je sèche.


PS; je sais c'est grave de rêver en VBA, mais c'est inoffensif pour ma santé et pour la société. 😛
 
Re : Un bouton pour plusieurs macros

Bonjour à tous
J'ai cherché des trucs avec Switch(), sans grand résultat :
Code:
[COLOR="DarkSlateGray"]Sub Zonedetexte1_QuandClic__()
Dim u
   u = Switch( _
      [A3].Interior.ColorIndex = 4, Array(xlNone, 45, xlNone), _
      [A2].Interior.ColorIndex = 45, Array(3, xlNone, xlNone), _
      [A1].Interior.ColorIndex = 3, Array(xlNone, xlNone, xlNone), _
      [A1:A3].Interior.ColorIndex = -4142, Array(xlNone, xlNone, 4))
   [A1].Interior.ColorIndex = u(0)
   [A2].Interior.ColorIndex = u(1)
   [A3].Interior.ColorIndex = u(2)
End Sub[/COLOR]
Dommage qu'on ne puisse pas écrire :
Code:
[COLOR="DarkSlateGray"]Sub Zonedetexte1_QuandClic__()
      [A1:A3].Interior.ColorIndex  = Switch( _
      [A3].Interior.ColorIndex = 4, Array(xlNone, 45, xlNone), _
      [A2].Interior.ColorIndex = 45, Array(3, xlNone, xlNone), _
      [A1].Interior.ColorIndex = 3, Array(xlNone, xlNone, xlNone), _
      [A1:A3].Interior.ColorIndex = -4142, Array(xlNone, xlNone, 4))
End Sub[/COLOR]
ROGER2327
#1976
 
Re : Un bouton pour plusieurs macros

bonjour a tous (encore que du tres beau monde !!)

Ma contribution

Code:
Public etat As Integer
Private Sub CommandButton1_Click()
coul = Array(3, 45, 4, -4142)
etat = etat + 1
If etat = 4 Then etat = 0
Range("A1:A3").Interior.ColorIndex = xlNone
Range("A" & etat + 1).Interior.ColorIndex = coul(etat)
End Sub
 

Pièces jointes

- 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
5
Affichages
1 K
B
Réponses
4
Affichages
794
blingo67
B
F
Réponses
3
Affichages
820
F
A
Réponses
44
Affichages
3 K
AlexandrB
A
R
Réponses
7
Affichages
1 K
D
  • Question Question
2 3
Réponses
31
Affichages
4 K
darknigthmare
D
F
Réponses
0
Affichages
1 K
filibertdu974
F
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…