Toujours des problèmes de calcul dans ma macro

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

F

Fab

Guest
Bonjour,
Je commence à ne plus rien comprendre.
Dans une colonne, il y a des dates limites. Il récupère chacune de ces dates qu'il stocke dans une variable.
Il demande (au travers d'une InputBox) la limite de jour acceptable avant de déclencher une alerte.
Lorsque j'excécute la macro, toutes les dates qu'il rencontre sont pour lui inférieures au minimum et il déclenche l'alerte.
Mais quand je lui fais afficher les valeurs intermédiaires calculées, elles sont justes.
Quelqu'un a-t-il la solution svp.
Merci

NB : Il y a des variables définies en trop, mais j'ai fais une version courte de ma macro pour illustrer mon problème.


Sub ControleDate2()
Dim DateLimite As Date
Dim DelaiLimite
Dim i, j, k
Dim Blanc, Onglet
Dim Action, ActionLiee, Qui, DateButoire
Dim Message, Title, Default, NBJAControler

Message = "Indiquez le nombre de jours à controler"
Title = "Action à effectuer prochainement"
Default = "N jours"
NBJAControler = InputBox(Message, Title, Default)

' Vérification sur la feuille Process
Sheets("Process").Select
Onglet = ActiveSheet.Name

' Début de la 1ère boucle
For i = 3 To 200
' Test de la cellule selectionnée
Range("F" & i).Select
If Range("F" & i) = "" Then
Blanc = 0
Else
DateLimite = Range("F" & i).Value
DelaiLimite = (DateLimite - Date)
If (DelaiLimite < NBJAControler) And (Range("I" & i).Value = "") Then
Range("J" & i).Select
Range("J" & i).Value = DelaiLimite
Range("K" & i).Select
Range("K" & i).Value = NBJAControler
' Action
Sheets("ATTENTION").Select
' Début de la 2ème boucle
For j = 3 To 25
' Test de la cellule selectionnée
Range("B" & j).Select
If (Range("B" & j) = "") And (Range("C" & j) = "") Then
Sheets(Onglet).Select
Action = Range("B" & i).Value
ActionLiee = Range("C" & i).Value
Qui = Range("H" & i).Value
DateButoire = Range("F" & i).Value

Sheets("ATTENTION").Select
Range("B" & j).Value = Action
Range("C" & j).Value = ActionLiee
Range("D" & j).Value = DateButoire
Range("E" & j).Value = Qui

Sheets(Onglet).Select
Exit For
End If
Next j
End If
End If
Next i
Range("A3").Select
' Fin de la vérification de la feuille Process OM-174-DP
Sheets("ATTENTION").Select


End Sub
 
Salut,
En fait, "Date" correspond à la date du jour.
Dans une ancienne version, j'avais une variable type ("Dim DateDuJour as Date") et une ligne de commande ("DateDuJour = Now"), mais en utilisant Date, il sait directement qu'il s'agit de la date du jour, sans avoir besoin d'écrire les 2 lignes ci-dessus.
A plus
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
500
Réponses
3
Affichages
599
Réponses
4
Affichages
361
Retour