Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un
format spécial pour les jours fériés concernés :
- en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les
Français ...)
- les cellules comportant les numéros des jours du calendrier sont reportées
dans la cellule AB5 nommée ChampsFeries
(AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de
cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à
mentionner Holiday dans les cellules les plus centrales, et à colorer le
tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon
bloc, mais ailleurs !...
J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le
jour férié.
Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé, et
aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le
fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count =
1 And Not temoin Then
temoin = True
For Each c In Range(Range("ChampFeries"))
If c <> "" Then
If Day(Target) = Day(c) Then
MsgBox (CByte(c.Rows))
MsgBox (CByte(c.Columns))
Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4,
c.Columns + 1)).Select
With Selection
.ClearContents
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2,
c.Columns + 1)).Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
.Value = "Holiday"
End With
Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4,
c.Columns + 1)).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
End If
End If
Next c
temoin = False
End If
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
h2so4
bonjour,
remplace rows par row et columns par column
--
h2so4 play triogical at http://www.triogical.com "François" wrote in message news:
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un format spécial pour les jours fériés concernés : - en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les Français ...) - les cellules comportant les numéros des jours du calendrier sont reportées dans la cellule AB5 nommée ChampsFeries (AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à mentionner Holiday dans les cellules les plus centrales, et à colorer le tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon bloc, mais ailleurs !... J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le jour férié. Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé, et aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then temoin = True
For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = Day(c) Then MsgBox (CByte(c.Rows)) MsgBox (CByte(c.Columns)) Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2, c.Columns + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
bonjour,
remplace rows par row et columns par column
--
h2so4
play triogical at http://www.triogical.com
"François" <nospam@nospam.fr> wrote in message
news:ezWBaWjtHHA.412@TK2MSFTNGP04.phx.gbl...
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un
format spécial pour les jours fériés concernés :
- en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les
Français ...)
- les cellules comportant les numéros des jours du calendrier sont
reportées
dans la cellule AB5 nommée ChampsFeries
(AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de
cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à
mentionner Holiday dans les cellules les plus centrales, et à colorer le
tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon
bloc, mais ailleurs !...
J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le
jour férié.
Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé,
et
aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le
fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then
temoin = True
For Each c In Range(Range("ChampFeries"))
If c <> "" Then
If Day(Target) = Day(c) Then
MsgBox (CByte(c.Rows))
MsgBox (CByte(c.Columns))
Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4,
c.Columns + 1)).Select
With Selection
.ClearContents
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2,
c.Columns + 1)).Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
.Value = "Holiday"
End With
Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4,
c.Columns + 1)).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
End If
End If
Next c
temoin = False
End If
End Sub
h2so4 play triogical at http://www.triogical.com "François" wrote in message news:
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un format spécial pour les jours fériés concernés : - en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les Français ...) - les cellules comportant les numéros des jours du calendrier sont reportées dans la cellule AB5 nommée ChampsFeries (AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à mentionner Holiday dans les cellules les plus centrales, et à colorer le tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon bloc, mais ailleurs !... J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le jour férié. Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé, et aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then temoin = True
For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = Day(c) Then MsgBox (CByte(c.Rows)) MsgBox (CByte(c.Columns)) Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2, c.Columns + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
JP25
Bonjour Proc modifiée rows par row columns par column Devant l'erreur de renvoi, j'ai decalé dans la proc les selections column voir le lien http://cjoint.com/?gylJ3Q4C3D
-- Cordialement JP25
"François" a écrit dans le message de news:
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un format spécial pour les jours fériés concernés : - en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les Français ...) - les cellules comportant les numéros des jours du calendrier sont reportées dans la cellule AB5 nommée ChampsFeries (AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à mentionner Holiday dans les cellules les plus centrales, et à colorer le tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon bloc, mais ailleurs !... J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le jour férié. Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé, et aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then temoin = True
For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = Day(c) Then MsgBox (CByte(c.Rows)) MsgBox (CByte(c.Columns)) Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2, c.Columns + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
Bonjour
Proc modifiée rows par row columns par column
Devant l'erreur de renvoi, j'ai decalé dans la proc les selections column
voir le lien
http://cjoint.com/?gylJ3Q4C3D
--
Cordialement
JP25 NoSpam-jpmonnier@tele2.fr
"François" <nospam@nospam.fr> a écrit dans le message de news:
ezWBaWjtHHA.412@TK2MSFTNGP04.phx.gbl...
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un
format spécial pour les jours fériés concernés :
- en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les
Français ...)
- les cellules comportant les numéros des jours du calendrier sont
reportées
dans la cellule AB5 nommée ChampsFeries
(AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de
cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à
mentionner Holiday dans les cellules les plus centrales, et à colorer le
tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon
bloc, mais ailleurs !...
J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le
jour férié.
Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé,
et
aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le
fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then
temoin = True
For Each c In Range(Range("ChampFeries"))
If c <> "" Then
If Day(Target) = Day(c) Then
MsgBox (CByte(c.Rows))
MsgBox (CByte(c.Columns))
Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4,
c.Columns + 1)).Select
With Selection
.ClearContents
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2,
c.Columns + 1)).Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
.Value = "Holiday"
End With
Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4,
c.Columns + 1)).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
End If
End If
Next c
temoin = False
End If
End Sub
Bonjour Proc modifiée rows par row columns par column Devant l'erreur de renvoi, j'ai decalé dans la proc les selections column voir le lien http://cjoint.com/?gylJ3Q4C3D
-- Cordialement JP25
"François" a écrit dans le message de news:
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un format spécial pour les jours fériés concernés : - en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les Français ...) - les cellules comportant les numéros des jours du calendrier sont reportées dans la cellule AB5 nommée ChampsFeries (AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à mentionner Holiday dans les cellules les plus centrales, et à colorer le tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon bloc, mais ailleurs !... J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le jour férié. Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé, et aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then temoin = True
For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = Day(c) Then MsgBox (CByte(c.Rows)) MsgBox (CByte(c.Columns)) Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2, c.Columns + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
François
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une erreur de cible. La correction que JP25 a apportée, atteind ses limites de fonctionnement lorsque l'on sélectionne une date fériée en limite de tableau comme le 07/07/07, où la correction induit des valeurs de row et column négatives qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
"JP25" a écrit dans le message de news:
Bonjour Proc modifiée rows par row columns par column Devant l'erreur de renvoi, j'ai decalé dans la proc les selections column voir le lien http://cjoint.com/?gylJ3Q4C3D
-- Cordialement JP25
"François" a écrit dans le message de news:
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un format spécial pour les jours fériés concernés : - en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les Français ...) - les cellules comportant les numéros des jours du calendrier sont reportées dans la cellule AB5 nommée ChampsFeries (AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à mentionner Holiday dans les cellules les plus centrales, et à colorer le tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon bloc, mais ailleurs !... J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le jour férié. Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé, et aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then temoin = True
For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = Day(c) Then MsgBox (CByte(c.Rows)) MsgBox (CByte(c.Columns)) Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2, c.Columns + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait
échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une
erreur de cible.
La correction que JP25 a apportée, atteind ses limites de fonctionnement
lorsque l'on sélectionne une date fériée en limite de tableau comme le
07/07/07, où la correction induit des valeurs de row et column négatives qui
font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
"JP25" <nospam-jpmonnier@tele2.fr> a écrit dans le message de news:
OoHHMNktHHA.1168@TK2MSFTNGP02.phx.gbl...
Bonjour
Proc modifiée rows par row columns par column
Devant l'erreur de renvoi, j'ai decalé dans la proc les selections column
voir le lien
http://cjoint.com/?gylJ3Q4C3D
--
Cordialement
JP25 NoSpam-jpmonnier@tele2.fr
"François" <nospam@nospam.fr> a écrit dans le message de news:
ezWBaWjtHHA.412@TK2MSFTNGP04.phx.gbl...
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un
format spécial pour les jours fériés concernés :
- en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les
Français ...)
- les cellules comportant les numéros des jours du calendrier sont
reportées
dans la cellule AB5 nommée ChampsFeries
(AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de
cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à
mentionner Holiday dans les cellules les plus centrales, et à colorer le
tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le
bon
bloc, mais ailleurs !...
J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour
le
jour férié.
Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé,
et
aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le
fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then
temoin = True
For Each c In Range(Range("ChampFeries"))
If c <> "" Then
If Day(Target) = Day(c) Then
MsgBox (CByte(c.Rows))
MsgBox (CByte(c.Columns))
Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4,
c.Columns + 1)).Select
With Selection
.ClearContents
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle =
xlNone
.Interior.ColorIndex = xlNone
End With
Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2,
c.Columns + 1)).Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
.Value = "Holiday"
End With
Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4,
c.Columns + 1)).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
End If
End If
Next c
temoin = False
End If
End Sub
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une erreur de cible. La correction que JP25 a apportée, atteind ses limites de fonctionnement lorsque l'on sélectionne une date fériée en limite de tableau comme le 07/07/07, où la correction induit des valeurs de row et column négatives qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
"JP25" a écrit dans le message de news:
Bonjour Proc modifiée rows par row columns par column Devant l'erreur de renvoi, j'ai decalé dans la proc les selections column voir le lien http://cjoint.com/?gylJ3Q4C3D
-- Cordialement JP25
"François" a écrit dans le message de news:
Bonjour à tous,
Dans un calendrier, j'utilise la procédure Worksheet_Change pour créer un format spécial pour les jours fériés concernés : - en AJ1:AX1, j'ai la déclaration des jours fériés (pas seulement les Français ...) - les cellules comportant les numéros des jours du calendrier sont reportées dans la cellule AB5 nommée ChampsFeries (AB5 -> A5:N5,A10:N10,A15:N15,A20:N20,A25:N25,A30:N30)
Le lancement du Worksheet_Change vise à supprimer le contenu du bloc de cellule (sur 5 lignes et 2 colonnes) se référant au jour férié à créér, à mentionner Holiday dans les cellules les plus centrales, et à colorer le tout en bleu.
Le problème, est que la procédure ne fait pas les modifications sur le bon bloc, mais ailleurs !... J'ai fait afficher en msgbox les coordonnées de la cellule trouvée pour le jour férié. Ainsi pour un 10/07/07 supposé férié, il me donne 11 pour c.Rows trouvé, et aussi 11 pour c.Columns ce qui est donc faux ! ?
Ce n'est peut-être pas très clair (?), alors vous pouvez consulter le fichier en Cjoint : http://cjoint.com/?gyj6cguX3m
Je mets le code ci-dessous.
Merci à tous.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
1 And Not temoin Then temoin = True
For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = Day(c) Then MsgBox (CByte(c.Rows)) MsgBox (CByte(c.Columns)) Range(Cells(c.Rows + 1, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Rows + 2, c.Columns), Cells(c.Rows + 2, c.Columns + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Rows, c.Columns), Cells(c.Rows + 4, c.Columns + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
h2so4
"François" wrote in message news:
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une erreur de cible. La correction que JP25 a apportée, atteind ses limites de fonctionnement lorsque l'on sélectionne une date fériée en limite de tableau comme le 07/07/07, où la correction induit des valeurs de row et column négatives qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique initiale de décalage est correcte. le problème vient de la fonction day. Je te propose donc de changer l'instruction suivante
If Day(Target) = Day(c) Then
par
If Day(Target) = c Then
--
h2so4
"François" <nospam@nospam.fr> wrote in message
news:uIN1EsktHHA.4916@TK2MSFTNGP05.phx.gbl...
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait
échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une
erreur de cible.
La correction que JP25 a apportée, atteind ses limites de fonctionnement
lorsque l'on sélectionne une date fériée en limite de tableau comme le
07/07/07, où la correction induit des valeurs de row et column négatives
qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique
initiale de décalage est correcte. le problème vient de la fonction day.
Je te propose donc de changer l'instruction suivante
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une erreur de cible. La correction que JP25 a apportée, atteind ses limites de fonctionnement lorsque l'on sélectionne une date fériée en limite de tableau comme le 07/07/07, où la correction induit des valeurs de row et column négatives qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique initiale de décalage est correcte. le problème vient de la fonction day. Je te propose donc de changer l'instruction suivante
If Day(Target) = Day(c) Then
par
If Day(Target) = c Then
--
h2so4
h2so4
"François" wrote in message news:
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une erreur de cible. La correction que JP25 a apportée, atteind ses limites de fonctionnement lorsque l'on sélectionne une date fériée en limite de tableau comme le 07/07/07, où la correction induit des valeurs de row et column négatives qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique initiale de décalage est correcte. le problème vient de la fonction day. Je te propose donc de changer l'instruction suivante
If Day(Target) = Day(c) Then
par
If Day(Target) = c Then
Dim temoin As Boolean Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count = 1 And Not temoin Then temoin = True For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = c Then MsgBox c.Row MsgBox c.Column Range(Cells(c.Row + 1, c.Column), Cells(c.Row + 4, c.Column + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Row + 2, c.Column), Cells(c.Row + 2, c.Column + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Row, c.Column), Cells(c.Row + 4, c.Column + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
--
h2so4
"François" <nospam@nospam.fr> wrote in message
news:uIN1EsktHHA.4916@TK2MSFTNGP05.phx.gbl...
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui
m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une
erreur de cible.
La correction que JP25 a apportée, atteind ses limites de fonctionnement
lorsque l'on sélectionne une date fériée en limite de tableau comme le
07/07/07, où la correction induit des valeurs de row et column négatives
qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique
initiale de décalage est correcte. le problème vient de la fonction day.
Je te propose donc de changer l'instruction suivante
If Day(Target) = Day(c) Then
par
If Day(Target) = c Then
Dim temoin As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count =
1 And Not temoin Then
temoin = True
For Each c In Range(Range("ChampFeries"))
If c <> "" Then
If Day(Target) = c Then
MsgBox c.Row
MsgBox c.Column
Range(Cells(c.Row + 1, c.Column), Cells(c.Row + 4,
c.Column + 1)).Select
With Selection
.ClearContents
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
Range(Cells(c.Row + 2, c.Column), Cells(c.Row + 2,
c.Column + 1)).Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
.Value = "Holiday"
End With
Range(Cells(c.Row, c.Column), Cells(c.Row + 4, c.Column
+ 1)).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
End If
End If
Next c
temoin = False
End If
End Sub
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une erreur de cible. La correction que JP25 a apportée, atteind ses limites de fonctionnement lorsque l'on sélectionne une date fériée en limite de tableau comme le 07/07/07, où la correction induit des valeurs de row et column négatives qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique initiale de décalage est correcte. le problème vient de la fonction day. Je te propose donc de changer l'instruction suivante
If Day(Target) = Day(c) Then
par
If Day(Target) = c Then
Dim temoin As Boolean Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count = 1 And Not temoin Then temoin = True For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = c Then MsgBox c.Row MsgBox c.Column Range(Cells(c.Row + 1, c.Column), Cells(c.Row + 4, c.Column + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Row + 2, c.Column), Cells(c.Row + 2, c.Column + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Row, c.Column), Cells(c.Row + 4, c.Column + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
--
h2so4
François
Tout à fait,
Le problème venait effectivement de là ....
Merci à toi
François
"h2so4" a écrit dans le message de news: Tctfi.32385$
"François" wrote in message news:
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une erreur de cible. La correction que JP25 a apportée, atteind ses limites de fonctionnement lorsque l'on sélectionne une date fériée en limite de tableau comme le 07/07/07, où la correction induit des valeurs de row et column négatives qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique initiale de décalage est correcte. le problème vient de la fonction day. Je te propose donc de changer l'instruction suivante
If Day(Target) = Day(c) Then
par
If Day(Target) = c Then
Dim temoin As Boolean Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count = 1 And Not temoin Then temoin = True For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = c Then MsgBox c.Row MsgBox c.Column Range(Cells(c.Row + 1, c.Column), Cells(c.Row + 4, c.Column + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Row + 2, c.Column), Cells(c.Row + 2, c.Column + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Row, c.Column), Cells(c.Row + 4, c.Column + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub
--
h2so4
Tout à fait,
Le problème venait effectivement de là ....
Merci à toi
François
"h2so4" <h2so4enlevezmoi@pandora.be> a écrit dans le message de news:
Tctfi.32385$cz5.1747101@phobos.telenet-ops.be...
"François" <nospam@nospam.fr> wrote in message
news:uIN1EsktHHA.4916@TK2MSFTNGP05.phx.gbl...
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui
m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une
erreur de cible.
La correction que JP25 a apportée, atteind ses limites de fonctionnement
lorsque l'on sélectionne une date fériée en limite de tableau comme le
07/07/07, où la correction induit des valeurs de row et column négatives
qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique
initiale de décalage est correcte. le problème vient de la fonction day.
Je te propose donc de changer l'instruction suivante
If Day(Target) = Day(c) Then
par
If Day(Target) = c Then
Dim temoin As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count
= 1 And Not temoin Then
temoin = True
For Each c In Range(Range("ChampFeries"))
If c <> "" Then
If Day(Target) = c Then
MsgBox c.Row
MsgBox c.Column
Range(Cells(c.Row + 1, c.Column), Cells(c.Row + 4,
c.Column + 1)).Select
With Selection
.ClearContents
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
Range(Cells(c.Row + 2, c.Column), Cells(c.Row + 2,
c.Column + 1)).Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
.Value = "Holiday"
End With
Range(Cells(c.Row, c.Column), Cells(c.Row + 4, c.Column
+ 1)).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
End If
End If
Next c
temoin = False
End If
End Sub
"h2so4" a écrit dans le message de news: Tctfi.32385$
"François" wrote in message news:
Bonjour JP25, Bonjour H2SO4,
Merci beaucoup pour avoir corrigé l'erreur des rows et columns qui m'avait échappée...
Effectivement, il reste toujours un décalage de valeurs qui induit une erreur de cible. La correction que JP25 a apportée, atteind ses limites de fonctionnement lorsque l'on sélectionne une date fériée en limite de tableau comme le 07/07/07, où la correction induit des valeurs de row et column négatives qui font bogger le programme !
Je ne comprend pas pour quoi un tel décalage ?
Merci à vous deux pour votre aide
François
François,
Mis à part le problème de s a rows et à columns, je pense que ta logique initiale de décalage est correcte. le problème vient de la fonction day. Je te propose donc de changer l'instruction suivante
If Day(Target) = Day(c) Then
par
If Day(Target) = c Then
Dim temoin As Boolean Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AJ1:AX1")) Is Nothing And Target.Count = 1 And Not temoin Then temoin = True For Each c In Range(Range("ChampFeries")) If c <> "" Then If Day(Target) = c Then MsgBox c.Row MsgBox c.Column Range(Cells(c.Row + 1, c.Column), Cells(c.Row + 4, c.Column + 1)).Select With Selection .ClearContents .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone .Interior.ColorIndex = xlNone End With Range(Cells(c.Row + 2, c.Column), Cells(c.Row + 2, c.Column + 1)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True .Value = "Holiday" End With Range(Cells(c.Row, c.Column), Cells(c.Row + 4, c.Column + 1)).Select With Selection.Interior .ColorIndex = 37 .Pattern = xlSolid End With End If End If Next c temoin = False End If End Sub