("CommandButton" & X). Le "X" en variable ?

  • Initiateur de la discussion IFFIC
  • Date de début
I

IFFIC

Guest
Coucou et bonsoir à tous

Je tente de faire une boucle sur la feuille ' ADHERENTS '
Pour créer dans un USF les boutons correspondants…

Je me heurte à la fichue obligation de : ' CommandButton.1 '

N’ayant pas envie de me farcir : Bt1, Bt2, Bt3… et Bt..j’en ai marre

Si une bonne âme charitable passait par là pour me filer un tuyau,
…. Je coince !!!

Je lui serais fort reconnaissant….

Comme je le suis déjà depuis un grand morceau de temps pour
bien d’aide dans ce forum.

------------------------------------------------
Dim T As Integer
Dim X As Integer


Private Sub UserForm_Initialize()

T = 1
X = 1

UserForm1.Controls.Add 'Forms.CommandButton.1'

' Je cherche en fait, et en VAIN, un truc du genre:

'UserForm1.Controls.Add 'Forms.('CommandButton' & X)'

'Pour le reste, cela fonctionne...

With UserForm1.Controls(T)

For i = 1 To 3

.Caption = Worksheets('ADHERENTS').Cells(i, 1)
.Top = 26
.Left = 32
'. Et c.

Next i

On Error Resume Next

End With

End Sub

Bonne soirée, et merci d’avance.

(Fichier joint)

IFFIC
[file name=CREATION-BOUTON_20050324215755.zip size=10540]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CREATION-BOUTON_20050324215755.zip[/file]
 

Pièces jointes

  • CREATION-BOUTON_20050324215755.zip
    10.3 KB · Affichages: 53
I

IFFIC

Guest
Bonsoir à tous

Voici un petit morceau de réponse sur ce pourquoi je souhaitais charger mes ' Boutons ' (D’USF, il s’entend !!!)
par le biais d’une macro.

J’ai dans mon UserForm :
27 ' Label '
35 ' CommandButton '
2 ' ListBox ' (Vachement grandes)
26 ' TextBox '
2 ' Image ' (De bonne taille)
1 ' WebBrowser '

Je ne parle pas des ' Picture ' qui changent…

Donc si, comme dit Germain, je veux travailler en ' Design ' sur mon USF...
C’est un peu comme une femme un peu pétée qui cherche les clés de son appart. dans son SAC un samedi, alors que le téléphone sonne à l’intérieur !!! (Pas du sac, de l’appart !)
et qu’elle a vachement hâte de te montrer sa collection de boutons…

En plus, comme par la suite, suivant l’identité ou le choix de l’utilisateur :
La base de donnée, l’emplacement des boutons, leur tronche et leur emplacement changent….
J’en ai pas fini avec les ' For Each.. '

En parallèle je crée des groupes de boutons
avec évènement ' Quand click '

C’est dire !!!

Qui a dit USG (Usine à gaz) ?????

Je bidouille VBA comme je peux.
C’est pas du ' Pro', je me régale quand même…

Merci à tous de m’avoir filé le virus vébéabique
Et d’être si sympas de m’aider

T’as pensé à ta retraite et à tout ce temps à ne savoir que faire?
Ben, oui !
T’as vu, j’ai déjà commencé à m’en occuper…

Bonne longue fin de semaine à tous

Merci encore

IFFIC

P.S. Encore un truc :
Je viens de lire comment sauvegarder d'une façon définitive
la mise en page de l'USF par MicheLXLD
N'est - il pas super?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
=> Cadeau "UserForm en Chocolat Automatique" !!!

Bonsoir Iffic, Michel, Hervé, Boudoula, le Fil, le Forum

Pour commencer, je m'excuse j'étais Off Today, et donc je ne me suis pas approché d'un ordi jusqu'à maintenant.

Hier soir je blaquais, j'avais bien compris que les boutons ne fesaient rien !!! lol

Bon sinon pour répondre concrètement à Hervé, je fais pas mal de Développement Informatique puisque c'est mon job et par conséquent, j'en fabrique par 13 à la douzaine des UserForms, et de toutes les Formes...

Rien qu'ici vous en avez un aperçu !

Les UserForms VB et surtout VBA Excel sont bien pratiques et j'en use et abuse, mais il est évident que de placer 40 TextBox alignées au poil de, arf enfin vous avez compris, donc bien rangées et aussi bien nommées dans l'odre de présentation comprenant aussi un Tag, et ayant un Label correspondant pour chacune est assez fastidieux...

