code inopérant si généré automatiquemnt

flamel

XLDnaute Nouveau
Bonjour,

Sur un UserForm, si je crée un bouton directement, son code est fonctionnel par un clik, mais un bouton créé automatiquemnt par une procédure inscrit bien le text edu code, mais celui-ci est inopérant.
Pourquoi ?

Merci si vous avez une réponse.

flamel
 

Hellboy

XLDnaute Accro
Bonjour flamel

Il se peut que après ta manipulation, le compilateur n'a pas effectué sa job. Peut être avec un fichier je pourrais mieux voir !

En passant, tu ne m'as pas fini de me répondre sur 2 autres de tes Post. Est ce que ça fonctionne comme tu veux ?

Ce lien n'existe plus

Ce lien n'existe plus
 

flamel

XLDnaute Nouveau
Bonjour Hellboy.

Merci de me répondre.
J'ai partiellement résolu mes problèmes.
Je n'arrive pas à rendre oprérant les boutons générés sur un UserForm par une procédure. Le code s'inscrit bien, le bouton se colore, mais il ne réagit pas (Locked = false).
En fichier joint, voici une petite partie du logiciel.
Sub FaireUnTraitHorizontal crée un commandbutton très étroit, qui sert de trait.
Sub RemplirCode génère le code correspondant.
Les variables utilisées viennent d'autres procédures.
C'est pour faire une suite de traits représentant une suit chronologique.

Merci si tu peux m'aider.

( Le 2e lien que tu me donnes ne me concerne pas. )

A+

flamel
 

flamel

XLDnaute Nouveau
Encore un coup pour rien...! [file name=FaireUnTraitHorizontal.zip size=3407]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/FaireUnTraitHorizontal.zip[/file]
 

Pièces jointes

  • FaireUnTraitHorizontal.zip
    3.3 KB · Affichages: 13

Hellboy

XLDnaute Accro
Bonjour flamel

C'est difficile comme ça, mais je te donne deux choses Un ma supposition de ton problème et un autre exemple qui fonctionne.

En fait, j,ai seulemnt supprimé le VBCrLf de la ligne du nom de la procédure.

Public Sub RemplirCode()
               
' remplir le Code
                Code = '
Sub CommandButton' & iTrait - 6 & '_Click()'
                Code = Code & 'Msgbox ' & Chr(34) & Sheets('feDoc').Cells(iTrait, 3) & Chr(34) & vbCrLf
                Code = Code & '
End Sub'
               
With ThisWorkbook.VBProject.VBComponents(6).CodeModule
                       
NextLine = .CountOfLines + 1
                        .InsertLines
NextLine, Code
               
End With
End Sub


Sub AddButtonAndCode()
       
' Declare variables
       
Dim i As Long, Hght As Long
       
Dim Name As String, NName As String
       
' Set the button properties
        i = 0
        Hght = 305.25
       
' Set the name for the button
        NName = 'cmdAction' & i
       
' Test if there is a button already and if so, increment its name
       
For Each OLEObject In ActiveSheet.OLEObjects
               
If Left(OLEObject.Name, 9) = 'cmdAction' Then
                        Name = Right(OLEObject.Name, Len(OLEObject.Name) - 9)
                       
If Name >= i Then
                                i = Name + 1
                       
End If
                        NName = 'cmdAction' & i
                        Hght = Hght + 27
               
End If
       
Next
       
' Add button
       
Dim myCmdObj As OLEObject, N%
       
Set myCmdObj = ActiveSheet.OLEObjects.Add(ClassType:='Forms.CommandButton.1', _
        Link:=
False, DisplayAsIcon:=False, Left:=52.5, Top:=Hght, _
        Width:=202.5, Height:=26.25)
       
' Define buttons name
        myCmdObj.Name = NName
       
' Define buttons caption
        myCmdObj.Object.Caption = 'Click for action'
       
' Inserts code for the button
       
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
                N = .CountOfLines
                .InsertLines N + 1, '
Private Sub ' & NName & '_Click()'
                .InsertLines N + 2, vbNewLine
                .InsertLines N + 3, vbTab & 'MsgBox(' & '''' & 'Button Clicked!' & '''' & ' & vbCrLf &' & _
                '''' & 'Put your code here!' & '''' & ' & vbCrLf & ' & '''' & 'This is ' & '''' & _
                '& ' & '''' & NName & '''' & ')'
                .InsertLines N + 4, vbNewLine
                .InsertLines N + 5, '
End Sub'
       
End With
End Sub
 

Hellboy

XLDnaute Accro
re flamel

Là, il y a un problème. Moi ça marche impec pour la deuxième procédure que je te propose. Tu as quel version de Excel ? Quoi que je ne pense pas que ça fasse de différence. (Moi 2003)

Bon, à la tête reposé demain, je vais essayer d'y repenser.

a+
 

Discussions similaires

Réponses
93
Affichages
2 K

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso