[VBA] Comment optimiser ce code ?

Résolu/Fermé
Spag-ET Messages postés 3 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 février 2005 - 1 févr. 2005 à 11:29
 lepirlouit - 19 juil. 2006 à 09:48
Bonjour, je travail sur VBA d'excel et j'aimerais insérer une variable avant un "="
du style :

For i = 1 To 10

UserForm1."Checkbox"&i.Caption = "toto" & i

Next i
Je veux que chaque CheckBox s'apelle toto1, toto2 etc.


pour éviter de faire ceci :
For i = 4 To 31

Range("A" & i).Select

    If i = 4 Then
' cliste est un UserForm et L1 une checbox ..
        cliste.L1.Caption = ActiveCell.FormulaR1C1 
    ElseIf i = 5 Then
        cliste.L2.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 6 Then
        cliste.L3.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 7 Then
        cliste.L4.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 8 Then
        cliste.L5.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 9 Then
        cliste.L6.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 10 Then
        cliste.L7.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 11 Then
        cliste.L8.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 12 Then
        cliste.L9.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 13 Then
        cliste.L10.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 14 Then
        cliste.L11.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 15 Then
        cliste.L12.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 16 Then
        cliste.L13.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 17 Then
        cliste.L14.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 18 Then
        cliste.L15.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 19 Then
        cliste.L16.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 20 Then
        cliste.L17.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 21 Then
        cliste.L18.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 22 Then
        cliste.L19.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 23 Then
        cliste.L20.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 24 Then
        cliste.L21.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 25 Then
        cliste.L22.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 26 Then
        cliste.L23.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 27 Then
        cliste.L24.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 28 Then
        cliste.L25.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 29 Then
        cliste.L26.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 30 Then
        cliste.L27.Caption = ActiveCell.FormulaR1C1
    ElseIf i = 31 Then
        cliste.L28.Caption = ActiveCell.FormulaR1C1
    End If

Next i


Merci !
A voir également:

5 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
1 févr. 2005 à 11:31
Salut,
En VBA je ne sais pas, mais en VB il existe un moyen, c'est je crois cliste.Control["nomducontrol"]
0
Spag-ET Messages postés 3 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 février 2005
1 févr. 2005 à 11:41
Le code est en VB,
J'ai essayé :
cliste.Control ["L"&i].Caption = ActiveCell.FormulaR1C1

ou
cliste.["L"&i].Caption = ActiveCell.FormulaR1C1

mais il me dit "Membre de méthode ou de donnée introuvable"
0
random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
1 févr. 2005 à 12:10
il y a deux facons d'adresser un controle
soir par son nom soit par son ordre
il faut employer une adresse
du genre userform.controls(i+décalage initial)
0
Spag-ET Messages postés 3 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 1 février 2005
1 févr. 2005 à 12:20
Trop cool ca marche !

Merci beaucoup à vous deux !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oui oubien pour ne pas devoir compter le décallage :

userform.controls("toto" & i)
0