Condition date comprise entre deux autres

Bonjour le forum, j'espère que vous allez bien malgré la période de pandémie que nous vivons.

Voici 1 mois que je débute sur excel et je me suis lancé dans un projet professionnel un peu fou avec 0 connaissance. Cependant j'ai déjà un gros fichier qui fonctionne. A bout touchant du résultat final, je bloque sur une fonction "IF" où je souhaiterais que si une date est comprise entre deux autres, le contenu d'une textbox soit multiplié par un nombre. Si elle se trouve entre encore deux autres dates, cette même textbox soit multiplié par un autre nombre. Le but est en fait de calculer un prix au prorata du nombre de mois déjà passés. (Ex: Achat d'une vignette 300euros/an, si elle est achetée dans le 3e trimestre, elle n'en coûte plus que le 50%)

Voici mon code:

If CDate(TextBox12) > CDate(25 / 12 / 2019) And CDate(TextBox12) < CDate(1 / 4 / 2020) Then
        Me.TextBox15 = (Me.TextBox15.Value * 1)
ElseIf CDate(TextBox12) > CDate(31/3/2020) And CDate(TextBox12) < CDate(1/4/2020) Then
    Me.TextBox15=(Me.TextBox15.Value * 0.75)
ElseIf CDate(TextBox12) > CDate(30/6/2020) And CDate(TextBox12) < CDate(1/10/2020) Then
    Me.TextBox15=(Me.TextBox15.Value * 0.5)
ElseIf CDate(TextBox12) > CDate(30/9/2020) And CDate(TextBox12) < CDate(31/12/2020) Then
    Me.TextBox15=(Me.TextBox15.Value * 0.25)
End If 

Le problème c'est que si je ne mets que la première ligne cela fonctionne, mais dès que j'en mets une 2ème, il n'y a pas d'erreur mais le calcul n'est pas pris en compte. Quelqu'un pourrait-il m'aider svp? Je me suis demandé (étant gros débutant) s'il fallait utiliser autre chose que "ElseIf" mais mes recherches ont été sans succès.

En espérant que quelqu'un me dépatouillera, je vous remercie d'avance pour votre aide et prenez soin de vous!

Raph.

Bonjour,

Sans fichier, tu as peu de chance d'obtenir des réponses du forum.

Cordia5

j'ai pensé... j'étais en train de faire un fichier simplifié pour exposer mon problème mais je rencontre maintenant un autre souci

Bonjour rbourquin, CORDIA5, le forum,

A tout hasard....

Select Case CDate(TextBox12)
 Case CDate(25 / 12 / 2019) To CDate(1 / 4 / 2020)
  Me.TextBox15 = (Me.TextBox15.Value * 1)
 Case CDate(31 / 3 / 2019) To CDate(1 / 4 / 2020)
  Me.TextBox15 = (Me.TextBox15.Value * 0.75)
 Case CDate(30 / 6 / 2020) To CDate(1 / 10 / 2020)
  Me.TextBox15 = (Me.TextBox15.Value * 0.5)
 Case CDate(30 / 9 / 2020) To CDate(31 / 12 / 2020)
  Me.TextBox15 = (Me.TextBox15.Value * 0.25)
 'Case Else
  'Me.TextBox15 = ??
 End Select

Cordialement,

17classeur2.xlsm (21.42 Ko)

Bonjour @xorsankukai et bonjour @CORDIA5.

J'ai essayé la proposition de xorsankukai mais sans succès.

J'ai trouvé le problème sur mon fichier simplifié et je vous le joins

Désolé pour l'attente et merci d'avance pour vos premières réponses, et les suivantes surtout

Prenez soin de vous et à bientôt

Bonjour,

Sans fichier, tu as peu de chance d'obtenir des réponses du forum.

Cordia5

C'est fait

Bonjour rbourquin et le forum,

Tu peux déjà modifié ta date en A1, car ce n'est pas un format date.

- 10/12/2019 par exemple.

cela devrait déjà régler ton souci, ensuite je ne sais pas ce que tu attends de ton code.

Cordia5

Bonjour rbourquin et le forum,

Tu peux déjà modifié ta date en A1, car ce n'est pas un format date.

- 10/12/2019 par exemple.

cela devrait déjà régler ton souci, ensuite je ne sais pas ce que tu attends de ton code.

Cordia5

Bonjour, Merci pour ton retour un dimanche

J'ai effectué le changement de format pour la cellule du classeur en A1, mais le problème n'est pas résolu.

En soit, selon le code que j'ai mis, j'aimerais que par exemple si la date en textbox1 est comprise entre le 30/09/2020 et 31/12/2020, le contenu de la textbox soit multiplié par 0.25.

Si je modifie la date (par exemple en inscrivant le 10.12.2020), le prix affiché doit être de 240 ou 300 (selon le type de vignette choisi) multiplié par 0.25 (la date étant comprise entre le 30.09.2020 et le 31.12.2020). Malheureusement, le prix reste sur 240 ou 300 (toujours selon le type de vignette choisi)

Bonjour,

peux-tu vérifer tes dates dates, car j'ai du mal à comprendre tes conditions

If CDate(TextBox12) > CDate(25 / 12 / 2019) And CDate(TextBox12) < CDate(1 / 4 / 2020) Then
        Me.TextBox15 = (Me.TextBox15.Value * 1)
ElseIf CDate(TextBox12) > CDate(31/3/2020) And CDate(TextBox12) < CDate(1/4/2020) Then
    Me.TextBox15=(Me.TextBox15.Value * 0.75)
ElseIf CDate(TextBox12) > CDate(30/6/2020) And CDate(TextBox12) < CDate(1/10/2020) Then
    Me.TextBox15=(Me.TextBox15.Value * 0.5)
ElseIf CDate(TextBox12) > CDate(30/9/2020) And CDate(TextBox12) < CDate(31/12/2020) Then
    Me.TextBox15=(Me.TextBox15.Value * 0.25)
End If

Date comprise entre le 31/03/2020 et 01/04/2020 ????????

Cordia5

ElseIf CDate(TextBox12) > CDate(31/3/2020) And CDate(TextBox12) < CDate(1/7/2020) Then
    Me.TextBox15=(Me.TextBox15.Value * 0.75)

Pardon, erreur de frappe. Le reste c'est effectivement ça.

Compris entre le 31.3.2020 et le 01.07.2020.

Dans ma logique, je devais dire au code, si la date (textbox12) est plus grande que 31.03, donc dès le 01.04, et est plus petite que le 01.07, donc le 30.06, alors multiplier le contenu de textbox15 par 0.75.

Re-bonjour,

regarde et vois si cela peut-aider.

Cordia5

Magnifique CORDIA5, merci infiniment. Je te paierai(s) volontiers l'apéro

Il m'a fallut du temps pour l'adapter à mon fichier complet, mais l'histoire des dates fonctionne maintenant. Il faut que j'en apprenne d'avantage sur les variables, ça m'aidera à l'avenir.

Merci infiniment et prenez soin de vous!

Merci du retour.

Bonne soirée.

Cordia5

Rechercher des sujets similaires à "condition date comprise entre deux"