Bonjour,
Je suis en train de créer une mise en forme de planning, mais je bloque sur certains points.
Pourriez vous s’il vous plait m’aider à résoudre le problème.
Dans la pièce jointe, il y a les questions que je me pose.
Merci par avance
planning.xlsx (23,4 Ko)
.
Bonjour pat44
Je vous renvoie votre fichier avec la formule pour les semaines
Mais j’ais une urgence et il faut que je parte
n’ayez crainte il y auras une autre personne du forum qui ce feras un plaisir de vous aidez désoler
votre fichier ====> planning.xlsx (22,7 Ko)
Cdlt
Merci pour le retour rapide.
Nickel pour la partie semaine, par contre juste une chose. Comment faire pour que cela suive du lundi au vendredi si on change le mois.
Bonjour à tous,
Pour résoudre tes problèmes de traits épais, de cellules fusionnées, tu sera obligé de passer par une macro.
Ok merci quand même. C’est dommage.
Re,
Tiens, teste ceci, si cela convient je te ferai une explication de la macro
Quand tu changes la date en B4, le reste se modifie tout seul
planning.xlsm (52,9 Ko)
Merci pour le coup de main.
J’ai testé ta version, mais lorsque je change de mois, le trait rouge ne suit pas le dimanche comme lors du test au moins de décembre.
Re,
Quelle version de ton Excel ?
La version que j’utilise est la 2013
Re,
Alors explique ce qui ne fonctionne pas, car j’ai la même version et chez moi cela fonctionne
Re,
Bizarre, tu changes le mois par la date en B4 ?
Lorsque je fait le manip de changer de date en B4, il me met un message d’erreur dans le VBA en surlignant Format.
Ci joint l’image d’erreur
message d’erreur.pdf (61,4 Ko)
Re,
sur celle ligne où se trouve format, remplace par celle-ci (il y a juste VBA. en plus)
Cells(9, i).Value = "Semaine " & VBA.Format(Application.WorksheetFunction.WeekNum(Cells(8, i).Value, 21), "00")
Mais dis moi comment tu changeais de date ?
Je précise que le classeur que tu m’as envoyé avec ma macro, fonctionne chez moi, donc il doit avoir un réglage sur ton Excel qui n’est pas correct
J’ai même effectué des essais sur 2010 et 2016 et c’est OK
Ca y est ça marche. Il fallait juste que je rajoute VBA. devant Format.
Maintenant, s’il te plait, pourrais tu m’expliquer ta macro.
Et merci pour ton aide.
Re,
Les macros avec explications
Option Explicit
Dim i%, Dc% 'Déclaration des variables pour les 2 macros
Private Sub Worksheet_Change(ByVal Target As Range) 'Si changement dans une cellule
On Error GoTo fin 'Si erreur và à Fin en bas de page pour sortir de la macro
If Not Application.Intersect(Target, Range("B4")) Is Nothing Then 'Si la cellule est B4 uniquement
Application.ScreenUpdating = False 'Désactive le rafraichissement d'écran
Dc = Cells(8, Columns.Count).End(xlToLeft).Column 'n° de la dernière colonne non vide de la ligne 8
Range(Cells(9, 6), Cells(9, Dc + 5)).MergeCells = False 'Supprime les cellules fusionnées de la ligne allant de colonne 9 à la dernière colonne +5 (en cas de changement de mois moins de 31 jours)
Range(Cells(9, 6), Cells(9, Dc + 5)).Interior.Color = xlNone 'Supprime les couleurs de la ligne allant de colonne 9 à la dernière colonne +5 (en cas de changement de mois moins de 31 jours)
Range(Cells(9, 6), Cells(9, Dc + 5)) = "" 'Supprime les données de la ligne allant de colonne 9 à la dernière colonne +5 (en cas de changement de mois moins de 31 jours)
Bordure 'lance la macro Bordure pour supprimer les bordures (dont la rouge) et replace les bordures normales
For i = 6 To Dc 'boucle sur les colonnes de 6(F) à DC
If Cells(10, i).Text = "lun" Then 'si le text de la colonne en ligne 10 contient "lun" alors
Range(Cells(9, i), Cells(9, i + 4)).MergeCells = True 'je fusionne et centre depuis la même colonne et jusqu'à la colonne +4 sur la ligne 9
Range(Cells(9, i), Cells(9, i + 4)).Interior.Color = RGB(204, 255, 255) ' je la colorise en bleu
Cells(9, i).Value = "Semaine " & VBA.Format(Application.WorksheetFunction.WeekNum(Cells(8, i).Value, 21), "00") 'je la nomme avec le N° de semaine
End If
If Cells(10, i).Text = "dim" Then 'si le text de la colonne en ligne 10 contient "dim" alors
Range(Cells(10, i), Cells(25, i)).Select 'je sélectionne depuis la colonne, les lignes allant de 10 à 25
With Selection.Borders(xlEdgeRight) 'et avec cette sélection, sur le bord droit
.LineStyle = xlContinuous 'je lui place une ligne continue
.Color = -16776961 'de couleur rouge
.Weight = xlThick 'de grosse épaisseur
End With
End If
Next i
Range("B4").Select 'Je me replace sur la cellule B4
End If
fin:
End Sub
Sub Bordure()
Range(Cells(10, 6), Cells(25, Dc + 5)).Select 'Je sélectionne de la ligne 10 colonne 6 à la ligne 25 dernière colonne +5
Selection.Borders(xlEdgeLeft).LineStyle = xlNone 'J'ôte les bordures
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range(Cells(10, 6), Cells(25, Dc)).Select 'Je sélectionne de la ligne 10 colonne 6 à la ligne 25 dernière colonne
With Selection.Borders(xlEdgeLeft) 'je remet des bordures
.LineStyle = xlContinuous 'continue
.ColorIndex = 0 'noire
.Weight = xlThin 'taille normale
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.ColorIndex = 0
.Weight = xlThin
End With
End Sub
Si le problème est résolu, n’oublie pas de passer le post en résolu
merci pour l’explication. Je regarde ca dans le détail et si cela fonctionne je coche Résolu.
Merci encore
Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.