Bonjour à tous,
J'ai quelques notions de VBA (très empiriques) pour l'avoir utilisé plusieurs fois sur plusieurs projets, mais ce coup-ci je cale. J'aurais besoin d'aide pour:
1) Utiliser un form (ou le créer via vba).
2) Utiliser sur ce form des checkboxs (nombre de checkbox définit par avance:25) mais dont la 'caption' serait une variable (ex: checkbox1.caption=A1;checkbox1.caption=A2; etc), j'ai cru comprendre qu'il faut donc automatiquement créer ces checkboxs à chaque fois que l'on active le formulaire via vba, et jusque là ça peut aller (en fouillant j'ai trouvé des bouts de syntaxe ici et là).
3) A chaque fois qu'une checkbox est cochée, elle renvoie dans une plage une certaine valeur (la même valeur que la caption de la checkbox).
Mes problèmes sont que n'ayant jamais utilisé les forms ni checkbox auparavant (et encore moins via VBA), je ne comprends pas comment structurer une macro qui intéragisse à la fois avec le userform, ses controles, et avec les différentes feuilles du classeur.
J'ai trouvé plusieurs styles de codes relativement explicites qui permettaient chacun, en l'adaptant, de faire une partie du travail.
Mais dès que j'insère mes boucles avec variables dans le code et veux insérer les macros sur événements (quand on clique sur une checkbox plutôt qu'une autre), cela ne marche qu'à moitié ou se bloque, j'ai par exemple remarqué que je n'arrive pas à designer telle action sur TELLE checkbox plutôt qu'une autre, même avec le "Name" de la checkbox.
Je suis tombé sur un code qui faisait appel à un module de classe (que j'ai donc créé) mais que je n'ai jamais réussi à adapter à mes besoins même si le code en lui même fonctionne parfaitement. En outre, il y a dans ce dernier code plusieurs lignes dont je ne comprends ni l'utilité, ni le fonctionnement, tout en sachant que si je les enlève plus rien ne fonctionne...
En voici quelques exemples:
A quoi sert cette ligne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 '-------------------------------------- 'Procédure de création des CheckBoxs à placer dans l'UserForm. 'L'UserForm doit préalablement contenir un bouton nommé CommandButton1 Option Explicit Private Sub CommandButton1_Click() Dim Obj As Control Dim Cl As Classe1 Dim i As Integer Set Collect = New Collection For i = 1 To 3 'boucle pour la création des CheckBox Set Obj = Me.Controls.Add("forms.Checkbox.1") With Obj .Name = "moncheckbox" & i .Object.Caption = "le texte" & i .Left = 140 .Top = 30 * i + 10 .Width = 50 .Height = 20 End With 'ajout de l'objet dans la classe Set Cl = New Classe1 Set Cl.ChkBx = Obj Collect.Add Cl Next i End Sub '--------------------------------------
et celle là ?Set Collect = New Collection
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add ClA quoi sert ce bout de code ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 '-------------------------------------- 'A placer dans un module standard Option Explicit Public Collect As Collection '--------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 '-------------------------------------- 'A placer dans un module de classe nommé "Classe1" ' Option Explicit Public WithEvents ChkBx As MSForms.CheckBox 'Exemple pour gérer l'évènement clic sur les objets type CheckBox Private Sub ChkBx_Click() 'cet exemple affiche le nom et la valeur de l'objet cliqué MsgBox ChkBx.Name & ": " & ChkBx.Value End Sub '--------------------------------------Que veut dire cette ligne ?Public WithEvents ChkBx As MSForms.CheckBox
J'ai créé le module de classe, mais je n'arrive pas à comprendre comment lui désigner d'autres checkbox auxquelles assigner des actions...
Bref plus j'en lis, moi j'ai les idées claires :/
J'ai beaucoup testé pour rien, et je n'ai pas trouvé (ou su cherché) de tutos qui me permetteraient de rendre un code fonctionnant et sans incohérence.
Ca fait plusieurs jours que je cherche et que je teste mais rien n'avance donc je viens chercher de l'aide parmi les pros!
J'espère avoir été aussi clair que possible,
D'avance merci à ceux qui prendront la peine de me lire
Max
Partager