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

G

gerome1980

Guest
Bonjour,

voila j'essaie de créer une barre avec 8 boutons, chacun affecté de la même macro mais avec paramètre différent. Voilà le code:
Code:
Sub creation_barre()
unité = Range('A3').Value
prefixe = Array('m', 'c', 'd', '', 'da', 'h', 'k', 'M')
Dim bouton(8)
Dim i As Integer
Set barre_formatage = CommandBars.Add(Name:='Conversion', _
Position:=msoBarFloating, MenuBar:=False, temporary:=True)

With barre_formatage
.Visible = True

For i = 0 To 7
Set bouton(i) = .Controls.Add(Type:=msoControlButton)
Next
End With
For p = 0 To 7
With bouton(p)
.Caption = prefixe(p) & unité
.OnAction = ''formatage p''
.Style = msoButtonCaption
End With
Next
End Sub

Sub formatage()
    Selection.NumberFormat = '0.00'' ' & prefixe(p) & unité & ''''
End Sub

Je ne comprends pas pourquoi ça ne marche pas au niveau du OnAction; Excel me dit qu'il ne trouve pas la macro formatage p.
Comment faire?

Merci,

Jerome
 
salut gerome
tu t'es simplement trompé dans le nom de ta macro :
remplace par : .OnAction = 'formatage'
par contre dans ce cas tu ne prends pas en compte ton paramètre p...
mais honnêtement, je ne vois pas comment faire mis à part en créant une macro à chaque p...
Essaie quand même de mettre :
.OnAction = 'formatage p'
mais je n'y crois pas (tu as mis dans ton code des guillemets simples en plus des doubles... donc Excel ne peut trouver ta macro).
 
bonjour jerome, re shock


peut etre comme ceci :


Dim prefixe
Sub creation_barre()
Dim i As Integer

unité = Range('A3').Value
prefixe = Array('m', 'c', 'd', '', 'da', 'h', 'k', 'M')


Set barre_formatage = CommandBars.Add(Name:='Conversion', _
Position:=msoBarFloating, MenuBar:=
False, temporary:=True)

With barre_formatage
.Visible =
True
For i = 0 To 7
Set bouton = .Controls.Add(Type:=msoControlButton)
With bouton
.Caption = prefixe(i) & unité
.OnAction = ''formatage(' & i & ')''
.Style = msoButtonCaption
End With
Next i
End With

End Sub

Sub formatage(p As Byte)
Selection.NumberFormat = '0.00'' ' & prefixe(p) & unité & ''''
End Sub


pense à tes déclarations de variables, là j'ai déclaré prefixe en tete de module à toi de voir si ceci te convient.

salut

edition : je viens de découvrir ta variable unité pense egalement à la rendre public;

Message édité par: hervé, à: 19/06/2006 15:35
 
Bonjour Shock, bonjour Hervé,

merci pour vos réponses.
Malheureusement ça nemarche toujours pas; j'ai essayé le code proposé, mais j'ai un message d'erreur du type 'Impossible de trouver la macro 'formatage(3)''.
 
Bonjour Hervé,

je viens juste de créer un module...et ça marche!
Mais pourquoi cela? C'est la macro formatage qui doit être définie dans un module?
Quelle différence entre rentrer le code dans un module et dans une feuille (et dans thisworkbook) ?

Merci,

Jerome
 
- 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

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
80
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
Réponses
10
Affichages
759
Retour