[EXCEL VBA] - Cellule de date Vide
Résolu
freto
Messages postés
1543
Date d'inscription
Statut
Membre
Dernière intervention
-
Polux31 Messages postés 7219 Statut Membre -
Polux31 Messages postés 7219 Statut Membre -
Bonjour tout le monde.
Voici un bout de code de ma composition:
Tout cela pour faire en sorte de parcourir une liste de valeurs dans une colonne contenant des dates.
L'arrêt se fait lorsque l'on tombe sur une cellule vide.
Le problème est que mon algo ne s'arrete jamais, et boucle jusqu'à l'overflow de l'integer qui représente le numéro de la ligne.
Quelqu'un aurait une idée du pourquoi du comment de cette chose svp?
Merci d'avance...
Voici un bout de code de ma composition:
While (Sheet2.Cells(indLigne, "E").Value <> "" Or (result = False))
If (param = dateCourante) Then
result = True
End If
dateCourante = CDate(Sheet2.Cells(indLigne, "E").Value)
indLigne = indLigne + 1
Wend
Tout cela pour faire en sorte de parcourir une liste de valeurs dans une colonne contenant des dates.
L'arrêt se fait lorsque l'on tombe sur une cellule vide.
Le problème est que mon algo ne s'arrete jamais, et boucle jusqu'à l'overflow de l'integer qui représente le numéro de la ligne.
Quelqu'un aurait une idée du pourquoi du comment de cette chose svp?
Merci d'avance...
A voir également:
- Vba test cellule vide
- Test performance pc - Guide
- Test steam deck oled - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test composant pc - Guide
- Supprimer page word vide - Guide
5 réponses
Bonjour,
Dsl de m'incruster.
Le but de cette fonction est de vérifier si une date passée en paramètre est bien contenue dans une liste de date.
Si c'est le cas voilà comment je le ferai :
;o)
Dsl de m'incruster.
Le but de cette fonction est de vérifier si une date passée en paramètre est bien contenue dans une liste de date.
Si c'est le cas voilà comment je le ferai :
Function Ferie(param As Date) As Boolean
Dim indLigne As Integer
indLigne = 2
While (Sheet2.Cells(indLigne, "E").Value <> ""
If (Sheet2.Cells(indLigne, "E").Value = dateCourante) Then
Ferie= True
Exit Function
End If
indLigne = indLigne + 1
Wend
Ferie = False
End Function
;o)
Bonjour,
Je suppose qu'a l'entrée du While result est False et param initialisé avec une date valide.
Ces hypothèses faites, comme il y a un OR dans la condition du While cela signifie que la boucle s'arrête lorsque les deux conditions inverses sont réunies c'est à dire quand la cellule est vide ET que result = True.
Si je comprends bien donc pour que celà s'arrête il faut une cellule vide Et qu'une cellule d'une ligne précédente soit égale à la valeur de la variable param...(pour que result passe à True)
Si ces deux conditions ne sont pas réunies la boucle ne s'arrête pas...
Me préciser si je comprends bien..
A+
Je suppose qu'a l'entrée du While result est False et param initialisé avec une date valide.
Ces hypothèses faites, comme il y a un OR dans la condition du While cela signifie que la boucle s'arrête lorsque les deux conditions inverses sont réunies c'est à dire quand la cellule est vide ET que result = True.
Si je comprends bien donc pour que celà s'arrête il faut une cellule vide Et qu'une cellule d'une ligne précédente soit égale à la valeur de la variable param...(pour que result passe à True)
Si ces deux conditions ne sont pas réunies la boucle ne s'arrête pas...
Me préciser si je comprends bien..
A+
Effectivement, result est a False et param est bien initialisé.
Ci dessous le code complet de ma fonction.
Précision sur la condition avec le Or: si l'un des deux élément est faux, alors elle devient fausse. (enfin il me semble)
Ci dessous le code complet de ma fonction.
Function Ferie(param As Date) As Boolean
Dim result As Boolean
Dim indLigne As Integer
Dim dateCourante As Date
result = False
indLigne = 2
dateCourante = CDate(Sheet2.Cells(indLigne, "E").Value)
While (Sheet2.Cells(indLigne, "E").Value <> "" Or (result = False))
If (param = dateCourante) Then
result = True
End If
dateCourante = CDate(Sheet2.Cells(indLigne, "E").Value)
indLigne = indLigne + 1
Wend
Ferie = result
End Function
Précision sur la condition avec le Or: si l'un des deux élément est faux, alors elle devient fausse. (enfin il me semble)
Okey je teste et je te redis si sa fonctionne pour moi
Okey sa fonctionne, mis a part une petite erreur
C'est pas dateCourante mais param qu'il fallait mettre.
En tout cas merci beaucoup sa fonctionne maintenant
Okey sa fonctionne, mis a part une petite erreur
Function Ferie(param As Date) As Boolean
Dim indLigne As Integer
indLigne = 2
While (Sheet2.Cells(indLigne, "E").Value <> ""
If (Sheet2.Cells(indLigne, "E").Value = dateCourante) Then
Ferie= True
Exit Function
End If
indLigne = indLigne + 1
Wend
Ferie = False
End Function
C'est pas dateCourante mais param qu'il fallait mettre.
En tout cas merci beaucoup sa fonctionne maintenant
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question