Problème de compatibilité entre macro et Outil protection de la feuille
Le
George

Hello à tous,
J'ai un problème avec une macro qui me dit que je dois déboguer des
commandes.
(j'ose pas trop y toucher avant d'avoir un avis)
les feuilles de mon classeur, son dotés de plusieurs fonctionnalités et l'un
d'elle
est le masquage des colonnes automatiquement selon la date du calendrier
utilisé
Ex: 31 jours en janvier = 31 colonnes
28 jours en février = 28 colonnes (3 masquées auto)
le message d'erreur me dit que la commande macro n'est pas compatible avec
la fonction de protections des feuilles.
J'en ai besoin pour que les utilisatrices de ce fichier n'aillent pas tout
trifatouiller.
Merci à ceux qui arriverons à m'aider.
Salutations à tous
George
J'ai un problème avec une macro qui me dit que je dois déboguer des
commandes.
(j'ose pas trop y toucher avant d'avoir un avis)
les feuilles de mon classeur, son dotés de plusieurs fonctionnalités et l'un
d'elle
est le masquage des colonnes automatiquement selon la date du calendrier
utilisé
Ex: 31 jours en janvier = 31 colonnes
28 jours en février = 28 colonnes (3 masquées auto)
le message d'erreur me dit que la commande macro n'est pas compatible avec
la fonction de protections des feuilles.
J'en ai besoin pour que les utilisatrices de ce fichier n'aillent pas tout
trifatouiller.
Merci à ceux qui arriverons à m'aider.
Salutations à tous
George
j'ai oublié de mettre la macro. La voici:
Erreur d'exécution '1004':
Impossible de définir la propriété Hidden de la classe Range.
[bouton] continué (grisé) // [bouton] Fin // [bouton] Débogage // [bouton]
aide
Lorsque je clique sur le débogage, voici la macro qui vient dont la ligne
suivante
plus bas est colorée:
Selection.EntireColumn.Hidden = False
(cette ligne comporte une flèche jaune et est
surlignée jaune)
Option Explicit
Public Deb#, Fin#, NbJours&, I As Date
Public Cell As Range, Li&, Col%
Public Weekend As Boolean
Public Debut As String
Public NbColonnesACacher As Integer
Public CellChange As Range
Public ModifierMois As Boolean
Sub CalendrierLudo()
' construit un calendrier
' choix de la cellule de départ par l'utilisateur
' choix des dates de début et fin de calendrier
Set Cell = ActiveSheet.Range("C7")
Err.Clear
Debut = "01/01/"
An = Range("AB3").Value
MoisEnCours = Range("R3").Value
Columns("AE:AG").Select
Selection.EntireColumn.Hidden = False
(cette ligne comporte une flèche jaune et est
surlignée jaune)
Call TesterLeMois
ActiveSheet.Range(Cells(7, 3), Cells(7, 33)).Select
With Selection
.Clear
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Deb = CDate(Debut & An)
Fin = Deb + NombreDeJours - 1
' MsgBox (Err.Number)
If Err <> 0 Then Exit Sub
Li = Cell.Row: Col = Cell.Column
For I = Deb To Fin
Cells(Li, Col).Value2 = I
If WeekDay(I, vbMonday) > 5 And Weekend = True Then
Cells(Li, Col).Interior.ColorIndex = 6
End If
' pour surligner les samedis, dimanches et fériés
If TYPEJOUR(I) = 1 Or TYPEJOUR(I) = 2 Then
' Cells(Li, Col).Interior.ColorIndex = 6
Cells(Li, Col).Interior.ColorIndex = 40
Cells(Li, Col).Interior.Pattern = xlGray25
End If
' Cells(Li, Col).NumberFormatLocal = "jjjj jj/mm/aaaa"
Cells(Li, Col).NumberFormatLocal = "jj"
Col = Col + 1
Next I
Call SuppressionQuadrillage
Call BordureLigneDeTitre
Call ColonnesACacher
Set Cell = Nothing
End Sub
'Cette fonction renvoie 0 si le jour passé en paramètre est un jour de
semaine,
'1 s'il s'agit d'un samedi ou d'un dimanche et 2 s'il s'agit d'un jour
férié.
'Valide jusqu'en 2099 et pour les jours fériés français
Function TYPEJOUR(D As Date)
'L. Longre
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long
A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes (Valables pour la France, à adapter pour la
Suisse)
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Samedi ou dimanche
If WeekDay(D, vbMonday) >= 6 Then TYPEJOUR = 1
End Select
End Function
"George" news: