OVH Cloud OVH Cloud

Commande macro par BO

4 réponses
Avatar
fredbzr
Bonsoir à tous
j'ai de nouveau besoin de vos connaissances.
J'ai créer une BO personnel sur laquelle j'ai mis le code ci dessous.
1ère question:comment faire pour que le deuxième code se déclenche lorsque
j'appuis sur mon bouton (en fait je n'ai pas réussi à trouver le bon code
pour relier les deux)
2ème question: comment faire pour que ce deuxième code ne se déclenche que
lorsque j'appuis sur le bouton car j'ai beaucoup de cellules et la procédure
est longue

code du bouton de ma BO dans un module
Set bouton =
CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "CompteCouleur"
bouton.Caption = "Calcul CE"

code que je veux déclencher dans le même module
Function CompteCouleur(champ As Range, couleur As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp

End Function

Merci d'avance pour le temps que vous passerez à me dépatouiller


Fred

4 réponses

Avatar
lSteph
Bonsoir,
ci après
Cdlt.
lSteph
''''''''''''
Sub itos()
Dim bouton As CommandBarButton
'...
Set bouton =
CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "mamac"
bouton.Caption = "Calcul CE"


End Sub

Sub mamac()
Calculate 'c'est un recalcul qui recalculera la fonction
End Sub

Function CompteCouleur(champ As Range, couleur As Range)
'....
'''''''''''''''''

fredbzr a exposé le 15/12/2006 :
Bonsoir à tous
j'ai de nouveau besoin de vos connaissances.
J'ai créer une BO personnel sur laquelle j'ai mis le code ci dessous.
1ère question:comment faire pour que le deuxième code se déclenche lorsque
j'appuis sur mon bouton (en fait je n'ai pas réussi à trouver le bon code
pour relier les deux)
2ème question: comment faire pour que ce deuxième code ne se déclenche que
lorsque j'appuis sur le bouton car j'ai beaucoup de cellules et la procédure
est longue

code du bouton de ma BO dans un module
Set bouton = CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "CompteCouleur"
bouton.Caption = "Calcul CE"

code que je veux déclencher dans le même module
Function CompteCouleur(champ As Range, couleur As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp

End Function

Merci d'avance pour le temps que vous passerez à me dépatouiller


Fred


--
- -

Avatar
fredbzr
Bonsoir lSteph
je viens de faire les modifs que tu m'as faites,
le recalcul s'effectue bien par le bouton de la BO, mais il s'effectue
également lorsque je rempli mes cellules qui font appellent à d'autres
macros, ce qui ralentit considérablement l'application (environ 5 sec par
cellules) puisqu'à chaque fois le recalcul est lancé
y aurait-il quelque chose que j'aurai mal fait?

"lSteph" a écrit dans le message de news:

Bonsoir,
ci après
Cdlt.
lSteph
''''''''''''
Sub itos()
Dim bouton As CommandBarButton
'...
Set bouton =
CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "mamac"
bouton.Caption = "Calcul CE"


End Sub

Sub mamac()
Calculate 'c'est un recalcul qui recalculera la fonction
End Sub

Function CompteCouleur(champ As Range, couleur As Range)
'....
'''''''''''''''''

fredbzr a exposé le 15/12/2006 :
Bonsoir à tous
j'ai de nouveau besoin de vos connaissances.
J'ai créer une BO personnel sur laquelle j'ai mis le code ci dessous.
1ère question:comment faire pour que le deuxième code se déclenche
lorsque j'appuis sur mon bouton (en fait je n'ai pas réussi à trouver le
bon code pour relier les deux)
2ème question: comment faire pour que ce deuxième code ne se déclenche
que lorsque j'appuis sur le bouton car j'ai beaucoup de cellules et la
procédure est longue

code du bouton de ma BO dans un module
Set bouton =
CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "CompteCouleur"
bouton.Caption = "Calcul CE"

code que je veux déclencher dans le même module
Function CompteCouleur(champ As Range, couleur As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp

End Function

Merci d'avance pour le temps que vous passerez à me dépatouiller


Fred


--
- -





Avatar
Fredo P.
Bonjour
Pour empêcher les macros de démarrer il faut ajouter
Application.EnableEventsúlse en début de procédure et ne pas oublier de
remettre à True en fin de proc et par précaution une gestion d'erreur ex:
On error goto Gesterr
' & en fin de proc
Gesterr:
Application.EnableEvents=True
"fredbzr" a écrit dans le message de news:
45832f94$0$25943$
Bonsoir lSteph
je viens de faire les modifs que tu m'as faites,
le recalcul s'effectue bien par le bouton de la BO, mais il s'effectue
également lorsque je rempli mes cellules qui font appellent à d'autres
macros, ce qui ralentit considérablement l'application (environ 5 sec par
cellules) puisqu'à chaque fois le recalcul est lancé
y aurait-il quelque chose que j'aurai mal fait?

