incrémentez les dates dans un tableau sous condition

  • Initiateur de la discussion Initiateur de la discussion Ilino
  • 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 !

Ilino

XLDnaute Barbatruc
Bonjour Forum
je cherche a résoudre mon souci suivant :
Par un code VBA , si la cellule A8 = En arrêt alors afficher dans la cellule H8 la date du jour ( Today) jusqu’a que la ligne suivante A9 soit remplit et une fois la cellule A9 et D9 sont sans vide Alors affiché dans la cellule H8 la date définitive du D9 moins un jours et ainsi de suite
Merci
A+
 

Pièces jointes

Re : incrémentez les dates dans un tableau sous condition

Bonsoir Illino, Staple, bonsoir le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim M As Object 'déclare la variable M (onglet Model)
Dim DL As Integer 'déclare la variable DL (dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim D As Long 'déclare la variable D (Date)

Set M = Sheets("Model") 'définit l'onglet M
DL = M.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet M
Set PL = M.Range("A8:A" & DL) 'définit la plage PL
For Each CEL In PL 'boucle sure toutes les cellules éditées CEL de la plage PL
    If CEL.Value = "En arrêt." Then 'condition : si la valeur de la cellule cel est "En arrêt."
        Select Case CEL.Offset(1, 0).Value 'agit en fonction de la valeur de la cellule en dessous
            Case "" 'cas si vide
                CEL.Offset(0, 5).Value = Date 'place la date en colonne H
            Case Else 'autres cas
                'définit la date (convertie en numéro) D
                D = DateSerial(Year(CEL.Offset(1, 1).Value), Month(CEL.Offset(1, 1).Value), Day(CEL.Offset(1, 1).Value))
                CEL.Offset(0, 5).Value = Format(CDate(D - 1), "dd/mm/yyyy") 'place en colonne H la date D moins un jour
        End Select 'fin de l'action en fonction de...
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
End Sub
 
Re : incrémentez les dates dans un tableau sous condition

Bonjour Ilino, Jean-Marie, Robert,

Dans le code de la feuille cela devrait suffire :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Row > 7 And Target.Column < 8 And Target.Count = 1 Then
  Set c = Cells(Target.Row, 1)
  If c = "En arrêt." Then _
    c(1, 8) = IIf(c(2) <> "" And IsDate(c(2, 4)), Val(c(2, 4)) - 1, Date)
  If c(0) = "En arrêt." And c <> "" And IsDate(c(1, 4)) Then _
    c(0, 8) = c(1, 4) - 1
End If
End Sub
Edit : j'ai modifié pour le cas où il y a 2 "En arrêt." consécutifs.

A+
 
Dernière édition:
Re : incrémentez les dates dans un tableau sous condition

Re Ilino,

OK pour ton grand merci et GRAZIE, mais on aimerait quand même savoir si tu veux traiter toutes les cellules du tableau (solution de Robert) ou les cellules une par une (ma solution).

A+
 
Re : incrémentez les dates dans un tableau sous condition

Re MAITRE
selon mon souci j'ai constaté que ta proposition( step by step) est adequate a mon souci néanmoins la solution de Robert je l'ai utilisée dans un autre classeur pour un autre souci sans le postulé sur le forum... MERCI ROBERT 😱
et MERCI pour vous les deux 😱
 
- 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
1
Affichages
400
Retour