création dynamique de procédures

  • Initiateur de la discussion Initiateur de la discussion amand81
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

amand81

Guest
Bonjour,

je souhaiterais savoir si il est possible de créer des procédures dynamiquement. Je m'explique:
J'ai un nombre de checkbox qui varient en fonction du nombre de colonnes non vides. Et je souhaiterais savoir s'il est possible de créer une procèdure du style :

For i=1 to nb_colonnes
'creer la procédure Sub CheckBox de i
next i


Je ne sais pas si c'est compréhensible, mais si vous souhaitez plus de renseignements, je peux essayer d'être plus explicite.

Merci d'avance de vous pencher sur mon problème.
 
Bonjour et merci de m'avoir répondu
Mais mes checkbox ne se trouve pas sur une UserForm mais sur une feuille, et je les créé ainsi :

Sub AjoutCheckBox()

Dim c As Range, myRange As Range
calcul_nb_colonnes nb_colonnes, tot_def, valor, code

'calcul d'indices particuliers
Set myRange = Range(Cells(33, 2), Cells(33, (valor - tot_def + 1))) 'je sélectionne là où je veux que mes cases apparaissent
i = 1
For Each c In myRange.Cells
ActiveSheet.CheckBoxes.Add((c.Left + 10), (c.Top - 1.5), c.Width, c.Height).Select
With Selection
.LinkedCell = c.Address
.Characters.Text = ''
.Name = c.Address
.Display3DShading = True
.Value = xlOn
End With
c.Select
With Selection
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, _
Formula1:='=' & c.Address & '=TRUE'
.FormatConditions(1).Font.ColorIndex = 6 'change for other color when ticked
.FormatConditions(1).Interior.ColorIndex = 6 'change for other color when ticked
.Font.ColorIndex = 2 'cell background color = White
End With
i = i + 1
Next
myRange.Select
End Sub


cette macro me permet de créer mes checkbox dynamiquement et j'aimerais savoir s'il est possible de créer mes Sub CheckBox_click() pareillement.
Merci
 
Rebonjour,

suite à vos réponses, j'ai donc introduit ces lignes dans ma macro
après
ActiveSheet.CheckBoxes.Add((c.Left + 10), (c.Top - 1.5), c.Width, c.Height).Select
With Selection
.LinkedCell = c.Address
.Characters.Text = ''
.Name = c.Address
.Display3DShading = True
.Value = xlOn
End With

Code = 'Sub ' & Selection.Name & '_Clic()' & vbCrLf
Code = Code & 'if Selection.Value= True Then' & vbCrLf
Code = Code & 'msgbox ''bonjour'' ' & vbCrLf
Code = Code & 'end if' & vbCrLf
Code = Code & 'end sub' & vbCrLf

With ActiveWorkbook.VBProject.vbcomponents(ActiveSheet.Name).codemodule
NextLine = .CountOfLines + 1
.InsertLines NextLine, Code
End With

Mais j'ai à nouveau un souci, dans ma feuille active, il m'inscrit

Sub ChkBox_1_Clic()
If Selection.Value = True Then
MsgBox 'bonjour'
End If
End Sub
et lorsque je le fais tourner, le problème suivant survient:
'erreur d'éxécution '13':
incompabilité de type'
Je ne sais pas comment résoudre ce problème, je vois bien qu'il ne devrait pas m'afficher 'Selection.Value = True ' mais je ne sais pas comment le transformer.
Merci d'avance pour vos réponses
 
Rebonjour,

J'ai réussit à modifier mon code pour qu'il fonctionne : à la place de
Code = Code & 'if Selection.Value= True Then' & vbCrLf

j'ai mis:
code = code & 'if Me.shapes.Item(' & i & ').OLEFormat.Object.Value= 1 Then ' & vbCrLf

et alors là ça fonctionne en faisant F5 mais lorsque je clique simplement sur la feuille, rien ne se passe alors que je devrais avoir mon MsgBox.

Quelqu'un aurait-il une solution à me proposer?
 
ca y est!!!
j'ai réussit àrésoudre une grosse partie de mon problème, il suffisait juste de rajouter ca

Selection.OnAction = 'Feuil2.' & Selection.Name & '_Click'

après ca

Code = 'Sub ' & Selection.Name & '_Clic()' & vbCrLf
Code = Code & 'if Selection.Value= True Then' & vbCrLf
Code = Code & 'msgbox ''bonjour'' ' & vbCrLf
Code = Code & 'end if' & vbCrLf
Code = Code & 'end sub' & vbCrLf


Merci à ceux qui ont réfléchit à mon pb.

et bonne fin de journée!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
1
Affichages
818
N
Réponses
2
Affichages
859
Nyco129
N
Retour