ERREUR DE COMPILATION - NOM AMBIGU DETECTE.

Résolu
Chateaudax05 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
 Paf -
Bonjour,

j'ai créé une checkbox liée à une macro qui permet d'afficher ou masquer une autre feuille de mon classeur si la case est cochée ou non, cette macro est la suivante et fonctionne parfaitement :
Private Sub checkbox1_click()
If CheckBox1.Value = True Then ActiveWorkbook.Sheets("Feuil3").Visible = True
If CheckBox1.Value = False Then ActiveWorkbook.Sheets("Feuil3").Visible = False
End Sub

Je souhaiterai lier une autre macro à cette même checkbox pour que le chiffre "1" s'affiche dans une cellule lorsque la case est cochée et le chiffre "0" lorsqu'elle est décochée. J'utilise la macro suivante :
Private Sub checkbox1_click()
If CheckBox1.Value Then
Range("D4").Value = "1"
Else
Range("D4").Value = "0"
End If
End Sub

Mais je me trouve confrontée à un message d'erreur : ERREUR DE COMPILATION - NOM AMBIGU DETECTE.

Je pense que c'est parce que je veux lier 2 macros à une même checkbox mais je n'arrive pas à résoudre cette erreur.

Merci de votre aide !

5 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Private Sub checkbox1_click()
If CheckBox1.Value = True Then 
  ActiveWorkbook.Sheets("Feuil3").Visible = True
  Range("D4").Value = 1 
Else
  ActiveWorkbook.Sheets("Feuil3").Visible = False
  Range("D4").Value = 0
End if
End Sub


RQ. Il faudra certainement préciser la feuille
Sheets(nom_feuille).Range("D4").Value =

Cdlmnt
0
Chateaudax05 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour CCM81 et merci de ta réponse,

j'ai utilisé ta solution ré-adaptée aux feuilles de mon fichier, de la façon suivante :

Private Sub checkbox2_click()
If CheckBox2.Value = True Then ActiveWorkbook.Sheets("Option Mise en service").Visible = True
Sheets("Proposition commerciale").Range("C65").Value = "1"
If CheckBox2.Value = False Then ActiveWorkbook.Sheets("Option Mise en service").Visible = False
Sheets("Proposition commerciale").Range("C65").Value = "0"
End Sub

La feuille "Option mise en service" est affichée ou masquée selon que la case est cochée ou non. Donc là pas de souci.
Par contre dans ma feuille "Proposition commerciale" que la case soit cochée ou non le résultat reste "0". Mon "1" ne s'affiche pas même si la case est cochée.

Qu'est-ce que je fais mal ??
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Tu n'as pas respecté la structure de mon code

If ... Then
instruction 1
instruction 2
Else
instruction 3
instruction 4
End If

Si tu préfères garder ta structure, utilises l'exemple de cs_Le Pivert (salut à toi) ci-dessous

Cordialement
0
Chateaudax05 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   > ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour CCM81,
j'avais dans un premier temps respecter ta structure mais j'avais un message d'erreur "Else sans if" et ça ne fonctionnait pas. Voilà pourquoi j'ai réadapté.
0
Chateaudax05 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   > Chateaudax05 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
avant le message "Else sans if" il me met "erreur de compilation"
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

comme ceci:

Private Sub CheckBox1_Change()
If CheckBox1.Value = True Then ActiveWorkbook.Sheets("Feuil3").Visible = True
If CheckBox1.Value = False Then ActiveWorkbook.Sheets("Feuil3").Visible = False
End Sub
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
 Range("D4").Value = "1"
Else
 Range("D4").Value = "0"
End If
End Sub



0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention  
 
bonjour,
tu peux peut-^tre te dispenser d'une macro avec la propriété "linked cell" du checkbox qui te renverra VRAI ou FAUX au lieu de 1 ou 0

(en mode création-clic droit-propriété)

si tu tiens au 1-0, dans une cellule à coté tu écris par ex =B2*1 (B2 étant la cellule liée)
0
Chateaudax05 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour à vous 3,

après maintes et maintes essais selon vos réponses et après un tas de messages d'erreurs de compilation, de syntaxes et autres, j'ai utilisé les 2 macros suivantes et ça marche :

Private Sub checkbox2_change()
If CheckBox2.Value = True Then ActiveWorkbook.Sheets("Option mise en service").Visible = True
If CheckBox2.Value = False Then ActiveWorkbook.Sheets("Option mise en service").Visible = False

End Sub

Private Sub checkbox2_Click()
If CheckBox2.Value = True Then ActiveWorkbook.Sheets("Proposition commerciale").Range("C65").Value = "1"
If CheckBox2.Value = False Then ActiveWorkbook.Sheets("Proposition commerciale").Range("C65").Value = "0"
End Sub

Merci pour votre aide.
0

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

Posez votre question
Paf
 
Bonjour à tous,


Pas compris pourquoi séparer en deux sub ?

a priori tout dans la sub ...Click doit fonctionner:

Private Sub CheckBox2_Click()
Worksheets("Option mise en service").Visible = CheckBox2.Value
Worksheets("Proposition commerciale").Range("C65").Value = CheckBox1.Value * -1
End Sub


A+
0