Dans pas mal de démos que j'ai publiées ici, notamment les 'mass CheckBox', je n'ai pas le temps pour dessiner en mode Design 40 ou 80 Controls, ni, non plus leur écrire un code évènementiel à chacun...

Donc pour ces fêtes de Pâques, je vous donne mon astuce de Développeur d'Oeuf...

Ce code va générer tout seul un UserForm avec 40 TextBox mesurées, alignées, nommées etc, avec 40 label alignés aussi...

Option Explicit

Const Sign As String = ''Thierry 's Truc sur www.Excel-Downloads.com, March 2005'

Const TxbWidth As Integer = 65
Const TxbHeigth As Integer = 15
Const TxbLeft As Integer = 90
Const TxbTop As Integer = 15

Const LblWidth As Integer = 70
Const LblHeigth As Integer = 15
Const LblLeft As Integer = 10
Const LblTop As Integer = 15

Sub MyUserFormAutoBuilder()
Dim ObjUSF As Object
Dim ObjTextBox As Object, ObjLabel As Object, CmdB As Object, LstB As Object
Dim TopPlusHeight As Integer
Dim X As Byte
Dim VLblLeft As Integer
Dim VTxbLeft As Integer
 
 
Set ObjUSF = ThisWorkbook.VBProject.VBComponents.Add(3)
 
With ObjUSF
    .Properties('Caption') = Sign
    .Properties('Width') = 660
    .Properties('Height') = 195
    .Properties('ShowModal') =
True
 
End With
 
   
For X = 1 To 40
       
     
Set ObjTextBox = ObjUSF.Designer.Controls.Add('Forms.TextBox.1')
     
Set ObjLabel = ObjUSF.Designer.Controls.Add('Forms.Label.1')
     
         
Select Case X
           
Case 1 To 10
             
If X = 1 Then TopPlusHeight = LblTop
              VLblLeft = LblLeft
              VTxbLeft = TxbLeft
           
Case 11 To 20
             
If X = 11 Then TopPlusHeight = LblTop
              VLblLeft = LblLeft + 160
              VTxbLeft = TxbLeft + 160
           
Case 21 To 30
             
If X = 21 Then TopPlusHeight = LblTop
              VLblLeft = LblLeft + 320
              VTxbLeft = TxbLeft + 320
           
Case 31 To 40
             
If X = 31 Then TopPlusHeight = LblTop
              VLblLeft = LblLeft + 480
              VTxbLeft = TxbLeft + 480
         
End Select
             
         
         
With ObjLabel
            .Caption = 'Label TextBox ' & X
            .Left = VLblLeft: .Top = TopPlusHeight: .Width = LblWidth: .Height = LblHeigth
            .Tag = 'Thierry
's Demo'
            .Name = 'LblDemo' & X
         
End With
         
With ObjTextBox
            .Left = VTxbLeft: .Top = TopPlusHeight: .Width = TxbWidth: .Height = TxbHeigth
            .Tag = 'Thierry
's Demo'
            .Name = 'TxbDemo' & X
            .TextAlign = fmTextAlignRight
         
End With
         
        TopPlusHeight = TopPlusHeight + 15
   
Next

VBA.UserForms.Add(ObjUSF.Name).Show
 
Set ObjUSF = Nothing
Set ObjTextBox = Nothing
Set ObjLabel = Nothing
End Sub

Bien sur, si il faut ensuite générer des macros évènementielles pour chcune de ces TextBoxs, voici comment je m'y prends

Sub MacroWrite() 'lol !!
Dim I As Byte
Dim MyString As String

   
For I = 1 To 40
   
            MyString = MyString & 'Private
Sub TxbDemo' & I & '_Change()' & vbCrLf & _
                                  'TheTextBoxChecker' & ' ' & I & vbCrLf & _
                                  'End Sub' & vbCrLf & vbCrLf
   
Next

With New DataObject
.SetText MyString
.PutInClipboard
End With

End Sub


IL suffit ensuite de faire CTRL + V dans le Private Module et d'attribuer une macro comprenant le passage d'argument...

Voilà, je pense que ça va plaire à Iffic et que ça va répondre à cette question de 'non-développeur', on prend vite l'habitude de se simplifier le plus la vie pour pouvoir ensuite se la compliquer avec les codes eux-même !! lol

