[VBA]déclarer var1,var2,var3...var100 en1Dim?
Résolu/Fermé
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
-
23 août 2010 à 16:01
nirG95 Messages postés 292 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 15 décembre 2010 - 25 août 2010 à 11:09
nirG95 Messages postés 292 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 15 décembre 2010 - 25 août 2010 à 11:09
Bonjour,
Est-il possible de déclarer plusieurs variables en public avec qu'une seule dim quand ils se suivent avec un numéro incrémental après ?
Merci beaucoup !
Est-il possible de déclarer plusieurs variables en public avec qu'une seule dim quand ils se suivent avec un numéro incrémental après ?
Merci beaucoup !
4 réponses
Bonjour,
Non ce n'est pas possible.
Et si c'était possible, alors ce serait ridicule.
Pourquoi ne pas utiliser un tableau de variables ?
Cordialement, M.
Non ce n'est pas possible.
Et si c'était possible, alors ce serait ridicule.
Pourquoi ne pas utiliser un tableau de variables ?
Cordialement, M.
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
Modifié par lml-mike le 23/08/2010 à 18:27
Modifié par lml-mike le 23/08/2010 à 18:27
En fait j'ai une 40aine de checkbox avec des variables stockées dedans dans un formulaire.
quand je valide ce formulaire, il me dit : "si la première checkbox est cochée, je place la variable dans un tableau", et fait pareil pour toutes les autres checkbox.
C'est présenté sous forme de checkbox pour un utilisateur lambda qui doit choisir parmis par cases à cocher divers options.
Tant pis, je ferais :
public var1, var2, var3, var4, var5...var38
Merci de l'info ;)
quand je valide ce formulaire, il me dit : "si la première checkbox est cochée, je place la variable dans un tableau", et fait pareil pour toutes les autres checkbox.
C'est présenté sous forme de checkbox pour un utilisateur lambda qui doit choisir parmis par cases à cocher divers options.
Tant pis, je ferais :
public var1, var2, var3, var4, var5...var38
Merci de l'info ;)
Bonjour,
Dans ce cas, le mieux est de nommer tous les checkbox pareil, et te servir de la propriété index.
Tu auras donc un genre de "tableau de checkbox", associé à un tableau de variables.
Ce sera surement beaucoup plus facile à gérer ; ca remplace tes 40 lignes de vérification de checkbox par une simple boucle de 3 lignes...
Cordialement, M.
Dans ce cas, le mieux est de nommer tous les checkbox pareil, et te servir de la propriété index.
Tu auras donc un genre de "tableau de checkbox", associé à un tableau de variables.
Ce sera surement beaucoup plus facile à gérer ; ca remplace tes 40 lignes de vérification de checkbox par une simple boucle de 3 lignes...
Cordialement, M.
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
24 août 2010 à 11:49
24 août 2010 à 11:49
Je peux pas les nommer pareil, il me dit "ambigous name"...De plus je ne vois pas la propriété index dans les propriétés de ma checkbox ... je dois m'y prendre mal :x
nirG95
Messages postés
292
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
15 décembre 2010
32
24 août 2010 à 13:29
24 août 2010 à 13:29
Bonjour,
Voilà un sujet qui pourra peut être t'aider :
https://forums.commentcamarche.net/forum/affich-2826090-vba-checkbox-et-groupe-de-controle
Cdlt.
Voilà un sujet qui pourra peut être t'aider :
https://forums.commentcamarche.net/forum/affich-2826090-vba-checkbox-et-groupe-de-controle
Cdlt.
nirG95
Messages postés
292
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
15 décembre 2010
32
24 août 2010 à 13:43
24 août 2010 à 13:43
un petit exemple en supposant que les checkbox sont nommées checkbox1; checkbox2 etc ...:
voilà le genre, après je ne sais pas comment tu attribus tes variable à tes checkbox.
Cdlt.
dim Controle as control //pour chaques controls de mon formulaire For Each Controle In me.Controls //si les 8 premiers caractère de mon controle vaut "checkbox" If Left(Controle.Name, 8) = "checkbox" Then //si mon controle est coché if Controle.value = true Then ** Je place ma variable dans mon tableau end if end if Next Controle
voilà le genre, après je ne sais pas comment tu attribus tes variable à tes checkbox.
Cdlt.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
24 août 2010 à 14:01
24 août 2010 à 14:01
Salut,
Ou alors s'ils sont nommés différemment :
sources : utiliser les controles dans un userform en VBA Excel
Ou alors s'ils sont nommés différemment :
Dim Ctrl As Control For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.CheckBox Then MsgBox Ctrl.Object.Value Next Ctrl
sources : utiliser les controles dans un userform en VBA Excel
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
25 août 2010 à 10:59
25 août 2010 à 10:59
Tout fonctionne à merveille !!!
Merci a NirG95 pour sa réponse très astucieuse !
Maintenant j'ai la possibilité de faire mon tableau en fonction de chaque case cochée de façon niquel ! Voici le code :
Merci encore !!!
Merci a NirG95 pour sa réponse très astucieuse !
Maintenant j'ai la possibilité de faire mon tableau en fonction de chaque case cochée de façon niquel ! Voici le code :
' code de deux types de checkbox : Public Sub Choix1_Click() prixtot = prixtotal.Value prix1 = 3 Choix1.Tag = prix1 If Choix1.Value = True Then prixtot = prixtot + prix1 Else prixtot = prixtot - prix1 End If prixtotal.Value = prixtot End Sub Public Sub Autre1_Click() If Autre1.Value = True Then Message1.Visible = True Message1b.Visible = True Text1.Visible = True Text1.Value = 0 prix_save = prixtotal.Value Else Message1.Visible = False Message1b.Visible = False Text1.Visible = False prixtotal.Value = prix_save End If End Sub Public Sub Text1_change() Dim prix As Single Dim prixtot As Single If Text1.Value = "" Then Exit Sub Else prix = Text1.Value End If prixtot = prix_save prixtot2 = prixtot + prix prixtotal.Value = prixtot2 If Text1.Value = "" Then Text1.Value = 0 Exit Sub End If Text1.Tag = prix End Sub Private Sub Text1_Enter() Text1.Value = "" End Sub Public Sub Text1_keypress(ByVal Keyascii As MSForms.ReturnInteger) If InStr("1234567890.", Chr(Keyascii)) = 0 _ Or InStr(Text1.Value, ".") <> 0 And Chr(Keyascii) = "." Then Keyascii = 0: Beep End If End Sub 'code du bouton valider Public Sub valider_Click() Dim choix_sand As Control Dim choix_sand2 As Control numpc = Sheets("PC").numpc Autre1.Tag = Text1.Tag Autre2.Tag = Text2.Tag Autre3.Tag = Text3.Tag Autre4.Tag = Text4.Tag Autre5.Tag = Text5.Tag For I = 1 To 38 Set choix_sand = Me.Controls("Choix" & I) If choix_sand.Value = True Then prix_conso = choix_sand.Tag Sheets("PC").Activate Range("d1").Activate ligne = Range("d1").Row col = Range("d1").Column While Cells(ligne, col).Value <> numpc ligne = ligne + 1 Wend Cells(ligne, col).Activate ActiveCell.Offset(0, 4).Activate While ActiveCell.Value <> "" ActiveCell.Offset(0, 1).Activate Wend ActiveCell.Value = Time ActiveCell.Offset(1, 0).Activate If I <= 26 Then ActiveCell.Value = "Sandwich" ElseIf I <= 32 Then ActiveCell.Value = "Salade" ElseIf I <= 34 Then ActiveCell.Value = "Pizza" ElseIf I <= 36 Then ActiveCell.Value = "Pâtes" ElseIf I <= 38 Then ActiveCell.Value = "Frites" End If ActiveCell.Offset(1, 0).Activate ActiveCell.Value = prix_conso ActiveCell.Offset(1, 0).Activate End If Next For J = 1 To 5 Set choix_sand2 = Me.Controls("Autre" & J) If choix_sand2.Value = True Then prix_conso = choix_sand2.Tag Sheets("PC").Activate Range("d1").Activate ligne = Range("d1").Row col = Range("d1").Column While Cells(ligne, col).Value <> numpc ligne = ligne + 1 Wend Cells(ligne, col).Activate ActiveCell.Offset(0, 4).Activate While ActiveCell.Value <> "" ActiveCell.Offset(0, 1).Activate Wend ActiveCell.Value = Time ActiveCell.Offset(1, 0).Activate If J = 1 Then ActiveCell.Value = "Sandwich" ElseIf J = 2 Then ActiveCell.Value = "Salade" ElseIf J = 3 Then ActiveCell.Value = "Pizza" ElseIf J = 4 Then ActiveCell.Value = "Pâtes" ElseIf J = 5 Then ActiveCell.Value = "Frites" End If ActiveCell.Offset(1, 0).Activate ActiveCell.Value = prix_conso ActiveCell.Offset(1, 0).Activate End If Next Unload Me End Sub
Merci encore !!!
nirG95
Messages postés
292
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
15 décembre 2010
32
25 août 2010 à 11:09
25 août 2010 à 11:09
Au plaisir ! Bonne continuation !
Cdlt.
Cdlt.
23 août 2010 à 16:15