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

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:

bérylion

XLDnaute Occasionnel
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 ?..
 

Vaati

XLDnaute Nouveau
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...
:rolleyes:

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 :p
 

Vaati

XLDnaute Nouveau
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)
 

Gael

XLDnaute Barbatruc
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
 

Vaati

XLDnaute Nouveau
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 076
Membres
104 021
dernier inscrit
abdesslem