chaelie2015
XLDnaute Accro
Bonjour Forum
Le code ci-dessous réalise les actions suivantes :
Merci d'avance.
Le code ci-dessous réalise les actions suivantes :
- Définit la feuille de travail "CRT".
- Récupère le mois et l'année sélectionnés.
- Annule la fusion et vide le contenu des cellules dans la colonne A (A17:B47).
- Si le mois est valide, il détermine le dernier jour du mois et remplit les cellules correspondantes.
- Masque ou affiche les lignes vides dans la colonne A (A17:B47).
- Fusionne à nouveau les cellules dans la colonne A (A17:B47)
Merci d'avance.
VB:
Sub RemplirDates()
Dim ws As Worksheet ' Déclaration de la feuille de travail
Dim mois As Integer ' Variable pour le mois sélectionné (en chiffre)
Dim annee As Integer ' Variable pour l'année sélectionnée
Dim dernierJour As Integer ' Variable pour le dernier jour du mois
Dim i As Integer ' Variable pour la boucle
' Définir la feuille de travail "CRT"
Set ws = ThisWorkbook.Sheets("CRT")
' Récupérer le mois sélectionné (en chiffre) dans la cellule AM6
' et l'année sélectionnée dans la cellule AL5
mois = ws.Range("AM6").Value
annee = ws.Range("AL5").Value
' Annuler la fusion des cellules et vider leur contenu dans la colonne A (A17:B47)
For i = 17 To 47
ws.Range("A" & i & ":B" & i).UnMerge
ws.Range("A" & i & ":B" & i).ClearContents
Next i
' Si le mois est valide (entre 1 et 12)
If mois >= 1 And mois <= 12 Then
' Déterminer le dernier jour du mois en fonction de l'année et du mois
dernierJour = Day(DateSerial(annee, mois + 1, 0))
' Remplir les cellules de la colonne DATE (A17:A47) avec les jours du mois
For i = 17 To dernierJour + 16 ' +16 pour décaler à partir de 1
ws.Range("A" & i).Value = i - 16
Next i
End If
' Masquer ou afficher les lignes vides dans la colonne A (A17:B47)
For i = 17 To 47
If ws.Range("A" & i).Value = "" Then
ws.Rows(i).Hidden = True
Else
ws.Rows(i).Hidden = False
End If
Next i
' Fusionner à nouveau les cellules dans la colonne A (A17:B47)
For i = 17 To 47
ws.Range("A" & i & ":B" & i).Merge
Next i
End Sub