[VBA 2007] Etat d'une CheckBox

jhooles Messages postés 11 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 17 juin 2010 - 7 avril 2010 à 10:14
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 8 avril 2010 à 21:02
bonjour,

je veux développe sur VBA. j'aimerais utiliser les données dans une feuille afin de changer la valeur d'un checkbox dans une autre feuille mais dans le mm classeur. Je veux utiliser la commande sheets("nom de feuille qui contient le checkbox").nomdecheckbox.value mais je n'arrive pa à trouver le nom de check box ni son identifiant.

Quelqu'un pourrais m'aider s'il vous plait?

Je vous remercie.

8 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 avril 2010 à 10:57
Salut
Quoi ? On ne peut pas récupérer l'état d'une CheckBox placée sur une autre feuille ?
Sheets("Feuil2).CheckBox1.Value
renvoie bien False ou True, sans difficulté.
Si tu as placé une CheckBox sur une feuille :
- Dans la ToolBar "Contrôles", clique sur "Activer le mode Création"
- Clique ensuite sur la CheckBox que tu viens d'insérer
- Dans la barre de formule, tu dois lire ceci =INCORPORER("Forms.CheckBox.1";"")
Là, tu vois le nom de l'objet.
Tu peux aussi retrouver ce nom en regardant dans la liste de choix de fenêtre des Propriétés de l'éditeur VB.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
1
daffy17 Messages postés 106 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 22 avril 2010
7 avril 2010 à 10:32
Bonjour jhooles,
en fait, si je ne me trompe pas, il n'est pas possible d'accéder directement à la valeur de la checkbox. Cependant dans les propriétés de celle-ci il est possible de définir une cellule qui recevra la valeur de la checkbox. Il te suffira donc de récupérer la valeur contenu dans la cellule qui correspondra à la valeur de ta checkbox ("VRAI" ou "FAUX").

Pense cependant à comparer la valeur de la checkbox avec vbTrue ou vbFalse car selon la langue par défaut d'Excel les valeurs pourront être "TRUE" ou "FALSE" (pour l'anglais).
vbTrue et vbFalse renverra donc directement la valeur correspondant à la langue par défaut.
0
jhooles Messages postés 11 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 17 juin 2010
7 avril 2010 à 10:51
Je te remercie beaucoup.

Bonne journée.
0
daffy17 Messages postés 106 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 22 avril 2010
7 avril 2010 à 11:07
Et bien Jack tu confirmes qu'on peut donner des conseils et en recevoir.
Si j'avais su cela plus tôt, j'aurai pu simplifier certaine chose sur un ancien projet.
0

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

Posez votre question
jhooles Messages postés 11 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 17 juin 2010
7 avril 2010 à 11:26
bonjour,

je vois ce que tu dis. mais mon checkbox existe déjas.quand je clic droit su la checkbox c'est marqué case d'option 105. est ce que c'est équivalent à checkbox105 comme son nom.

merci.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 avril 2010 à 13:31
"mais mon checkbox existe déjas"
On est bien d'accord.
Les manips que je t'ai proposé partent du principe que tu as déjà posé ta CheckBox.

"quand je clic droit su la checkbox c'est marqué"
Moi, quand je fais un clic-droit, j'ai un menu contextuel qui apparait.
Alors quand tu dois "c'est marqué", c'est où ?
Si besoin, fais nous une copie d'écran.
As-tu choisi "Propriétés" dans ce menu contextuel ?
Dans ce cas, le nom de l'objet est en face de "(Name)"

Confirme-nous une chose : Tu es bien sous Excel ? Quelle version ?

Ce qui me parait bizarre, c'est que tu vois "Case d'option", ce qui voudrait dire que tu as placé une OptionButton et pas une CheckBox.

Sans ces éléments, difficile de t'aider plus.
Essaye d'être plus précis.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jhooles Messages postés 11 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 17 juin 2010
8 avril 2010 à 11:58
Bonjour,

Excusez moi pour n'avoir pas été claire.
Je vous fourni mon code et le contenu du fichier excel.
Il se trouve à l'adresse suivant:

http://www.mediafire.com/i/?kjz3j4y2g5t

http://www.mediafire.com/i/?mykj1qn3jdu

Quand je débogue mon programme, j'obtiens comme erreur: La méthode ou la propriété n'existe pas.

Si vous avez le temps vous pouvez y jeter un coup d'œil.

Je vous remercie.

Bonne journée
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 avril 2010 à 21:02
Bon, tu as bien fait de passer ces copies d'écran, ça a permis d'apprendre une info importante : Tu utilises Excel 2007 !
Voilà 36h de perdues bêtement !

Sous Office 2007, les composants sont répertoriés en deux catégories :
- Les controles 'internes', plus ou moins liés au html si j'ai bien compris
- Les controles 'externes', des composants ActiveX.
Les ActiveX nécessitent des ressources particulières (dll ou ocx) qui sont en standard dans Windows, mais qui ne sont pas du tout gérés de la même manière (plus facile à mon gout mais la techno évolue ...).

Donc toi, tu as utilisé des composants de la catégorie "Controles de formulaire".
J'ai enregistré une macro pendant que j'insérai une CheckBox de ce type, puis que je l'ai sélectionnée pour modifier son texte.
Résultat :
    ActiveSheet.Shapes("Check Box 1").Select
    Selection.Characters.Text = "Case à cocher 4012"

Donc, pour lire l'état d'un CheckBox de ce type, la manip est la même :
    Sheets(1).Shapes("Check Box 1").Select
    MsgBox Selection.Value

Les nouveautés apportant leur lot de bizarreries, quand tu lis l'état d'une CheckBox de ce type, elle renvoie :
1 Pour 'Cochée'
-4146 Pour 'Décochée'
Mieux vaut donc utiliser les variables systèmes offertes, exemple pour faire changer d'état la CheckBox à chaque click sur le bouton :
Sub Bouton1_Clic()
    Sheets(1).Shapes("Check Box 1").Select
    Debug.Print Selection.Value
    If Selection.Value = Checked Then
        Selection.Value = Unchecked
        ' Voir aussi 'Gray' qui est un état indéterminé
        ' cela pourrait être une solution pour toi
    Else
        Selection.Value = Checked
    End If
End Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous