Comment nommé une seconde VBA Worksheet sur la même feuille

Bonjour à tous,

Je souhaiterais être aidé à propos de la dénomination d'une VBA Worksheet. En effet, j’ai ajouté une nouvelle VBA Worksheet sous une autre mais elle ne fonctionne pas. Lorsque je clique sur la cellule concernée (D22) j’obtiens le message suivant :

« Erreur de compilation Nom ambigu détecté : Worksheet_Change »

La VBA en question fonctionne très bien sur une autre feuille du même classeur. (j'ai changé uniquement les cellules)

Merci du coup de main.

Voici la copie de la fenêtre VBA de mon fichier :

Private Sub Workbook_Open()

Application.DisplayFullScreen = True

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$G$146" Then

Select Case UCase(Range("G146"))

Case "OUI"

ActiveSheet.Shapes("Flèche droite 8").Visible = True

ActiveSheet.Shapes("Flèche droite 22").Visible = True

ActiveSheet.Shapes("Flèche droite 26").Visible = False

ActiveSheet.Shapes("Flèche droite 25").Visible = False

Case "NON"

ActiveSheet.Shapes("Flèche droite 8").Visible = False

ActiveSheet.Shapes("Flèche droite 22").Visible = False

ActiveSheet.Shapes("Flèche droite 26").Visible = True

ActiveSheet.Shapes("Flèche droite 25").Visible = True

End Select

End If

End Sub

(c’est celle-ci qui ne fonctionne pas)

Private Sub Worksheet_Change(ByVal R As Range)

If R.Address <> "$D$22" Then Exit Sub

Me.Unprotect "XXX"

Range("23:51,62:67,83:86").EntireRow.Hidden = IIf(R = "Non", 1, 0)

Me.Protect "XXX"

End Sub

Patrick75 a écrit :

Private Sub Worksheet_Change(ByVal R As Range)

Bonjour,

C'est bizarre ta procédure, à mon avis tu ne devrait pas changer les paramètres de cette fonction évenmentielle. Joins-nous un fichier avec la macro pour tester et préconiser une solution.

Bonjour Raja,

merci pour ton intervention.

je joins la première feuille de mon classeur où j'ai le problème de "nom ambigu" du Worksheet.

Cordialement,

Patrick

13depenses.xlsm (63.59 Ko)

Re,

La feuille est protégée !!!!

Pardon....

le mot de passe est XXX

( soit 3 X majuscules)

cordialement

Patrick

Re,

Je n'ai rien compris malgré le fichier. Essaye le code suivant pour éviter le message d'erreur :

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$G$86" Then
        Select Case UCase(Range("G86"))
            Case "OUI"
                ActiveSheet.Shapes("Flèche droite 8").Visible = True
                ActiveSheet.Shapes("Flèche droite 22").Visible = True
                ActiveSheet.Shapes("Flèche droite 26").Visible = False
                ActiveSheet.Shapes("Flèche droite 25").Visible = False
            Case "NON"
                ActiveSheet.Shapes("Flèche droite 8").Visible = False
                ActiveSheet.Shapes("Flèche droite 22").Visible = False
                ActiveSheet.Shapes("Flèche droite 26").Visible = True
                ActiveSheet.Shapes("Flèche droite 25").Visible = True
        End Select
    ElseIf Target.Address = "$B$37" Then
        Me.Unprotect "XXX"
        Range("38:55").EntireRow.Hidden = IIf(Target = "Non", 1, 0)
        Me.Protect "XXX"
    End If
  End Sub

Edit : Merci à Banzai pour la correction

Merci Raja de m'aider

Pour le moment, ta proposition ne fonctionne pas.

J'ai tenté autre chose. J'ai supprimé la 1ère VBA Worksheet_Change, alors la seconde fonctionne (fichier joint). Donc c'est un problème qui se crée entre les deux Worksheet_Change.

Comme le disait mon premier e-mail, lorsque j'ai les deux Worksheet_Change à suivre et que je tente de répondre "oui" ou "non" dans la cellule B37, cela produit le message « Erreur de compilation Nom ambigu détecté : Worksheet_Change ». Pourquoi ce nom "Worksheet_Change est ambigu pour Excel ?

Lorsque tu dis que tu n'as pas compris, c'est sur quoi que porte ton incompréhension ?

Merci en tout cas

Cordialement

Patrick

8depenses-2.xlsm (65.48 Ko)

Bonsoir

Patrick75 a écrit :

Pourquoi ce nom "Worksheet_Change est ambigu pour Excel ?

L'interpréteur a trouvé plus d'une procédure ayant le même nom alors il pense que tu as fait une erreur en donnant plusieurs fois le même nom et il ne sait pas comment s'en sortir d'où l'ambiguïté

Oui c'est assez capillotracté mais je ne pense pas être loin de la bonne interprétation (sinon désolé)

Le code de Raja fonctionne bien

Il suffit de placer le code dans le bon endroit (Module de la feuille)

A tester

Merci Bonzai64 pour tes explications.

Je ne sais pas bien encore ce que veut dire mettre le code au bon endroit et ce qu'est le module de la feuille mais je vais chercher à comprendre.

J'ai commencé à m'intéressé aux possibilités de la VBA il y a tout juste un an [cf. Excel Download ]. Je n'irai pas très loin en programmation mais Excel est une occupation très agréable pour moi.

Bref, en effet, le code fonctionne très bien. Je présente mes excuses auprès de Raja.

Comme d'habitude, je dois transposé tout ça dans mon fichier sur lequel je travaille. Justement, tu as dû voir que j'avais réussi à transposer le code pour faire apparaître des objets sur une feuille en fonction de la réponse "oui" "non" sur une cellule. ça n'a l'air de rien mais ça m'a demandé de comprendre le lien qu'il y avait entre l'objet lui-même et sa désignation dans le code.....

Je garde toutes les explications reçues dans un dossier dans lequel je vais puiser quand j'ai besoin.

Merci encore

Bien cordialement,

Patrick

Le code fonctionne parfaitement sur mon fichier

je vous remercie, Raja et Bonzai64 pour votre aide

bien cordialement

Patrick

Rechercher des sujets similaires à "comment nomme seconde vba worksheet meme feuille"