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 SubBonsoir,
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 SubCordialement
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 SubLe 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
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.