Bug dans une macro

Bonjour

j'ai une macro qui me sert à masquer des feuilles, et elle ne marche plus du tout, je ne sais pas d'où vient l'erreur

lien effacé

En gros les onglets P5 des feuilles mensuelles ont toutes la même valeur automatiquement, et la valeur définie masque automatiquement certaines feuilles mensuelles

Voici le code

Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Dim AD As String
    If Target.Count > 1 Then Exit Sub
    Select Case Sh.Name
        Case "Stats annuelles": AD = "$O$24"
        Case "Aout": AD = "$Q$24"
        Case "Septembre": AD = "$Q$24"
        Case "Octobre": AD = "$Q$24"
        Case "Novembre": AD = "$Q$24"
        Case "Décembre": AD = "$Q$24"
        Case "Janvier": AD = "$Q$24"
        Case "Février": AD = "$Q$24"
        Case "Mars": AD = "$Q$24"
        Case "Avril": AD = "$Q$24"
        Case "Mai": AD = "$Q$24"
        Case "Juin": AD = "$Q$24"
    End Select
    If Target.Address = AD Then
        Application.EnableEvents = False
        Sheets("Stats annuelles").Range("$O$24") = Target.Value
        Sheets("Aout").Range("$Q$24") = Target.Value
        Sheets("Septembre").Range("$Q$24") = Target.Value
        Sheets("Octobre").Range("$Q$24") = Target.Value
        Sheets("Novembre").Range("$Q$24") = Target.Value
        Sheets("Décembre").Range("$Q$24") = Target.Value
        Sheets("Janvier").Range("$Q$24") = Target.Value
        Sheets("Février").Range("$Q$24") = Target.Value
        Sheets("Mars").Range("$Q$24") = Target.Value
        Sheets("Avril").Range("$Q$24") = Target.Value
        Sheets("Mai").Range("$Q$24") = Target.Value
        Sheets("Juin").Range("$Q$24") = Target.Value

        Application.EnableEvents = True
    End If

    If Target.Count > 1 Then Exit Sub
    Select Case Sh.Name
        Case "Aout": AD = "$P$5"
        Case "Septembre": AD = "$P$5"
        Case "Octobre": AD = "$P$5"
        Case "Novembre": AD = "$P$5"
        Case "Décembre": AD = "$P$5"
        Case "Janvier": AD = "$P$5"
        Case "Février": AD = "$P$5"
        Case "Mars": AD = "$P$5"
        Case "Avril": AD = "$P$5"
        Case "Mai": AD = "$P$5"
        Case "Juin": AD = "$P$5"
    End Select
    If Target.Address = AD Then
        Application.EnableEvents = False
        Sheets("Aout").Range("$P$5") = Target.Value
        Sheets("Septembre").Range("$P$5") = Target.Value
        Sheets("Octobre").Range("$P$5") = Target.Value
        Sheets("Novembre").Range("$P$5") = Target.Value
        Sheets("Décembre").Range("$P$5") = Target.Value
        Sheets("Janvier").Range("$P$5") = Target.Value
        Sheets("Février").Range("$P$5") = Target.Value
        Sheets("Mars").Range("$P$5") = Target.Value
        Sheets("Avril").Range("$P$5") = Target.Value
        Sheets("Mai").Range("$P$5") = Target.Value
        Sheets("Juin").Range("$P$5") = Target.Value

        Application.EnableEvents = True
    End If

   End Sub

    If Target.Count > 1 Then Exit Sub
    Select Case Sh.Name
        Case "Stats annuelles": AD = "$D$28"
        Case "Données": AD = "$C$9"
    End Select
    If Target.Address = AD Then
        Application.EnableEvents = False
        Sheets("Stats annuelles").Range("$D$28") = Target.Value
        Sheets("Données").Range("$C$9") = Target.Value

        Application.EnableEvents = True
    End If

End Sub

Bonsoir,

Les codes feuilles ont été modifiés?

Je te propose de remplacer dans toutes les feuilles mois Janvier, Février, ...

Le code actuel par celui-ci:

J'ai modifié les lignes suivantes

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [P5]) Is Nothing Then

code...

