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:

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
'--------------------------------------
A quoi sert cette ligne ?
Set Collect = New Collection
et celle là ?
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add Cl
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
'--------------------------------------
A quoi sert ce bout de code ?

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
'--------------------------------------
Public WithEvents ChkBx As MSForms.CheckBox
Que veut dire cette ligne ?


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