Comment encoder du code dans un bouton créé à la volée

john

XLDnaute Impliqué
Bonjour à tous,

Comment fait on pour mettre du code dans un/des bouton(s) créé(s) à la volé ?

Voilà ce que j'ai,

j'insère des textbox et des commandbutton à la volé et j'aimerai quand je clique sur les boutons qu'une boite de dialogue (insérer fichier .jpg) s'ouvre et que le nom et le chemin du fichier sélectionné se mettent dans le textbox adéquat (textbox1 avec commandbutton1 et ainsi de suite).

J'avoue que je cale sur ce petit problème. La boite de dialogue là ça va, c'est juste le code dans le bouton.

Je vous remercie d'avance.

@mic@lement.

John
 
Dernière édition:

john

XLDnaute Impliqué
Re : Comment encoder du code dans un bouton créé à la volée

Salut,

Comme j'ai dis dans mon message, juste pour afficher une boite de dialogue et une fois le fichier sélectionné, envoyé le contenu dans un textbox.

Ah oui j'oubliais de dire que c'était dans un fichier Word, mais bon le VBA reste +/- le même en ce qui concerne les userforms et les autres contrôles.

Je joins mon fichier comme ça tu pourra te rendre compte par toi même.

Merci d'avance.

John
 

Pièces jointes

  • selection_photos.zip
    11.3 KB · Affichages: 35

john

XLDnaute Impliqué
Re : Comment encoder du code dans un bouton créé à la volée

Bonjour,

Toujours personne pour mon problème ????

Comment mettre du code dans un bouton créé à la voléé ?? et le code est d'ouvrir une boite de dialogue (insérer fichier .jpg) et que le nom et le chemin du fichier sélectionné se mettent dans un textbox également créé à la volée.

Merci d'avance.

John

Ps: voir le fichier joint dans mon message précédent
 

kjin

XLDnaute Barbatruc
Re : Comment encoder du code dans un bouton créé à la volée

Bonjour,
Ca manque de précision quant au fonctionnement de ton fichier
Comment est déterminer le nbrcom (pas vraiment compris)
Le usf doit-il être conservé tel quel ou doit-on détruire les contrôles nouvellement créés à chaque chargement/déchargement ?
Un module de classe pour affecter la macro "Dialogue" aux boutons serait préférable (je regarderai)
Ceci est un exemple, et dis nous si ça répond à tes attentes
J'attends tes précisions pour continuer

Efface le code dans ton Usf sauf celui du bouton annuler
Dans la module de ThisDocument modifie le code du bouton comme suit
Code:
Private Sub CommandButton1_Click()
affusf
End Sub
Enregistre ton fichier, puis ajoute un module standard et dans ce module
Code:
Sub affusf() 'ajout des contôles dans le Usf existant
Dim nbrcom, i As Integer, x As Integer, sName As String
Dim oForm As Object, lbl As MSForms.Label, tbx As MSForms.TextBox, btn As MSForms.CommandButton
nbrcom = ActiveDocument.Fields.Count / 2 '????
Set oForm = ThisDocument.VBProject.VBComponents("UserForm1")
With oForm
    For i = 1 To 10 'nbrcom
        If i = 1 Then
            .Properties("Height") = 124
            .Designer.cmdok.Top = 66
            .Designer.cmdannuler.Top = 66
        Else
            .Properties("Height") = 124 + (20 * i)
            .Designer.cmdok.Top = 66 + (20 * i)
            .Designer.cmdannuler.Top = 66 + (20 * i)
        End If
        Set lbl = .Designer.Controls.Add("Forms.Label.1")
        With lbl
            .Name = "lblfich" & i
            .Left = 40
            .Top = 40 + ((i - 1) * 22)
            .Width = 65
            .Height = 15.8
            .Caption = "Fichier N° " & i & " :"
            .TextAlign = 3
        End With
        Set tbx = .Designer.Controls.Add("Forms.TextBox.1")
        With tbx
            .Name = "fich" & i
            .Left = 110
            .Top = 40 + ((i - 1) * 22)
            .Width = 168
            .Height = 15.8
            .BackColor = &HC0FFFE
        End With
        Set btn = .Designer.Controls.Add("forms.CommandButton.1")
        With btn
            .Name = "cmdbtn" & i
            sName = .Name
            .Left = 285
            .Top = 40 + ((i - 1) * 22)
            .Width = 24
            .Height = 17
            .Caption = "..."
        End With
        With .CodeModule
            x = .CountOfLines
            .InsertLines x + 1, "Private Sub " & sName & "_Click()"
            .InsertLines x + 2, "Dialogue"
            .InsertLines x + 4, "End Sub"
        End With
    Next i
End With
VBA.UserForms.Add (oForm.Name)
UserForms(0).Show

End Sub

Sub Dialogue() 'c'est la macro affectée aux boutons créés
Fichier = InputBox("Nom du fichier ?")
End Sub
A+
kjin
 

john

XLDnaute Impliqué
Re : Comment encoder du code dans un bouton créé à la volée

Bonjour,
En fait je voulais faire un modèle uniquement avec le userform et le code afin de pouvoir créer une barre d'outil.
Et tu te demandes comment est déterminer le nbrcom,en fait j'ai des rapport photos avec X photos dedant d'où la création à la volée de textbox et de bouton de commande et je divise ce nombre de photo en 2 car il me faut changer uniquement 1 photo sur 2. Les contrôles peuvent être supprimés car les rapports photo n'ont pas le même nombres de photos en général. Il me faut juste un bouton OK et Annuler qui peuvent rester en permanence. Voilà j'espère avoir été un peu plus clair, il est vrai que ce n'est pas toujours évident d'expliquer par écrit ce que a et ce qu'on voudrai avoir.

Quand je lance la macro que tu as faite ci-dessus j'ai un message d'erreur "la méthode 'properties' de l'objet '_VBcomponent' a échoué" !!! je ne sais pas pour quoi j'ai ce message.

Je continue à cherche de mon coté et si quelqu'un trouve avant moi ce serai bien mais si je trouve, je mettrai la solution trouvée ici.

Merci pour tout.

@mic@lement.
 

kjin

XLDnaute Barbatruc
Re : Comment encoder du code dans un bouton créé à la volée

Bonsoir,
Pourquoi faire simple ! :rolleyes: (c'est à mon attention :))
J'ai ajouté le module de classe
J'ai utilisé la bibliothèque Excel pour pouvoir utiliser la boite pour pêcher les fichiers sans les ouvrir (GetOpenFileName)
Il te reste à mettre le code du bouton OK
Et comme je n'ai toujours rien compris à ton nb de photos j'ai laissé tel quel
A+
kjin
 

Pièces jointes

  • john_v1.zip
    19.2 KB · Affichages: 49

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 041
Membres
102 764
dernier inscrit
nestu