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

Problème d'ajout de code pour des boutons dynamiques

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

Vaati

XLDnaute Nouveau
Bonjour à tous,

Voila, je vous expose mon problème
J'ai créé une macro qui établit des plannings à partir d'une base de données... jusque la tout va bien.

Je crée des boutons dynamiques afin d'avoir une interaction avec ce planning.

Mes boutons se placent bien, prennent les bonnes dimensions, mais (car il y a toujours un mais) quand j'essaye d'écrire leur code dans la feuille VB, Excel plante completement...

pourtant la premiere itération se passe bien (définition des dimensions du bouton, création du boutton, attribution de code).
Mais quand excel plante, je vois mes 2 premiers boutons correctement affichés, et apres des tests avec msgbox(car la compil pas a pas quand on fait du bouton dynamique ca plante , merci m$), j'ai isolé le problème...

Ci joint la portion de code ...

La fonction de création de bouton:

Code:
Sub createbutton(bleft As Double, btop As Double, bwidth As Double, bheight As Double)

   ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
        , DisplayAsIcon:=False, left:=bleft, top:=btop, width:=bwidth, height _
        :=bheight).Select
     
End Sub

Et la partie création du bouton et insertion de code

Code:
Application.Run "createbutton", gauchebouton, sommetbouton, largeurbouton, hauteurbouton
    

'compter le nombre de boutons existants dans la feuille
y = ActiveSheet.OLEObjects.Count

  'c'est la que ca plante!! quand y=2
ActiveSheet.OLEObjects(y).Name = "CommandButton" & y
 
'tempstr est initialisé a ce moment...
        ActiveSheet.OLEObjects(y).Object.Caption = tempstr
      
    'définition de la fonction 
    code = "Sub CommandButton" & y & "_Click()" & vbCrLf
    code = code & "msgbox(" & y & ""ca marche"")" & vbCrLf
    code = code & "End Sub" & vbCrLf

  
ActiveWorkbook.VBProject.VBComponents(Worksheets("Planning").CodeName).CodeModule.AddFromString code


Merci d'avance pour votre aide 🙂
 
Dernière édition:
Re : Problème d'ajout de code pour des boutons dynamiques

Salut

difficile à résoudre sans le code entier...?!

perso j'utilise la méthode "insertlines" plutôt que "addfromstring"

fais un essai comme ça :

Code:
...
With ActiveWorkbook.VBProject.VBComponents(Worksheets("Planning").CodeName).CodeModule
    .InsertLines .CountOfLines + 1, code
End With
...

qu'est-ce que ça dit ?..
 
Re : Problème d'ajout de code pour des boutons dynamiques

Oula, après avoir effectué d'autres tests , j'ai vu que l'erreur se situait ailleurs...
🙄

Il se trouve que le code marche quand on enleve:

Code:
ActiveWorkbook.VBProject.VBComponents(Worksheets("Planning").CodeName).CodeModule.AddFromString code

(Les boutons se créent bien)

mais quand on le laisse, c'est au niveau de cette instruction que ca plante :s
sachant que y=2

Code:
ActiveSheet.OLEObjects(y).Name = "CommandButton" & y

Désolé pour le mauvais diagnostic 😛
 
Re : Problème d'ajout de code pour des boutons dynamiques

Je relance le sujet!
(j'ai oublié de préciser, je travaille sous office 2007, peut etre que ca change quelque chose, j'ai eu des surprises récemment avec des DTPickers qui se cachaient)
 
Re : Problème d'ajout de code pour des boutons dynamiques

Bonjour Vaati, bonjour Berylion,

J'ai testé chez moi avec XL2003 et tout marche correctement avec ta méthode ou celle de Bérylion.

Remarques:
pourquoi veux-tu renommer les boutons avec le nom qu'Excel leur donnera automatiquement par défaut?

tout ne fonctionnerait-il pas correctement sans le rename?

Peut-être que Excel 2007 n'accepte pas de rename avec un nom identique.

Essaye en mettant un nom différent, ex "CdB" & y

Je n'ai pas d'autre idée.

@+

Gael
 
Re : Problème d'ajout de code pour des boutons dynamiques

Je ne pense pas que excel 2007 n'accepte pas le rename, car cela marche pour le premier bouton...

Mais j'ai trouvé une méthode qui marche, en déclarant les boutons dans une boucle, puis en générant le code lié a ces boutons dans une autre boucle...

Mon problème initial reste donc un mystere....


Merci à tous pour votre aide 🙂

Vaati.
 
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…