Je bloque actuellement sur une petite fonction ou j'utilise la fonction "e;e;Application.Match"e;e; afin de comparer une date à une série de date dans un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est constamment TRUE !
Quelqu'un aurait-il la solution?
Private Function PlusJOuvres(Date_Fin, NbJours)
Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin)
i = 0
Do
Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And (Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then
i = i + 1
End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True
End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms. J'ai essayé de la remplacer par range() mais rien ne change.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
GL
Le 04/03/2015 13:25, MrFlag a écrit :
Bonjour,
Je bloque actuellement sur une petite fonction ou j'utilise la fonction "e;e;Application.Match"e;e; afin de comparer une date à une série de date dans un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est constamment TRUE !
Quelqu'un aurait-il la solution?
Un nom (plage nommé) comme "feries" ne peut pas être utilisé directement.
Soit vous faites :
Dim Plage as Range Set Plage¬tiveWorkbook.Names("feries").RefersToRange
soit plus simplement: Range("feries")
Par ailleurs les "= True" dans votre formule sont superfétatoires.
Cordialement.
Private Function PlusJOuvres(Date_Fin, NbJours) Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin) i = 0
Do Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And (Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then i = i + 1 End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms. J'ai essayé de la remplacer par range() mais rien ne change.
Je suis sur Excel 2010.
Cordialement.
Le 04/03/2015 13:25, MrFlag a écrit :
Bonjour,
Je bloque actuellement sur une petite fonction ou j'utilise la fonction
"e;e;Application.Match"e;e; afin de comparer une date à une série de date dans
un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est
constamment TRUE !
Quelqu'un aurait-il la solution?
Un nom (plage nommé) comme "feries" ne peut pas être utilisé
directement.
Soit vous faites :
Dim Plage as Range
Set Plage¬tiveWorkbook.Names("feries").RefersToRange
soit plus simplement: Range("feries")
Par ailleurs les "= True" dans votre formule sont superfétatoires.
Cordialement.
Private Function PlusJOuvres(Date_Fin, NbJours)
Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin)
i = 0
Do
Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And
(Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then
i = i + 1
End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True
End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms.
J'ai essayé de la remplacer par range() mais rien ne change.
Je bloque actuellement sur une petite fonction ou j'utilise la fonction "e;e;Application.Match"e;e; afin de comparer une date à une série de date dans un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est constamment TRUE !
Quelqu'un aurait-il la solution?
Un nom (plage nommé) comme "feries" ne peut pas être utilisé directement.
Soit vous faites :
Dim Plage as Range Set Plage¬tiveWorkbook.Names("feries").RefersToRange
soit plus simplement: Range("feries")
Par ailleurs les "= True" dans votre formule sont superfétatoires.
Cordialement.
Private Function PlusJOuvres(Date_Fin, NbJours) Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin) i = 0
Do Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And (Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then i = i + 1 End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms. J'ai essayé de la remplacer par range() mais rien ne change.
Je suis sur Excel 2010.
Cordialement.
isabelle
bonjour,
j'ai fait le test avec
If IsError(Application.Match(Date_Test, Range("feries"), 0)) = True
et je n'ai pas eu ce problème
isabelle
Le 2015-03-04 07:25, MrFlag a écrit :
Bonjour,
Je bloque actuellement sur une petite fonction ou j'utilise la fonction "e;e;Application.Match"e;e; afin de comparer une date à une série de date dans un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est constamment TRUE !
Quelqu'un aurait-il la solution?
Private Function PlusJOuvres(Date_Fin, NbJours) Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin) i = 0
Do Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And (Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then i = i + 1 End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms. J'ai essayé de la remplacer par range() mais rien ne change.
Je suis sur Excel 2010.
Cordialement.
bonjour,
j'ai fait le test avec
If IsError(Application.Match(Date_Test, Range("feries"), 0)) = True
et je n'ai pas eu ce problème
isabelle
Le 2015-03-04 07:25, MrFlag a écrit :
Bonjour,
Je bloque actuellement sur une petite fonction ou j'utilise la fonction
"e;e;Application.Match"e;e; afin de comparer une date à une série de date dans
un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est
constamment TRUE !
Quelqu'un aurait-il la solution?
Private Function PlusJOuvres(Date_Fin, NbJours)
Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin)
i = 0
Do
Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And
(Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then
i = i + 1
End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True
End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms.
J'ai essayé de la remplacer par range() mais rien ne change.
If IsError(Application.Match(Date_Test, Range("feries"), 0)) = True
et je n'ai pas eu ce problème
isabelle
Le 2015-03-04 07:25, MrFlag a écrit :
Bonjour,
Je bloque actuellement sur une petite fonction ou j'utilise la fonction "e;e;Application.Match"e;e; afin de comparer une date à une série de date dans un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est constamment TRUE !
Quelqu'un aurait-il la solution?
Private Function PlusJOuvres(Date_Fin, NbJours) Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin) i = 0
Do Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And (Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then i = i + 1 End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms. J'ai essayé de la remplacer par range() mais rien ne change.
Je suis sur Excel 2010.
Cordialement.
Patrick
perso, je trouve que ce n'est jamais facile de chercher sur une date, il y a peut être un truc ?
en attendant j'utilise ceci:
a = range("A1") ' A1 est une date bien sur :)
et je cherche sur CDbl(a)
j'ai eu des soucis en cherchant des dates , dont j'étais certain de l'exitence et du vrai format date et je ne trouvais pas avec la méthode find, alors avec CDbl() ça fonctionne :
vous avez un avis ?
Patrick
"isabelle" a écrit dans le message de news: md77ub$guh$
bonjour,
j'ai fait le test avec
If IsError(Application.Match(Date_Test, Range("feries"), 0)) = True
et je n'ai pas eu ce problème
isabelle
Le 2015-03-04 07:25, MrFlag a écrit :
Bonjour,
Je bloque actuellement sur une petite fonction ou j'utilise la fonction "e;e;Application.Match"e;e; afin de comparer une date à une série de date dans un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est constamment TRUE !
Quelqu'un aurait-il la solution?
Private Function PlusJOuvres(Date_Fin, NbJours) Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin) i = 0
Do Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And (Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then i = i + 1 End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms. J'ai essayé de la remplacer par range() mais rien ne change.
Je suis sur Excel 2010.
Cordialement.
--- L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast. http://www.avast.com
perso, je trouve que ce n'est jamais facile de chercher sur une date, il y a
peut être un truc ?
en attendant j'utilise ceci:
a = range("A1") ' A1 est une date bien sur :)
et je cherche sur CDbl(a)
j'ai eu des soucis en cherchant des dates , dont j'étais certain de
l'exitence et du vrai format date et je ne trouvais pas avec la méthode
find, alors avec CDbl() ça fonctionne :
vous avez un avis ?
Patrick
"isabelle" <i@v.org> a écrit dans le message de news:
md77ub$guh$1@speranza.aioe.org...
bonjour,
j'ai fait le test avec
If IsError(Application.Match(Date_Test, Range("feries"), 0)) = True
et je n'ai pas eu ce problème
isabelle
Le 2015-03-04 07:25, MrFlag a écrit :
Bonjour,
Je bloque actuellement sur une petite fonction ou j'utilise la fonction
"e;e;Application.Match"e;e; afin de comparer une date à une série de date
dans
un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est
constamment TRUE !
Quelqu'un aurait-il la solution?
Private Function PlusJOuvres(Date_Fin, NbJours)
Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin)
i = 0
Do
Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And
(Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True
Then
i = i + 1
End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True
End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de
noms.
J'ai essayé de la remplacer par range() mais rien ne change.
Je suis sur Excel 2010.
Cordialement.
---
L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast.
http://www.avast.com
perso, je trouve que ce n'est jamais facile de chercher sur une date, il y a peut être un truc ?
en attendant j'utilise ceci:
a = range("A1") ' A1 est une date bien sur :)
et je cherche sur CDbl(a)
j'ai eu des soucis en cherchant des dates , dont j'étais certain de l'exitence et du vrai format date et je ne trouvais pas avec la méthode find, alors avec CDbl() ça fonctionne :
vous avez un avis ?
Patrick
"isabelle" a écrit dans le message de news: md77ub$guh$
bonjour,
j'ai fait le test avec
If IsError(Application.Match(Date_Test, Range("feries"), 0)) = True
et je n'ai pas eu ce problème
isabelle
Le 2015-03-04 07:25, MrFlag a écrit :
Bonjour,
Je bloque actuellement sur une petite fonction ou j'utilise la fonction "e;e;Application.Match"e;e; afin de comparer une date à une série de date dans un range.
Le code est pourtant basique mais l'instruction "e;e;IsError()"e;e; est constamment TRUE !
Quelqu'un aurait-il la solution?
Private Function PlusJOuvres(Date_Fin, NbJours) Application.EnableEvents = False
Dim Date_Test As Date, i
Date_Test = CLng(Date_Fin) i = 0
Do Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And (Weekday(Date_Test, 2) > 0) = True And (Weekday(Date_Test, 2) < 6) = True Then i = i + 1 End If
Loop Until i = NbJours + 1
PlusJOuvres = Date_Test
Application.EnableEvents = True End Function
"feries" correspond à ma plage de date définie dans le gestionnaire de noms. J'ai essayé de la remplacer par range() mais rien ne change.
Je suis sur Excel 2010.
Cordialement.
--- L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast. http://www.avast.com
MichD
Bonjour,
Ceci fonctionne, mais je ne peux pas dire si la valeur retournée est la valeur que tu recherches puisque tu n'as pas dit ce que devait faire la fonction...
La "HIC" avec les dates est que tu dois t'assurer que la variable reçoit vraiment une date avec un format qui est bien compris par la procédure. Pour cela, il y a différentes façons de renseigner une variable affectée du TYPE date.
Dim X as date X = DateSerial(2015,3,7) OU X = DateValue("2015/3/7") OU X = #3/7/2015# 'Il faut écrire la date dans le format américain (Mois/jour/année)
Attention : Les fonctions de conversion utilisent par défaut les paramètres définis dans le panneau de configuration. À cet égard, il faut oublier cette façon de faire X = Cdate("7/3/2015") car si le fichier s'ouvre sur un autre ordinateur et que la configuration du panneau de configuration est différente (exemple : ordinateur américain), la date sera lue comme étant le 3 juillet 2015 au lieu du 7 mars 2015.
'---------------------------------------------------------------------------------------- Sub test() Dim Date_Test As Date, NoLigne As Long
'Définir la date que tu cherches Date_Test = DateSerial(2015, 3, 7)
MsgBox PlusJOuvres(Date_Test, 5)
End Sub
'---------------------------------------------------------------------------------------- Private Function PlusJOuvres(Date_Fin As Date, NbJours As Long)
Dim Date_Test As Long, i As Long
Date_Test = CLng(Date_Fin) i = 0
Do Date_Test = Date_Test + 1 If IsError(Application.Match(Date_Test, feries, 0)) = True And _ Weekday(Date_Test, 2) < 6 = True Then i = i + 1 End If Loop Until i = NbJours + 1
PlusJOuvres = CDate(Date_Test) End Function '----------------------------------------------------------------------------------------
Bonjour,
Ceci fonctionne, mais je ne peux pas dire si la valeur retournée est la
valeur que tu recherches puisque tu n'as pas dit ce que devait faire la
fonction...
La "HIC" avec les dates est que tu dois t'assurer que la variable reçoit
vraiment une date avec un format qui est bien compris par la procédure. Pour
cela, il y a différentes façons de renseigner une variable affectée du TYPE
date.
Dim X as date
X = DateSerial(2015,3,7)
OU
X = DateValue("2015/3/7")
OU
X = #3/7/2015# 'Il faut écrire la date dans le format américain
(Mois/jour/année)
Attention : Les fonctions de conversion utilisent par défaut les paramètres
définis dans le panneau de configuration. À cet égard, il faut oublier cette
façon de faire X = Cdate("7/3/2015") car si le fichier s'ouvre sur un autre
ordinateur et que la configuration du panneau de configuration est
différente (exemple : ordinateur américain), la date sera lue comme étant le
3 juillet 2015 au lieu du 7 mars 2015.
'----------------------------------------------------------------------------------------
Sub test()
Dim Date_Test As Date, NoLigne As Long
'Définir la date que tu cherches
Date_Test = DateSerial(2015, 3, 7)
MsgBox PlusJOuvres(Date_Test, 5)
End Sub
'----------------------------------------------------------------------------------------
Private Function PlusJOuvres(Date_Fin As Date, NbJours As Long)
Dim Date_Test As Long, i As Long
Date_Test = CLng(Date_Fin)
i = 0
Do
Date_Test = Date_Test + 1
If IsError(Application.Match(Date_Test, feries, 0)) = True And _
Weekday(Date_Test, 2) < 6 = True Then
i = i + 1
End If
Loop Until i = NbJours + 1
PlusJOuvres = CDate(Date_Test)
End Function
'----------------------------------------------------------------------------------------
Ceci fonctionne, mais je ne peux pas dire si la valeur retournée est la valeur que tu recherches puisque tu n'as pas dit ce que devait faire la fonction...
La "HIC" avec les dates est que tu dois t'assurer que la variable reçoit vraiment une date avec un format qui est bien compris par la procédure. Pour cela, il y a différentes façons de renseigner une variable affectée du TYPE date.
Dim X as date X = DateSerial(2015,3,7) OU X = DateValue("2015/3/7") OU X = #3/7/2015# 'Il faut écrire la date dans le format américain (Mois/jour/année)
Attention : Les fonctions de conversion utilisent par défaut les paramètres définis dans le panneau de configuration. À cet égard, il faut oublier cette façon de faire X = Cdate("7/3/2015") car si le fichier s'ouvre sur un autre ordinateur et que la configuration du panneau de configuration est différente (exemple : ordinateur américain), la date sera lue comme étant le 3 juillet 2015 au lieu du 7 mars 2015.
'---------------------------------------------------------------------------------------- Sub test() Dim Date_Test As Date, NoLigne As Long
'Définir la date que tu cherches Date_Test = DateSerial(2015, 3, 7)
MsgBox PlusJOuvres(Date_Test, 5)
End Sub
'---------------------------------------------------------------------------------------- Private Function PlusJOuvres(Date_Fin As Date, NbJours As Long)
Dim Date_Test As Long, i As Long
Date_Test = CLng(Date_Fin) i = 0
Do Date_Test = Date_Test + 1 If IsError(Application.Match(Date_Test, feries, 0)) = True And _ Weekday(Date_Test, 2) < 6 = True Then i = i + 1 End If Loop Until i = NbJours + 1
PlusJOuvres = CDate(Date_Test) End Function '----------------------------------------------------------------------------------------