Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour à tout le forum,
Je vous souhaite le meilleur pour cette nouvelle Année.
Je souhaiterais votre aide pour ce problème de "cohabitation" avec Private Sub...
si je laisse Option Explicit ça plante sur C variable non définie
si j'enlève Option Explicit la macro de JCGL ne fonctionne pas ?
Option Explicit
Private Sub ToggleButton1_Click() 'auteur JCGL
ActiveSheet.Unprotect
Application.ScreenUpdating = 0
If ToggleButton1 = False Then
ToggleButton1.Caption = "Afficher tous les jours"
Call MasqueEssai
Else
ToggleButton1.Caption = "Afficher les jours ouvrés"
Call AfficheEssai
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Private Sub Worksheet_Activate() 'auteur Boisgnontier
ActiveSheet.Unprotect ' ajouter par moi ?
For Each C In [ZonePlan1]
C.Interior.ColorIndex = xlNone
On Error Resume Next
C.Interior.ColorIndex = [Couleurs].Find(C, LookAt:=xlWhole).Interior.ColorIndex
C.Font.ColorIndex = [Couleurs].Find(C.Value, LookAt:=xlWhole).Font.ColorIndex ' ajouter par moi ?
Next C
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ' ajouter par moi ?
End Sub
Salut Christian0258 et le forum Bonne et heureuse année 2011
Utilise les balises de code (# en mode avancé)
Option Explicit : En tête de module, oblige à déclarer les variables utilisées sur tout le module. Ça permet d'éviter les fautes de frappe.
Code:
Private Sub Worksheet_Activate() 'd'après une macro de Boisgontier
ActiveSheet.Unprotect ' ajouter par moi ?
For Each C In [ZonePlan1]
C.Interior.ColorIndex = xlNone
C.Font.ColorIndex = xlNone
On Error Resume Next
C.Interior.ColorIndex = [Couleurs].Find(C, LookAt:=xlWhole).Interior.ColorIndex
C.Font.ColorIndex = [Couleurs].Find(C.Value, LookAt:=xlWhole).Font.ColorIndex ' ajouter par moi ?
Next C
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ' ajouter par moi ?
End Sub
Attribuer une macro à une personne, alors qu'on l'a modifiée...
Ne pas déclarer ses variables impose à Excel de le faire... et suivant la loi de Murphy, faut pas s'étonner du résultat !
Juste le code, c'est pas la meilleure façon d'avoir ce qu'on veut : on est obligé de comprendre l'algorithme pour dépanner, est si c'est pas le bon...
Vu le code, il faut déclarer C en plage de cellules (Dim C as Range)
À tout hasard, vérifie les autres "variables" :
- ZonePlan1 doit être une plage nommée
- Couleurs doit être une plage nommée
A+
Merci, kjin, pour ton aide.
BIEN ça ne plante plus.
Mais cette macro ne fait pas le boulot ?
Private Sub Worksheet_Activate() 'auteur Boisgnontier
Dim c As Range
ActiveSheet.Unprotect
For Each c In [ZonePlan1]
c.Interior.ColorIndex = xlNone
On Error Resume Next
c.Interior.ColorIndex = [Couleurs].Find(c, LookAt:=xlWhole).Interior.ColorIndex
c.Font.ColorIndex = [Couleurs].Find(c.Value, LookAt:=xlWhole).Font.ColorIndex
Next c
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
C'est une question !
S'il s'agit d'attribuer une couleur prédéfinie à une valeur, encore faut-il que la valeur corresponde, et sans fichier difficile de cerner le pb.
En tout cas le pb ne vient pas du code !
A+
kjin
Faux ! Tu as l'instruction "On Error Resume Next" en cas d'erreur, aller à la ligne suivante => Ça efface les erreurs détectées par excel et il ne t'avertit pas. Comme c'est une macro modifiée, je ne peux être sûr de moi, mais ça m'étonnerait fort que Boisgontier l'ai mise à l'intérieur d'une boucle, sans relancer la gestion des erreurs (On error Goto 0)
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD