Déclaration de variables concernant des cases d'option de contrôle active X

kalawaya

XLDnaute Nouveau
Bonjour,

Je suis débutant en VBA et j'ai réalisé un formulaire de vente sous excel 2007 dans lequel des cases "d'option contrôle activeX" sont cochées par le vendeur. A la fermeture du fichier j'aimerais que toutes les cases se décochent pour que le prochain vendeur puisse avoir un formulaire vierge. J'ai nommé chacune de ces cases mais à la fermeture le fichier m'indique "erreur de compilation variable non définie" sur la ligne de ma feuille "thisworkbook" et sur le terme "cash" : Cash.Value = False. Je ne sais pas comment déclarer des cases d'options!. Voici mes lignes:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Worksheets("Vente").Activate

'Bouton Cash
Cash.Value = False

'Bouton Débit
Débit.Value = False

'Bouton Mastercard
Mastercard.Value = False

'Bouton Visa
Visa = False

End Sub
 

mth

XLDnaute Barbatruc
Re : Déclaration de variables concernant des cases d'option de contrôle active X

Bonjour,

J'imagine que tes contrôles font référence à des cellules, il suffit donc de remettre ces cellules à FAUX.
Par exemple:
Code:
Sub test()
With Sheets("Vente")
    .Range("A1") = False
    .Range("A2") = False
End With
End Sub

Si je suis à coté de la plaque, joins un extrait de fichier pour que l'on puisse voir de quoi il retourne.

Bon après-midi,

mth
 

Gorfael

XLDnaute Barbatruc
Re : Déclaration de variables concernant des cases d'option de contrôle active X

Salut kalawaya et le forum
J'ai nommé chacune de ces cases mais à la fermeture le fichier m'indique "erreur de compilation variable non définie" sur la ligne de ma feuille "thisworkbook" et sur le terme "cash" : Cash.Value = False. Je ne sais pas comment déclarer des cases d'options!
Pour les codes utilises les balises (icone # en mode avancé)
Code:
'Bouton Cash
    Cash.Value = False
Quand tu ne donne pas d'exemple, il faut qu'on soit en mesure de faire la jonction entre ton texte et ton code => tu parles de case à cocher dans ta description, et de bouton dans ton code ???

Ne m'y connaissant pas suffisamment en contrôle activeX, il faut que tu détermines tout seul la manière dont Excel référence ce type de contrôle.
Le plus simple, c'est de créer une macro "apprentissage" : sur 2003 => Menu Outils>>Macro>>nouvelle macro => lance une macro qui construit le code des actions que tu effectues. Il faut trouver la même chose sur ta version, puis cocher et décocher ta case d'option, arrêter la macro, puis aller voir le code : Il te suffit de rechercher l'élément auquel on attribue une valeur True, puis False et de le reproduire dans ton code suivant tes besoins.
Si tu n'arrives à l'adapter, donnes le code généré.

Sur 2003, ça donne un code du style :
Code:
Sheets("vente").shapes("Cash") = False


Le principe donné par mth reste valable : il ne sert à rien d'activer la feuille pour ça. juste de l'indiquer à Excel. Mais avec les ActiveX, c'est peut-être nécessaire.
A+
 
Dernière édition:

klin89

XLDnaute Accro
Re : Déclaration de variables concernant des cases d'option de contrôle active X

Bonjour à tous,

En supposant que les cases à cocher soient placées sur ta feuille de calcul, puisque je vois ceci :
Worksheets("Vente").Activate
Une boucle comme ceci :

VB:
.../...
Dim Obj As Object
For Each Obj In Sheets("Vente").DrawingObjects
  If TypeName(Obj.Object) = "CheckBox" Then
    Obj.Object.Value = False
  End If
Next
.../...

Klin89
 

kalawaya

XLDnaute Nouveau
Re : Déclaration de variables concernant des cases d'option de contrôle active X

Bonjour!

Merci pour vos réponses, désolé pour le terme "Bouton" dans ma macro (ce terme fait bien référence aux cases d'option contrôle active X), pour le terme "formulaire" je précise que ce n'est pas un USEFORM mais plutôt une feuille de calcul.

J'ai suivi les conseils de Gorfael: les lignes que tu proposes ne fonctionnent pas et l'enregistrement de la macro ne me transcrit que la sélection de la case d'option soit : Activesheets.Shapes("Cash").Select - le reste de mes manipulations dont le changement de true en False n'est pas inscrit (et je n'ai pas arrêté l'enregistrement de la macro au cours de mon exécution). Alors quid?

Le conseil de mth est super, je n'y avais pas pensé, sauf que en plus de décocher mes cases d'options la fermeture du fichier doit permettre d'en cacher certaines (et là les cases de références ne m'apporteront pas grand chose (désolé j'avais oublié de vous parler de cette donnée!)

je n'ai pas essayé les autres conseils car j'ai certaines autres cases d'options dans mon formulaire/feuille de calcul que je souhaite conserver "cochées" à la fermeture du fichier (voir conseils de laetitia90 ou de Klin89)

Qu'en pensez-vous?
 

laetitia90

XLDnaute Barbatruc
Re : Déclaration de variables concernant des cases d'option de contrôle active X

bonjour tous :):):):)
un peu surprise !!!! ton code au depart devrait marcher tu confonds pas la propriétée
caption & name ..... la c'est name
pas oblige d'activer la sheet

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets("Vente")
 .Cash = False
 .Débit = False
 .Mastercard = False
 .Visa = False
End With
End Sub

attention
 

kalawaya

XLDnaute Nouveau
Re : Déclaration de variables concernant des cases d'option de contrôle active X

Salut à toi Laetitia!

Ma caption et ma name ont le même nom ! pas de pb de ce côté. Par contre j'ai essayé tes lignes et ça marche! je ne comprends pas!?? j'ai au préalable enlevé l'activation de la sheet. Sur ton modèle, j'ai ajouté pour les cases qui doivent devenir invisibles à la fermeture, des lignes duetype: .Visa.Visible=False. ça fonctionne. Pourtant mes lignes semblaient bonnes, peut-être l'activation de la feuille? l'ajout d'un with? ?!
Merci encore Laetitia
 

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94