fin du mois sans formule

  • Initiateur de la discussion Initiateur de la discussion cora
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cora

XLDnaute Occasionnel
Bonjour à tous,

je penses que ma question est ardu et demande des connaissances VBA que je n'ai pas évidemment.

J'ai 12 feuilles correspondant à chaque mois de l'année, sur chacune d'elle 2 colonnes entrées et sorties, correspondant à C4:C22 pour les dates d'entrées et D4😀22 pour les dates de sorties.
Est-il possible, lorsque je saisi une date d'entrée qu'à la date de sortie se saisissent (sans formule=SI(C4="";"";B77), B77 étant la fin du mois sur chaque feuille) la fin du mois correspondant au mois de la feuille.
en revanche, si je ne saisi pas de date d'entrée, alors la cellule voisine reste vide et saisisable manuellement, éventuellement.
Merci pour votre aide
 
Re : fin du mois sans formule

Bonjour Cora, bonjour le forum,

Essaie avec ce code à placer dans le composant ThisWorkbook : (j'ai mis une majuscule au F de Fév !)

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim M As Byte 'déclare la variable M (Mois)
Dim D As Date 'déclare la variable D (Date)

'si le changement a lieu ailleurs que dans la plage C4:C22, sort de la procédure
If Application.Intersect(Target, Sh.Range("C4:C22")) Is Nothing Then Exit Sub
Select Case Sh.Name
    Case "Jan": M = 1
    Case "Fév": M = 2
    Case "Mar": M = 3
    Case "Avr": M = 4
    Case "Mai": M = 5
    Case "Jun": M = 6
    Case "Jul": M = 7
    Case "Aoû": M = 8
    Case "Sep": M = 9
    Case "Oct": M = 10
    Case "Nov": M = 11
    Case "Déc": M = 12
End Select
If IsDate(Target.Value) = True Then 'condition : si la cellule modifiée contient une date
    D = DateSerial(Year(Target.Value), M + 1, 1) - 1 'définit la date D
    Target.Offset(0, 1).Value = D 'place la date dans la cellule de la colonne D
ElseIf Target.Value = "" Then 'ou : si la cellule est effacée
    Target.Offset(0, 1).Value = "" 'efface la cellule de la colonne D
End If 'fin de la condition
End Sub
 
Re : fin du mois sans formule

Bonjour Cora, bonjour le forum,

Au cas ou, cette petite modif :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim M As Byte 'déclare la variable M (Mois)
Dim D As Date 'déclare la variable D (Date)

'si le changement a lieu ailleurs que dans la plage C4:C22, sort de la procédure
If Application.Intersect(Target, Sh.Range("C4:C22")) Is Nothing Then Exit Sub
Select Case Sh.Name
    Case "Jan": M = 1
    Case "Fév": M = 2
    Case "Mar": M = 3
    Case "Avr": M = 4
    Case "Mai": M = 5
    Case "Jun": M = 6
    Case "Jul": M = 7
    Case "Aoû": M = 8
    Case "Sep": M = 9
    Case "Oct": M = 10
    Case "Nov": M = 11
    Case "Déc": M = 12
    Case Else: Exit Sub'si l'onglet n'est pas un onglet de mois, sort de la procédure
End Select
If IsDate(Target.Value) = True Then 'condition : si la cellule modifiée contient une date
    D = DateSerial(Year(Target.Value), M + 1, 1) - 1 'définit la date D
    Target.Offset(0, 1).Value = D 'place la date dans la cellule de la colonne D
ElseIf Target.Value = "" Then 'ou : si la cellule est effacée
    Target.Offset(0, 1).Value = "" 'efface la cellule de la colonne D
End If 'fin de la condition
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
Retour