Bonjour à tous,
Ma question est la suivante,
Est-ce possible de copié un bouton de commande avec son code vba qui ce trouve dans un userform dans un autre userform.
En vous remerciant de vos réponses.
Version imprimable
Bonjour à tous,
Ma question est la suivante,
Est-ce possible de copié un bouton de commande avec son code vba qui ce trouve dans un userform dans un autre userform.
En vous remerciant de vos réponses.
bonjour
J'ai pas bien compris ta demande mais peut être tu cherche à appeler un code de différent userform ou autres codes
Si c'est le cas et supposons que tu as un code appelé FermerFormulaire
tu peux appelé cette commande simplement avec la commande CallCode:
1
2
3 Sub FermerFormulaire ton code end sub
en tous cas c'est ce que j'ai compris ...si non merci de détailler ta demande et BONNE JOURNEE à vous et à tous les membres de ce super site :aie:Code:
1
2call FermerFormulaire
Bonjour Bennasr,
Tous d'abord merci de m'avoir répondu et de ton temps à mon égard.
Je vais essayer de m'expliquer correctement.
je me crée un caisse enregistreuse.
J'ai un userform ou la j'ai autant de bouttoncommande (qui ce trouve sur mon userform) que d'articles (qui ce trouve sur l'onglet article de ma feuille excel) (c.à.d si j'ai 20 articles, j'ai 20 bouttons)
J'aimerais de:
1) que chaque boutton prenne le nom d'un article (ex: commandbutton1 prenne le nom article 1, commandbutton2 prenne le nom article 2, etc.)
2) J'ai un code vba initial et j'aimerais que chaque commandbutton le possède (pour ne pas retaper tous le code autant de fois que de boutton)
voici le code initial:
J'espère m'être expliqué plus correctementCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 Private Sub CommandButton12_Click() If TextBox2 = "" Then TextBox1 = "Eau" TextBox2 = TextBox2 & 1 TextBox5 = "2,5" TextBox6.Value = Time If TextBox1 = "" Or TextBox2 = "" Then MsgBox "Vous devez impérativement remplir le mode de paiement, le nom du client, la quantitée et l'article avant de valider", vbInformation Exit Sub End If dlf_bdd = Sheets("BDD").Range("a" & Rows.Count).End(xlUp).Row Set Table = Sheets("BDD").Range("b2:c" & dlf_bdd) With Sheets("Temp") dlf = .Range("a" & Rows.Count).End(xlUp).Row + 1 .Range("a" & dlf) = Date .Range("b" & dlf) = TextBox6 .Range("c" & dlf) = "Table 1" .Range("d" & dlf) = CDbl(TextBox2) .Range("e" & dlf) = TextBox1 .Range("h" & dlf) = ComboBox1 .Range("f" & dlf) = TextBox5 .Range("g" & dlf) = .Range("d" & dlf) * Application.WorksheetFunction.VLookup(.Range("e" & dlf), Table, 2, 0) End With ListBox1.AddItem (TextBox2 & " " & TextBox1) TextBox1 = "" TextBox2 = "" TextBox6 = "" Else TextBox1 = "Eau" TextBox2 = TextBox2 TextBox5 = "2,5" TextBox6.Value = Time If TextBox1 = "" Or TextBox2 = "" Then MsgBox "Vous devez impérativement remplir le mode de paiement, le nom du client, la quantitée et l'article avant de valider", vbInformation Exit Sub End If dlf_bdd = Sheets("BDD").Range("a" & Rows.Count).End(xlUp).Row Set Table = Sheets("BDD").Range("b2:c" & dlf_bdd) With Sheets("Temp") dlf = .Range("a" & Rows.Count).End(xlUp).Row + 1 .Range("a" & dlf) = Date .Range("b" & dlf) = TextBox6 .Range("c" & dlf) = "Table 1" .Range("d" & dlf) = CDbl(TextBox2) .Range("e" & dlf) = TextBox1 .Range("h" & dlf) = ComboBox1 .Range("f" & dlf) = TextBox5 .Range("g" & dlf) = .Range("d" & dlf) * Application.WorksheetFunction.VLookup(.Range("e" & dlf), Table, 2, 0) End With ListBox1.AddItem (TextBox2 & " " & TextBox1) TextBox1 = "" TextBox2 = "" TextBox6 = "" End If With Sheets("Temp") dlf = .Range("a" & Rows.Count).End(xlUp).Row If dlf > 1 Then For i = 2 To dlf Total = Total + .Range("g" & i) Next i End If End With TextBox4 = Format(Total, "Currency") Sheets("Temp").Activate Macro1 End Sub
Je te remercie de ton temps
PS: je peut joindre une partie en ci-joint si il faut
En merci
Bonsoir FLORI, la forum
Pour commencer sous la lumière :aie: je suis aussi débutant et autodidacte en VBA donc méfier de mes propositions et à tester sur une copie de ton travail :aie::mouarf:
Pour nommer vos commande par exemple vous avez 10 boutons de commande qui doivent prendre le nom des 10 articles qui se trouvent dans la feuil1 colonne A et partant de A1 à A10 vous pouvez procéder de la façon suivante :
Pour la deuxième partie, je crois et au lieu d'enregistrer ton code sous Private Sub CommandButton12_Click()que tu dois copier ton code dans un module à appeler au besoin nommé par exemple enregistrerDonnéesCode:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub UserForm_Initialize() Dim i As Long, NbLeg As Long Dim ob As Object NbLeg = Sheets("feuil1").Range("A" & Rows.Count).End(xlUp).Row For i = 1 To NbLeg For Each ob In UserForm1.Controls If ob.Name = "CommandButton" & i Then ob.Caption = Sheets("feuil1").Cells(i, 1) End If Next ob Next i End Sub
et à chaque bouton de commande tu appelle se code avec la fonction callCode:
1
2
3
4
5
6
7
8
9
10
11
12 sub enregistrerDonnées 'Copier tout ton code If TextBox2 = "" Then TextBox1 = "Eau" TextBox2 = TextBox2 & 1 TextBox5 = "2,5" TextBox6.Value = Time . . . end sub
j'espère que ça t'as porté de l'aideCode:call enregistrerDonnées
BONNE SOIRÉE A VOUS TOUS
Bonjour Bennasr,
Je te remercie de ton attention à ma question.
Concernant le premier point (placer le nom de l'article à un bouttoncommand) ça marche super
Pour le reste, je fais un module comme tu me l'as bien dis
exemple (bien entendu j'ai pas mis tous mon code, c'étais pour tester)
Après j'ai placé la fonction call dans mon boutonCode:
1
2
3 Sub Macro1() TextBox1 = "Eau" End Sub
Cependant rien de ne passe quand je clic sur le bouttonCode:
1
2
3 Private Sub CommandButton1_Click() Call Macro1 End Sub
Je te joins un fichier aussi, si tu le désire
https://www.cjoint.com/c/HCqfEErnDtz
En te remerciant encore
Erreur. Je penserais plutôt a:Code:
1
2
3 Sub Macro1() TextBox1 = "Eau" End Sub
Ensuite, bien que n'étant pas un génie de VBA, il me semble que tu peut très bien copier ton code d'un UF1 pour le copier dans le formulaire d'un UF2, en vérifiant bien sur que cela ne vient pas en contradiction avec des particularités du nouveau UFCode:
1
2
3 Private Sub Macro1() TextBox1.caption = "Eau" End Sub
J'espère avoir été suffisamment clair et surtout ne pas avoir commis d'erreurs
Cordialement 8-)
Bonjour,
J'ai réussi à trouver la réponse
il fallait que j'indique aussi l'userform dans mon module
Pourrais abuser de votre gentillesseCode:
1
2
3 Sub Macro1() UserForm1.TextBox1 = "Eau" End Sub
Est-ce possible de placer le nom du bouton comme valeur
Je m'explique
comme maintenant chaque bouton ce nommera par la valeur de chaque cellule de la Feuil1
Exemple
Coca dans A1 Feuil1 = commandboutton1 Coca
Fanta dans A2 Feuil1 = commandboutton2 FAnta
j'aimerais que la valeur du bouton s'inscrive dans mon code macro1
En vous remerciant encore de votre tempsCode:
1
2
3
4 Sub Macro1() UserForm1.TextBox1 = "Eau" 'J'aimerais que Eau sois remplacer par le titre du boutton (exemple si commandboutton1 = coca donc "Eau" sera 'remplacé par "coca", si commandboutton2 = Fanta donc "Eau" sera remplacé par "Fanta" et ainsi de suite End Sub
Bonjour à tous
essayer avec ça :
BONNE JOURNÉE A TOUTES & A TOUSCode:
1
2
3
4
5 Sub Macro1() Sheets("Feuil1").Select ActiveWorkbook.Save UserForm1.TextBox1.Value = UserForm1.ActiveControl.Caption End Sub
Bonjour,
Merci pour cette réponse rapide
Je vais regarder des que j'ai un moment de libre aujourd'hui.
Juste une dernière question
Concernant le transfert nom vers le bouttoncommand qui marche super bien
J'ai déjà créé tous les bouttoncommand qui attende avec impatience que j'encode mais articles
Donc si j'ai 5 articles et que j'ai 20 boutons, j'ai mes 5 premier boutons rempli pour ça pas de soucis
Ma question est la suivante :
j'aimerais que le reste des boutons sois vide qu'il ne marque pas commandbutton
Exemple
j'ai 5 articles déjà encodé donc mes 5 commadbutton son bien encodé
cependant comme j'ai crée à l'avance 20 commandbutton, j'ai donc 15 commandbutton avec comme titre commadbutton6, commandbutton7 jusquà commandbutton20
Serait il possible que les commandbutton qui non pas d'articles soit vide (qui n'y ai rien que sois marqué dedans)
Je te remercie
Bonjour
peut être c'est du bricolage mais à mon niveau de débutant VBA j'ajoute une autre boucle lors de l'initialisation de ton Userform
et je cache le bouton s'il est vide
comme ç :
Code:
1
2
3
4
5 For Each ob In UserForm1.Controls If ob.Name = "CommandButton" & i Then ob.Visible = False End If Next ob
Bonjour,
A mon avis c'est ce que je recherche
Mais je crois que je place mal le code, car il me cache seulement le commandbutton après l'article et me marque les autres commandbutton
Exemple
si j'ai 5 articles
me marque bien les 5 articles
le 6 ème comme pas article ce cache bien
mais apres tous les autres commandbutton s'affiche
voila le code:
En te remerciantCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub UserForm_Initialize() Dim i As Long, NbLeg As Long Dim ob As Object NbLeg = Sheets("feuil1").Range("A" & Rows.Count).End(xlUp).Row For i = 1 To NbLeg For Each ob In UserForm1.Controls If ob.Name = "CommandButton" & i Then ob.Caption = Sheets("feuil1").Cells(i, 1) 'Le 1 choisi la première colonne à prendre End If Next ob Next i For Each ob In UserForm1.Controls If ob.Name = "CommandButton" & i Then ob.Visible = False End If Next ob End Sub
Re,
J'ai trouvé la solution
J'ai gardé le premier code:
J'ai juste supprimer la caption dans les propriétésCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub UserForm_Initialize() Dim i As Long, NbLeg As Long Dim ob As Object NbLeg = Sheets("feuil1").Range("A" & Rows.Count).End(xlUp).Row For i = 1 To NbLeg For Each ob In UserForm1.Controls If ob.Name = "CommandButton" & i Then ob.Caption = Sheets("feuil1").Cells(i, 1) 'Le 1 choisi la première colonne à prendre End If Next ob Next i End Sub
Avec cela mes commandbutton son automatiquement vierge
et grâce à ton code il me rempli seulement le commadbutton qui faut
Je te redis encore et encore un grand merci de ton aide
Maintenant vais m'attaquer avec les couleurs
J'espère que si j'ai un soucis, je pourrais me permettre de te redemander de l'aide :D
Merci
avec plaisir
svp passer cette discussion comme résolue et ouvrir une autre si nécessaire
Bonjour,
Merci et désolé, je croyais avoir mis résolu, pardon