"lSteph" a écrit dans le message de news:

Bonsoir,
ci après
Cdlt.
lSteph
''''''''''''
Sub itos()
Dim bouton As CommandBarButton
'...
Set bouton > > CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "mamac"
bouton.Caption = "Calcul CE"


End Sub

Sub mamac()
Calculate 'c'est un recalcul qui recalculera la fonction
End Sub

Function CompteCouleur(champ As Range, couleur As Range)
'....
'''''''''''''''''

fredbzr a exposé le 15/12/2006 :
Bonsoir à tous
j'ai de nouveau besoin de vos connaissances.
J'ai créer une BO personnel sur laquelle j'ai mis le code ci dessous.
1ère question:comment faire pour que le deuxième code se déclenche
lorsque j'appuis sur mon bouton (en fait je n'ai pas réussi à trouver
le



bon code pour relier les deux)
2ème question: comment faire pour que ce deuxième code ne se déclenche
que lorsque j'appuis sur le bouton car j'ai beaucoup de cellules et la
procédure est longue

code du bouton de ma BO dans un module
Set bouton > >> CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "CompteCouleur"
bouton.Caption = "Calcul CE"

code que je veux déclencher dans le même module
Function CompteCouleur(champ As Range, couleur As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp

End Function

Merci d'avance pour le temps que vous passerez à me dépatouiller


Fred


--
- -









Avatar
fredbzr
Bonjour FredoP
d'abord merci de t'être penché sur mon soucis.
j'ai suivi tes conseils mes malheureusement, la fonction comptecouleur se
déclenche toujours toute seule (progrès grâce à lSteph, elle se déclenche
aussi par le bouton de la BO)
j'ai beau avoir mis application.enable = false, rien y fait
auris-tu une autre idée
ci-joint une partie du code
merci à toi

Sub auto_open()
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False

Set bouton =
CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "mamac"
bouton.Caption = "Calcul CE"
'+d'autres boutons.....

End Sub

Function CompteCouleur(champ As Range, couleur As Range)
Application.EnableEvents = False
On Error Resume Next
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp
Application.EnableEvents = True
End Function

Sub mamac()
Application.EnableEvents = False
Calculate 'c'est un recalcul qui recalculera la fonction
Application.EnableEvents = True
End Sub



"Fredo P." a écrit dans le message de news:

Bonjour
Pour empêcher les macros de démarrer il faut ajouter
Application.EnableEventsúlse en début de procédure et ne pas oublier de
remettre à True en fin de proc et par précaution une gestion d'erreur ex:
On error goto Gesterr
' & en fin de proc
Gesterr:
Application.EnableEvents=True
"fredbzr" a écrit dans le message de news:
45832f94$0$25943$
Bonsoir lSteph
je viens de faire les modifs que tu m'as faites,
le recalcul s'effectue bien par le bouton de la BO, mais il s'effectue
également lorsque je rempli mes cellules qui font appellent à d'autres
macros, ce qui ralentit considérablement l'application (environ 5 sec par
cellules) puisqu'à chaque fois le recalcul est lancé
y aurait-il quelque chose que j'aurai mal fait?

"lSteph" a écrit dans le message de news:

Bonsoir,
ci après
Cdlt.
lSteph
''''''''''''
Sub itos()
Dim bouton As CommandBarButton
'...
Set bouton >> > CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "mamac"
bouton.Caption = "Calcul CE"


End Sub

Sub mamac()
Calculate 'c'est un recalcul qui recalculera la fonction
End Sub

Function CompteCouleur(champ As Range, couleur As Range)
'....
'''''''''''''''''

fredbzr a exposé le 15/12/2006 :
Bonsoir à tous
j'ai de nouveau besoin de vos connaissances.
J'ai créer une BO personnel sur laquelle j'ai mis le code ci dessous.
1ère question:comment faire pour que le deuxième code se déclenche
lorsque j'appuis sur mon bouton (en fait je n'ai pas réussi à trouver
le



bon code pour relier les deux)
2ème question: comment faire pour que ce deuxième code ne se déclenche
que lorsque j'appuis sur le bouton car j'ai beaucoup de cellules et la
procédure est longue

code du bouton de ma BO dans un module
Set bouton >> >> CommandBars("BarreBoutons").Controls.Add(Type:=msoControlButton)
bouton.BeginGroup = True
bouton.Style = msoButtonCaption
'bouton.Width = 100
bouton.OnAction = "CompteCouleur"
bouton.Caption = "Calcul CE"

code que je veux déclencher dans le même module
Function CompteCouleur(champ As Range, couleur As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp

End Function

Merci d'avance pour le temps que vous passerez à me dépatouiller


Fred


--
- -