Bonne Soirée
@+Thierry
 

Hervé

XLDnaute Barbatruc
Re:=> Cadeau \"UserForm en Chocolat Automatique\" !!

Bonjour

Iffic : ok je compremd mieux

Thierry : WAOUH, quelle démo, superbe travail.

Merci pour les explications.

A plus

Message édité par: Hervé, à: 26/03/2005 09:59
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> Cadeau \"UserForm en Chocolat Automatique\" !!

Bonjour Hervé, le Fil le Forum

De rien Hervé, je pense que tu vois mieux maintenant la portée et l'usage que l'on peut faire de savor générer des UserForms à la Volée par Programmation.

C'est aussi un peu comme ça que je gagne du temps professionnellement pour pouvoir le passer sur XLD !!! lol

Bonnes Fêtes de Pâques
@+Thierry

Message édité par: _Thierry, à: 26/03/2005 10:13
 

ChTi160

XLDnaute Barbatruc
Re:=> Cadeau \"UserForm en Chocolat Automatique\" !!

Salut '@+Thierry,Hervé,Michel,IFFIC'
bonjour le 'Forum'

une fois encore Thierry tu nous démontres qu'il ne faut pas te prendre pour une Cloche(Looooool)
Bonnes Fêtes de Pâques à toutes et à tous
Jean Marie

Message édité par: ChTi160, à: 26/03/2005 11:04
 
I

IFFIC

Guest
Bonjour à tous , bonjour boudoula
Comme je me plante dans les pseudos..N’est-t-il pas ?
J’évite l’énumération, mais le cœur y est.

Merci à tous.

Merci Thierry, encore une pièce en Or (Et pas une médaille en chocolat)
dans ma collection d’exemples.
P’têt n’avais-je pas tort de chercher dans ce sens ; je suis rassuré.

A boudoula :

Regarde ma mumuse dans le fichier joint
Peut-être un début à ta recherche.
(Enfin, si j’ai bien compris ta question !)

Plein de soleil et belles choses à vous

IFFIC
[file name=BOUTON DE PAQUES_20050326163130.zip size=16919]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/BOUTON DE PAQUES_20050326163130.zip[/file]
 

Pièces jointes

  • BOUTON DE PAQUES_20050326163130.zip
    16.5 KB · Affichages: 34

Hervé

XLDnaute Barbatruc
Bonjour

Pas mal, IFFIC, rigolo

En reprenant la superbe idée de Thierry, pour la gestion des positions des boutons via un select case.

Donc, en pièce jointe, création de bouton suivant le nombre de données dans la colonne A.

Code limité à 21 boutons, mais rien n'empèche d'aller plus loin, y'a qu'à voir la démo de thierry, lol.

Même le bouton de fermeture est crée dynamiquement

De plus, Boudoula, dans la pièce jointe gestion du module de classe.

le Gcommand étant un tableau, rien ne t'interdit de redéfinir celui-ci par un redim (........).

A plus

[file name=CREATION-BOUTON4_20050326181524.zip size=15729]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CREATION-BOUTON4_20050326181524.zip[/file]
 

Pièces jointes

  • CREATION-BOUTON4_20050326181524.zip
    15.4 KB · Affichages: 137
I

IFFIC

Guest
Re:=> Cadeau "UserForm en Chocolat Automatique" !!!

Bonsoir Thierry

Bonsoir le Forum, et Ha!!! tous..(A vos souhaits..)
J'déconne comme d'hab.

Sans oublier Hervé, à qui je fais un 'Coucou' sympa pour son aide,
et qui a tout compris dans ta démo de l'USF en chocolat.

Sauf que je suis un néophyte
(Néophyte venant du grec: P'tit con qui pose plein de question)

J'ai bidouillé pour faire que ton maquereau frétille
dans un module, dans un gros bouton de la sheet,
dans un USF au jolies couleur pascales....

Pascalien, peut-être, mais je n'y arrive pas.
Dommage !!!

Il y a des premières marches que j'ai oublié de fixer
sur l'escabeau de ma progression (Modeste) en VBA.

J'fais comment pour voir un peu mieux

Désolé d'abuser

Amicalement

IFFIC
 

Statistiques des forums

Discussions
312 228
Messages
2 086 420
Membres
103 205
dernier inscrit
zch