Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème avec Private Sub...

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 !

Christian0258

XLDnaute Accro
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
 
Re : Problème avec Private Sub...

Bonjour, Je ne vois pas vraiment où la macro de JC pourrait poser pb, par contre déclares la variable c et vérifies
Code:
Private Sub Worksheet_Activate() 'auteur Boisgnontier
Dim c As Range
A+
kjin
 
Re : Problème avec Private 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+
 
Dernière édition:
Re : Problème avec Private Sub...

Re, le forum, kjin,

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

Peux-tu me dire.
Bien à toi,
Christian
 
Re : Problème avec Private Sub...

Salut Christian0258 et le forum
BIEN ça ne plante plus.
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)
Mais cette macro ne fait pas le boulot ?
1 - c'est une question ? Et qu'est-ce qu'elle est supposée faire (Lire moi poste précédent)?
A+
 
- 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

Discussions similaires

O
Réponses
3
Affichages
801
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…