VBA: Appel dynamiquement d'une méthode
Fermé
mvp19
-
27 janv. 2010 à 02:19
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 28 janv. 2010 à 11:01
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 28 janv. 2010 à 11:01
A voir également:
- VBA: Appel dynamiquement d'une méthode
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
3 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
27 janv. 2010 à 21:37
27 janv. 2010 à 21:37
Bonsoir,
essaie (en bouclant sur i) :
if Controls("CheckBox1_" & i).value=true then
eric
essaie (en bouclant sur i) :
if Controls("CheckBox1_" & i).value=true then
eric
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
27 janv. 2010 à 09:31
27 janv. 2010 à 09:31
Bonjour,
un petit exemple et pour le tester fais ceci.
1) une feuille excel qui se nomme Feuil1
2) un userform qui se nomme useform1
3) tu crées des checkboxes ( peut importe le nom )
4) tu copies ce code dans le userform
5) tu mets des noms sur la feuil1 en A1 jusqu'à Axxx (le nombre de checboxes)
6) tu execute l'userform et tu regardes ce qui se passe
ce qu'il fait....?
il lit chaque objet qui est référencé comme un contrôle ( le checkbox est un contrôle)
puis il teste si c'est un checkbox il récupère le nom sur la feuil1 en Axx et l'attribue au checkbox.
A+
un petit exemple et pour le tester fais ceci.
1) une feuille excel qui se nomme Feuil1
2) un userform qui se nomme useform1
3) tu crées des checkboxes ( peut importe le nom )
4) tu copies ce code dans le userform
5) tu mets des noms sur la feuil1 en A1 jusqu'à Axxx (le nombre de checboxes)
6) tu execute l'userform et tu regardes ce qui se passe
ce qu'il fait....?
il lit chaque objet qui est référencé comme un contrôle ( le checkbox est un contrôle)
puis il teste si c'est un checkbox il récupère le nom sur la feuil1 en Axx et l'attribue au checkbox.
Private Sub UserForm_Activate() Dim Ctrl As Control Dim i As Integer i = 1 For Each Ctrl In UserForm1.Controls If TypeOf Ctrl Is MSForms.CheckBox Then Ctrl.Caption = Sheets("Feuil1").Range("A" & i).Value i = i + 1 End If Next End Sub
A+
Bonjour, merci pour la réponse, sauf que je vais avoir le même problème...
en fait, j'ai 5 checkbox par ligne et j'aimerais parcourir chacune des lignes pour obtenir leurs valeurs.
pour la ligne 1, j'ai checkbox1_1, checkbox1_2... checkbox1_5
pour la ligne 2, j'ai checkbox2_1...
j'aimerais donc pouvoir faire une méthode dynamique qui recevrait la ligne en paramètre et qui me retournerait un tableau avec les cinq valeurs des checkbox.
Public function valeursCheckbox(ligne as long) as tableau
Dim reponse as tableau
for i = 0 to nbreDeCheckboxParLigne
if(checkbox & ligne & "_" & i.value = true) then => LA LIGNE QUI NE FONCTIONNE PAS
tableau[i] = true
end if
next
End
en fait, j'ai 5 checkbox par ligne et j'aimerais parcourir chacune des lignes pour obtenir leurs valeurs.
pour la ligne 1, j'ai checkbox1_1, checkbox1_2... checkbox1_5
pour la ligne 2, j'ai checkbox2_1...
j'aimerais donc pouvoir faire une méthode dynamique qui recevrait la ligne en paramètre et qui me retournerait un tableau avec les cinq valeurs des checkbox.
Public function valeursCheckbox(ligne as long) as tableau
Dim reponse as tableau
for i = 0 to nbreDeCheckboxParLigne
if(checkbox & ligne & "_" & i.value = true) then => LA LIGNE QUI NE FONCTIONNE PAS
tableau[i] = true
end if
next
End
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
28 janv. 2010 à 11:01
28 janv. 2010 à 11:01
personnellement je ne ferai pas une fonction mais j'utiliserai une tableau avec
une portée public.
ensuite je ferai une boucle comme le suggère Eric.
je te donne un exemple
' tablo1 et 2 sont déclarés au niveau du module
Public tablo1 as string ' contient "vrai" ou "faux"
Public tablo2 as string ' contient "vrai" ou "faux"
une portée public.
ensuite je ferai une boucle comme le suggère Eric.
je te donne un exemple
' tablo1 et 2 sont déclarés au niveau du module
Public tablo1 as string ' contient "vrai" ou "faux"
Public tablo2 as string ' contient "vrai" ou "faux"
Public Sub test2() ReDim tablo1(0) ReDim tablo2(0) i = 1 j = 1 For Each Ctrl In UserForm1.Controls If TypeOf Ctrl Is MSForms.CheckBox Then If Ctrl.Name = "CheckBox1_" & i Then ReDim Preserve tablo1(i) If Ctrl.Value Then tablo1(i) = "True" i = i + 1 Else tablo1(i) = "Faux" i = i + 1 End If End If If Ctrl.Name = "CheckBox2_" & j Then ReDim Preserve tablo1(j) If Ctrl.Value Then tablo1(i) = "True" j = j + 1 Else tablo2(j) = "Faux" j = j + 1 End If End If End If Next For i = 0 To UBound(tablo1) S = S & tablo1(i) & " / " Next MsgBox "Tablo1 contient" & S End Sub