Problème de compatibilité entre macro et Outil protection de la feuille
1 réponse
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.
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
'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" a écrit dans le message de news:
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
Désolé,
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.
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
'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" <george@plustotdebout.fr> a écrit dans le message de
news:uC2Wms2DFHA.2508@TK2MSFTNGP09.phx.gbl...
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.
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
'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" a écrit dans le message de news:
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.