end if

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [P5]) Is Nothing Then
    If [P5] = "Afficher tous les onglets" Then
    Sheets("Aout").Visible = True
    Sheets("Septembre").Visible = True
    Sheets("Octobre").Visible = True
    Sheets("Novembre").Visible = True
    Sheets("Décembre").Visible = True
    Sheets("Janvier").Visible = True
    Sheets("Février").Visible = True
    Sheets("Mars").Visible = True
    Sheets("Avril").Visible = True
    Sheets("Mai").Visible = True
    Sheets("Juin").Visible = True
    Sheets("(Old) Octobre").Visible = True

    End If

    If [P5] = "Afficher Aout" Then
    Sheets("Aout").Visible = True
    Sheets("Septembre").Visible = False
    Sheets("Octobre").Visible = False
    Sheets("Novembre").Visible = False
    Sheets("Décembre").Visible = False
    Sheets("Janvier").Visible = False
    Sheets("Février").Visible = False
    Sheets("Mars").Visible = False
    Sheets("Avril").Visible = False
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Septembre" Then
    Sheets("Aout").Visible = True
    Sheets("Septembre").Visible = True
    Sheets("Octobre").Visible = False
    Sheets("Novembre").Visible = False
    Sheets("Décembre").Visible = False
    Sheets("Janvier").Visible = False
    Sheets("Février").Visible = False
    Sheets("Mars").Visible = False
    Sheets("Avril").Visible = False
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Octobre" Then
    Sheets("Aout").Visible = True
    Sheets("Septembre").Visible = True
    Sheets("Octobre").Visible = True
    Sheets("Novembre").Visible = False
    Sheets("Décembre").Visible = False
    Sheets("Janvier").Visible = False
    Sheets("Février").Visible = False
    Sheets("Mars").Visible = False
    Sheets("Avril").Visible = False
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Novembre" Then
    Sheets("Aout").Visible = False
    Sheets("Septembre").Visible = True
    Sheets("Octobre").Visible = True
    Sheets("Novembre").Visible = True
    Sheets("Décembre").Visible = False
    Sheets("Janvier").Visible = False
    Sheets("Février").Visible = False
    Sheets("Mars").Visible = False
    Sheets("Avril").Visible = False
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Décembre" Then
    Sheets("Aout").Visible = False
    Sheets("Septembre").Visible = False
    Sheets("Octobre").Visible = True
    Sheets("Novembre").Visible = True
    Sheets("Décembre").Visible = True
    Sheets("Janvier").Visible = False
    Sheets("Février").Visible = False
    Sheets("Mars").Visible = False
    Sheets("Avril").Visible = False
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Janvier" Then
    Sheets("Aout").Visible = False
    Sheets("Septembre").Visible = False
    Sheets("Octobre").Visible = False
    Sheets("Novembre").Visible = True
    Sheets("Décembre").Visible = True
    Sheets("Janvier").Visible = True
    Sheets("Février").Visible = False
    Sheets("Mars").Visible = False
    Sheets("Avril").Visible = False
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Février" Then
    Sheets("Aout").Visible = False
    Sheets("Septembre").Visible = False
    Sheets("Octobre").Visible = False
    Sheets("Novembre").Visible = False
    Sheets("Décembre").Visible = True
    Sheets("Janvier").Visible = True
    Sheets("Février").Visible = True
    Sheets("Mars").Visible = False
    Sheets("Avril").Visible = False
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Mars" Then
    Sheets("Aout").Visible = False
    Sheets("Septembre").Visible = False
    Sheets("Octobre").Visible = False
    Sheets("Novembre").Visible = False
    Sheets("Décembre").Visible = False
    Sheets("Janvier").Visible = True
    Sheets("Février").Visible = True
    Sheets("Mars").Visible = True
    Sheets("Avril").Visible = False
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Avril" Then
    Sheets("Aout").Visible = False
    Sheets("Septembre").Visible = False
    Sheets("Octobre").Visible = False
    Sheets("Novembre").Visible = False
    Sheets("Décembre").Visible = False
    Sheets("Janvier").Visible = False
    Sheets("Février").Visible = True
    Sheets("Mars").Visible = True
    Sheets("Avril").Visible = True
    Sheets("Mai").Visible = False
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Mai" Then
    Sheets("Aout").Visible = False
    Sheets("Septembre").Visible = False
    Sheets("Octobre").Visible = False
    Sheets("Novembre").Visible = False
    Sheets("Décembre").Visible = False
    Sheets("Janvier").Visible = False
    Sheets("Février").Visible = False
    Sheets("Mars").Visible = True
    Sheets("Avril").Visible = True
    Sheets("Mai").Visible = True
    Sheets("Juin").Visible = False
    Sheets("(Old) Octobre").Visible = False

    End If

    If [P5] = "Afficher Juin" Then
    Sheets("Aout").Visible = False
    Sheets("Septembre").Visible = False
    Sheets("Octobre").Visible = False
    Sheets("Novembre").Visible = False
    Sheets("Décembre").Visible = False
    Sheets("Janvier").Visible = False
    Sheets("Février").Visible = False
    Sheets("Mars").Visible = False
    Sheets("Avril").Visible = True
    Sheets("Mai").Visible = True
    Sheets("Juin").Visible = True
    Sheets("(Old) Octobre").Visible = False

    End If
End If
End Sub

Cordialement

Pas souvenir de modifications, non, merci ton code marche très bien

C'est le code que j'ai donné en haut que j'ai modifié et je n'arrive pas à retomber sur mes pattes

La macro sert à avoir la même valeur dans toutes les cellules P5, j'ai du mal effacer une partie d'un code

Bonjour,

En P5 tu as ce qu'on appelle une liste de validation (déroulante) qui te permet de faire un choix dans la liste. Il faut donc déclencher la macro seulement sur le changement de cette cellule et non toutes les cellules de la feuille.

C'est pourquoi j'ai modifié le début du code.

Voici ton fichier avec les modifications faites. https://www.cjoint.com/c/GAij7yOv3Ar

Sur l'onglet Contrainte, tu avais aussi une erreur. C'était le même code que dans les feuilles mois. J'ai fait la modif pour I5 et non P5

Bonne continuation.

Cordialement

Merci pour ton aide

Dans ton fichier l'automatisation de l'onglet P5 ne se fait pas

J'ai essayé avec ce code et ça marche très bien

  Option Explicit
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    Dim AD As String

        If Target.Count > 1 Then Exit Sub
        Select Case Sh.Name
            Case "Aout": AD = "$P$5"
            Case "Septembre": AD = "$P$5"
            Case "Octobre": AD = "$P$5"
            Case "Novembre": AD = "$P$5"
            Case "Décembre": AD = "$P$5"
            Case "Janvier": AD = "$P$5"
            Case "Février": AD = "$P$5"
            Case "Mars": AD = "$P$5"
            Case "Avril": AD = "$P$5"
            Case "Mai": AD = "$P$5"
            Case "Juin": AD = "$P$5"
        End Select
        If Target.Address = AD Then
            Application.EnableEvents = False
            Sheets("Aout").Range("$P$5") = Target.Value
            Sheets("Septembre").Range("$P$5") = Target.Value
            Sheets("Octobre").Range("$P$5") = Target.Value
            Sheets("Novembre").Range("$P$5") = Target.Value
            Sheets("Décembre").Range("$P$5") = Target.Value
            Sheets("Janvier").Range("$P$5") = Target.Value
            Sheets("Février").Range("$P$5") = Target.Value
            Sheets("Mars").Range("$P$5") = Target.Value
            Sheets("Avril").Range("$P$5") = Target.Value
            Sheets("Mai").Range("$P$5") = Target.Value
            Sheets("Juin").Range("$P$5") = Target.Value

            Application.EnableEvents = True
        End If

       End Sub

Le problème c'est que j'ai d'autres codes et quand je l'ai mets tous ensembles ça ne va pas

Il est à quel endroit ce code?

Cordialement

This Workbook

j'ai demandé cette précision car sur le premier fichier que tu as mis en ligne un end sub perturbé le code du thisworkbook.

J'ai remis ton code en place.

Désormais, sur ce que j'ai , je n'ai pas de message d'erreur.

Ce qui est sûr c'est qu'il y a beaucoup d'interactivité entre les feuilles.

Si tu as encore contact avec la personne qui a codé le fichier, tu devrais te mettre ne rapport avec lui.

Si tu veux je mets en téléchargement le fichier.

Cordialement

Il n'y a pas de messages d'erreurs mais la macro n'est pas appliquée

Avec le dernier fichier que tu as posté, les cellules P5 de chaque feuille mensuelle ne sont plus liées

C'est moi qui ait codé le fichier

Mais je fais ça de façon un peu artisanale, sans grande connaissance des macros, en faisant une modification j'ai du supprimer ou ajouter une partie ce qui a fait buggé le truc

Je retrouverais où est le problème mais pour l'instant je vois pas d'où ça vient

Merci en tout cas pour le temps que tu as passé

De rien, bonne continuation.

Rechercher des sujets similaires à "bug macro"