Microsoft 365 insérer automatiquement une colonne après chaque semaine

aceathena

XLDnaute Nouveau
Bonjour,
Je souhaiterais créer un planning mensuel automatique. En saisissants le premier jour du mois toutes les autres dates s'affiche quelque soit le mois.
Jusque la pas de soucis
Mais je souhaiterais que les jours qui s'affichent soit du lundi au samedi et qu'a la place du dimanche, s’insère automatiquement une cellule commentaire.
La je suis perdue.
Pouvez-vous m'aider?
 

Pièces jointes

  • test.xlsx
    11 KB · Affichages: 7

job75

XLDnaute Barbatruc
Bonsoir aceathena, vgendron, JHA, Hasco,

Voyez le fichier joint et cette macro dans le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With [A7]
    If Intersect(Target, .Offset(1)) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Application.EnableEvents = False 'désactive les évènements
    .Offset(1).Select
    If Not IsDate(.Offset(1)) Then .EntireRow.Resize(2).ClearContents: GoTo 1
    .Offset(1) = DateSerial(Year(.Offset(1)), Month(.Offset(1)), 1) '1er jour du mois
    .Offset(1, 1).Resize(, 30) = "=IFERROR(IF(MONTH(RC[-1]+1)=MONTH(RC[-1]),RC[-1]+1,""""),"""")"
    .Resize(, 31) = "=IFERROR(IF(WEEKDAY(R[1]C)=1,""#N/A"",TEXT(R[1]C,""jjjj"")),"""")" 'jjjj pour version française
    .Resize(2, 31) = .Resize(2, 31).Value 'supprime les formules
    .Resize(, 31).SpecialCells(xlCellTypeConstants, 16).Offset(1) = ""
    .Resize(, 31).Replace "#N/A", "Commentaire"
    .Resize(2, 31).Columns.AutoFit 'ajuste les largeurs
1   Application.EnableEvents = True 'réactive les évènements
End With
With UsedRange: End With 'actualise la barre de défilement horizontale
End Sub
Modifiez ou validez la cellule A8.

Edit : ajouté l'avant-dernière ligne.

A+
 

Pièces jointes

  • test(1).xlsm
    19.6 KB · Affichages: 3
Dernière édition:

JHA

XLDnaute Barbatruc
Bonjour à tous,

Bonjour @job75 à qui je souhaite un bon rétablissement.

Tu as tout à fait raison mais ma nullité en VBA ne me permet pas de réaliser cet excellent code que tu as proposé 😭 .

Pour ma part, je fais donc un copier/collage spécial/valeur sur une autre feuille et je masque la feuille avec les formules :(.

JHA
 

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Avec le fichier précédent, si l'on entre 01/05/2022 en A8, A7 contient "Commentaire" car c'est un dimanche.

Mais on ne peut plus rien entrer ensuite en A8.

Pour y remédier utilisez ce fichier (2) avec :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [A7]
    If Intersect(Target, .Offset(1)) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Application.EnableEvents = False ' and not isdate(.offse les évènements
    .Offset(1).Select
    If Not IsDate(.Offset(1)) Then
        If .Value <> "Commentaire" Then .EntireRow.Resize(2).ClearContents
        GoTo 1
    End If
    .Offset(1) = DateSerial(Year(.Offset(1)), Month(.Offset(1)), 1) '1er jour du mois
    .Offset(1, 1).Resize(, 30) = "=IFERROR(IF(MONTH(RC[-1]+1)=MONTH(RC[-1]),RC[-1]+1,""""),"""")"
    .Resize(, 31) = "=IFERROR(IF(WEEKDAY(R[1]C)=1,""#N/A"",TEXT(R[1]C,""jjjj"")),"""")" 'jjjj pour version française
    .Resize(2, 31) = .Resize(2, 31).Value 'supprime les formules
    .Resize(, 31).SpecialCells(xlCellTypeConstants, 16).Offset(1) = ""
    .Resize(, 31).Replace "#N/A", "Commentaire"
    .Resize(2, 31).Columns.AutoFit 'ajuste les largeurs
1   Application.EnableEvents = True 'réactive les évènements
End With
With UsedRange: End With 'actualise la barre de défilement horizontale
End Sub
A+
 

Pièces jointes

  • test(2).xlsm
    19.6 KB · Affichages: 5

Discussions similaires

Réponses
24
Affichages
1 K

Statistiques des forums

Discussions
312 211
Messages
2 086 284
Membres
103 170
dernier inscrit
HASSEN@45