XL 2016 Remplissage d'un tableau en fonction de la date

Dofing

XLDnaute Junior
Bonjour à tous et à toutes,

Depuis quelques jours je n'arrive pas progresser sur la saisie d'un code VBA avec l'utilisation de la condition if en fonction de la date.

Il s'agit de remplir automatique cellule en prenant en compte la date de saisie: lorsque la date est inférieur au 25 janvier, 25 février, 25 mars etc.

Merci de trouver ci-dessous un bout de code pour Janvier, Février et Mars, malgré plusieurs tentatives le code ne fonctionne toujours pas.

If TextBox1 > "25/01/2020" Then 'lorsque la saisie est inferieur au 25 janvier 2020

Worksheets("Suivi Récouvrement").Cells(no_ligne, 18) = "-"

ElseIf TextBox1 > "25/02/2020" Then 'lorsque la saisie est inferieur au 25 Fevrier 202

Worksheets("Suivi Récouvrement").Cells(no_ligne, 18) = "-"
Worksheets("Suivi Récouvrement").Cells(no_ligne, 19) = "-"

ElseIf TextBox1 > "25/03/2020" Then 'lorsque la saisie est inferieur au 25 Mars 2020

Worksheets("Suivi Récouvrement").Cells(no_ligne, 18) = "-"
Worksheets("Suivi Récouvrement").Cells(no_ligne, 19) = "-"
Worksheets("Suivi Récouvrement").Cells(no_ligne, 20) = "-"

End If
 
Solution
Bonjour Dofing,
Par exemple lorsqu'on crée un contrat le 24/03/2020, la colonne janvier et février doit être hachurer ("-") non la colonne mars.
C'est nouveau, votre code n'en parlait pas, alors débrouillez-vous avec ceci :
Code:
If IsDate(TextBox1) Then Sheets("Suivi Récouvrement").Cells(no_ligne, 18) _
    .Resize(, Month(CDate(TextBox1) - IIf(Day(CDate(TextBox1)) > 25, 0, 1))) = "-"
en tâchant de comprendre tout seul puisque vous ne fournissez pas de fichier :rolleyes:

A+

job75

XLDnaute Barbatruc
Bonjour Dofing,

Comme ceci :
VB:
If IsDate(TextBox1) Then
    If Day(CDate(TextBox1)) > 25 Then
        Sheets("Suivi Récouvrement").Cells(no_ligne, 18).Resize(, Month(CDate(TextBox1))) = "-"
    End If
End If
ou en plus court :
VB:
If IsDate(TextBox1) Then If Day(CDate(TextBox1)) > 25 Then _
    Sheets("Suivi Récouvrement").Cells(no_ligne, 18).Resize(, Month(CDate(TextBox1))) = "-"
PS : quand vous dites "date inférieure à " je comprends "date postérieure à"...

A+
 

Dofing

XLDnaute Junior
Bonjour Dofing,

Comme ceci :
VB:
If IsDate(TextBox1) Then
    If Day(CDate(TextBox1)) > 25 Then
        Sheets("Suivi Récouvrement").Cells(no_ligne, 18).Resize(, Month(CDate(TextBox1))) = "-"
    End If
End If
ou en plus court :
VB:
If IsDate(TextBox1) Then If Day(CDate(TextBox1)) > 25 Then _
    Sheets("Suivi Récouvrement").Cells(no_ligne, 18).Resize(, Month(CDate(TextBox1))) = "-"
PS : quand vous dites "date inférieure à " je comprends "date postérieure à"...

A+

Bonjour,

Merci de votre retour, c'est un peu ce que je recherche mais le code doit prendre en compte le mois aussi comme dans mon code initiale, c'est à dire lorsqu'on est au postérieur au 25/01, 25/02 ou 25/03 ainsi je pourrais me débrouiller pour les autres mois de l'année.

Ci-dessous mon exemple de départ.

If TextBox1 > "25/01/2020" Then 'lorsque la saisie est inferieur au 25 janvier 2020
Worksheets("Suivi Récouvrement").Cells(no_ligne, 18) = "-"
ElseIf TextBox1 > "25/02/2020" Then 'lorsque la saisie est inferieur au 25 Fevrier 202
Worksheets("Suivi Récouvrement").Cells(no_ligne, 18) = "-"
Worksheets("Suivi Récouvrement").Cells(no_ligne, 19) = "-"
ElseIf TextBox1 > "25/03/2020" Then 'lorsque la saisie est inferieur au 25 Mars 2020
Worksheets("Suivi Récouvrement").Cells(no_ligne, 18) = "-"
Worksheets("Suivi Récouvrement").Cells(no_ligne, 19) = "-"
Worksheets("Suivi Récouvrement").Cells(no_ligne, 20) = "-"
End If
 

Dofing

XLDnaute Junior
Bonjour,

Je vous remercie pour votre support, j'ai testé le code à plusieurs reprise il n'a pas tout à fait la comportement souhaité.

En fait j'ai à ma disposition un fichier de recouvrement des loyers par mois, l'objectif recherché c'est lorsqu'on crée un nouveau contrat de location un mois donné, lorsque la date est postérieur au 25 du mois ce mois ainsi que tous les mois antérieur ne soit pas éligible (marqué par "-"), mais par contre lorsque la date n'est pas postérieur au 25 du mois c'est seulement les mois postérieur qui sont hachurer.

Par exemple lorsqu'on crée un contrat le 24/03/2020, la colonne janvier et février doit être hachurer ("-") non la colonne mars. Par contre lorsque le contrat est crée le 26/03/2020, la colonne janvier, février et mars doit être hachurer ainsi de suite jusqu'en décembre.
D'où mon exemple de départ si TextBox1 > "25/01/2020" then ...........; TextBox1 > "25/02/2020" then ...... ( mais le code ne fonctionne pas)

Cordialement
 

job75

XLDnaute Barbatruc
Bonjour Dofing,
Par exemple lorsqu'on crée un contrat le 24/03/2020, la colonne janvier et février doit être hachurer ("-") non la colonne mars.
C'est nouveau, votre code n'en parlait pas, alors débrouillez-vous avec ceci :
Code:
If IsDate(TextBox1) Then Sheets("Suivi Récouvrement").Cells(no_ligne, 18) _
    .Resize(, Month(CDate(TextBox1) - IIf(Day(CDate(TextBox1)) > 25, 0, 1))) = "-"
en tâchant de comprendre tout seul puisque vous ne fournissez pas de fichier :rolleyes:

A+
 

Dofing

XLDnaute Junior
Alors on va se contenter de ça alors !!!!!

En fait en remplacement d'un registre, c'est un fichier excel que crée et que j'utilise tous les jours depuis 2018, c'est fin 2019 que j'ai entrepris d'automatiser certaines fonctionnalités avec le VBA et j'ai suivi des cours sur Excel-Pratique mais malheureusement certaines fonctionnalités du VBA sont toujours au-delà de mes connaissances.

Donc ne le prenez pas MAL si je reviens encore à la charge pour une autre partie du tableau
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA