ERREUR DE COMPILATION - NOM AMBIGU DETECTE.

Résolu
Chateaudax05 Messages postés 13 Statut Membre -  
 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

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Chateaudax05 Messages postés 13 Statut Membre
       
      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
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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
      1. Chateaudax05 Messages postés 13 Statut Membre > ccm81 Messages postés 11033 Statut Membre
         
        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
      2. Chateaudax05 Messages postés 13 Statut Membre > Chateaudax05 Messages postés 13 Statut Membre
         
        avant le message "Else sans if" il me met "erreur de compilation"
        0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  4. Chateaudax05 Messages postés 13 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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