Problème de date

Le
JP
Bonsoir,

Je suis en train de m'arracher les cheveux avec des dates.
J'ai ce code:
For i = 1 To nbeleves
DateEntree = Format(sgf.Cells(3, 26 + i), "dd/mm/yy")

DateSortie = Format(sgf.Cells(4, 26 + i), "dd/mm/yy")
If DateSortie = "" Then DateSortie = "05/07/42"

DateSeq = Format(sgf.Cells(MiseJ, 16), "dd/mm/yy")

' test les dates entrée / sortie
If DateSeq >= DateEntree And DateSeq <= DateSortie Then
sgf.Cells(MiseJ, i + 26).Value = "X"
End If
Next i

En l'occurrence:

DateEntree= "04/09/12"
DateSeq= "09/04/14"
DateSortie= "05/07/42"

Le test suivant, n'est jamais VRAI
If DateSeq >= DateEntree And DateSeq <= DateSortie Then
sgf.Cells(MiseJ, i + 26).Value = "X"
End If

Pourquoi ???

Une information supplémentaire qui peut intéresser. Les dates provienne=
nt d'une feuille (sgf). Elles sont inscrites dans la feuille sgf par l'inte=
rmédiaire de textboxs

Quelqu'un saurait me dire où est le problème?

Merci d'avance

JP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26131602
Bonjour,


| Elles sont inscrites dans la feuille sgf par l'intermédiaire de textboxs

Un textbox contient toujours du texte peu importe que son contenu soit
numérique, date ou texte.

Lorsque tu veux transférer le contenu d'un textbox vers une feuille de
calcul, tu dois indiquer à Excel ce que représente le contenu du textbox.
Pour ce faire, tu peux regarder dans l'aide d'Excel les "fonctions de
conversions" comme Cdbl(), Clng(), Cdate()...etc. Attention, ces fonctions
de conversion utilisent les paramètres (séparateur décimal, format
date...etc) définis dans le panneau de configuration de Windows.

Particulièrement pour les dates, suppose que j'écris : 01/05/08. Si je ne
spécifie pas le format date auquel je réfère, comment fais-tu pour savoir si
je faisais référence au 01 mai 2008 (jour/mois/année) ou 5 janvier 2008
(mois/jour/année) ou le 08 mai 2001 (année/mois/jour). Excel tout comme toi,
ne sait pas à quoi correspond le contenu du textbox.

With Range("A1")
.Numberformat = "DD/MM/YY" 'ou le format date que tu désires
.Value = Cdate(.value) ' Excel interprète le contenu en tenant compte
du format date défini dans le panneau
'configuration de Windows
End With

Quand tu laisses l'usager saisir une date dans un textbox, tu dois t'assurer
qu'il utilise le bon format... sinon des surprises l'attendent.

Pour aider la saisie, je te suggère d'utiliser un formulaire ressemblant à
ceci : http://cjoint.com/?DEnbIe07v2x
Tu n'as pas besoin d'ajouter une bibliothèque supplémentaire.




MichD
---------------------------------------------------------------
"JP" a écrit dans le message de groupe de discussion :


Bonsoir,

Je suis en train de m'arracher les cheveux avec des dates.
J'ai ce code:
For i = 1 To nbeleves
DateEntree = Format(sgf.Cells(3, 26 + i), "dd/mm/yy")

DateSortie = Format(sgf.Cells(4, 26 + i), "dd/mm/yy")
If DateSortie = "" Then DateSortie = "05/07/42"

DateSeq = Format(sgf.Cells(MiseJ, 16), "dd/mm/yy")

' test les dates entrée / sortie
If DateSeq >= DateEntree And DateSeq <= DateSortie Then
sgf.Cells(MiseJ, i + 26).Value = "X"
End If
Next i

En l'occurrence:

DateEntree= "04/09/12"
DateSeq= "09/04/14"
DateSortie= "05/07/42"

Le test suivant, n'est jamais VRAI
If DateSeq >= DateEntree And DateSeq <= DateSortie Then
sgf.Cells(MiseJ, i + 26).Value = "X"
End If

Pourquoi ???

Une information supplémentaire qui peut intéresser. Les dates proviennent
d'une feuille (sgf). Elles sont inscrites dans la feuille sgf par
l'intermédiaire de textboxs

Quelqu'un saurait me dire où est le problème?

Merci d'avance

JP
JP
Le #26131742
Bonjour Denis,

Belle démonstration.
Je garde sous le coude ton exemple bluffant (bluffant pour moi tout au moin s) mais je vais travailler du coté de Cdate car je ne laisse pas la main sur la feuille. (Les cellules sont toutes protégées). Le formulaire que j'utilise gère l'ensemble des informations de la feuille.
Quand je vois l'exemple que tu as joint, je me dis qu'il faut que je trouve le temps de travailler les modules de classe.

Une nouvelle fois merci pour la réponse. Si je bloque, je reviendrai dema nder conseil.

JP
Jacquouille
Le #26131902
Bonjour JP

Sans rien enlever à la qualité de la réponse reçue, ni au mérite de son
auteur (que je salue bien bas en me prosternant à ses pieds):
perso, quand je travaille sur des dates qui, bien sur, font tout ce qu'elles
peuvent pour m'emm****, je remplace celles-ci par un nombre.
pour ce faire aisément, tu écris une date dans une cel, puis tu mets le
format de la cl en format nombre. Cela évite les prob de format de date (US
différent d'Europe), mais aussi ce phénomène de date en format texte décrit
par Denis
Cela te permet de tester tes macros. Après, tu peux toujours changer ....
Bonne journée à tous et encore merci à Denis


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"JP" a écrit dans le message de groupe de discussion :


Bonjour Denis,

Belle démonstration.
Je garde sous le coude ton exemple bluffant (bluffant pour moi tout au
moins) mais je vais travailler du coté de Cdate car je ne laisse pas la main
sur la feuille. (Les cellules sont toutes protégées). Le formulaire que
j'utilise gère l'ensemble des informations de la feuille.
Quand je vois l'exemple que tu as joint, je me dis qu'il faut que je trouve
le temps de travailler les modules de classe.

Une nouvelle fois merci pour la réponse. Si je bloque, je reviendrai
demander conseil.

JP


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Jacky
Le #26132142
Bonjour,

Dans ton userform, utilise un control "DTPicker" au lieu d'un "textbox" pour la saisie de date
http://cjoint.com/?DEnkKfxeXLz

--
Salutations
JJ


"JP"
Bonjour Denis,

Belle démonstration.
Je garde sous le coude ton exemple bluffant (bluffant pour moi tout au moins) mais je vais travailler du coté
de Cdate car je ne laisse pas la main sur la feuille. (Les cellules sont toutes protégées). Le formulaire que
j'utilise gère l'ensemble des informations de la feuille.
Quand je vois l'exemple que tu as joint, je me dis qu'il faut que je trouve le temps de travailler les modules
de classe.

Une nouvelle fois merci pour la réponse. Si je bloque, je reviendrai demander conseil.

JP
JP
Le #26133322
Jacquouille et Jacky,

Merci pour votre aide. Je viens de regarder l'exemple de jacky. Il me plait bien et il est simple à mettre en oeuvre (cool!).
Merci aussi à Jacquouille pour l'idée intéressante. Je pense qu'il fa ut tout de même que les cellules ne soient pas apparentes sinon l'utilisa teur peut être dérouté à la vision d'un nombre plutôt qu'à une date.

Merci à vous trois.

JP
MichD
Le #26133692
Bonjour,

Si tu utilises la suggestion de Jacky, je te suggère fortement d'ajouter
ceci dans le ThisWorkbook du projetVBA du classeur. Cela afin de
permettre l'exécution du code sur d'autres ordinateurs qui n'ont
pas ajouté à la barre d'outils du formulaire, le contrôle
"Microsoft Date and Time Picker Control 6.0 (sp6)". Sans quoi, ton
formulaire éprouvera des ratés sérieux! ;-))

GUID signifie : globally unique identifier (ID)
'-------------------------------------------------------
Private Sub Workbook_Open()
On Error Resume Next
With Me.VBProject.References
.AddFromGuid _
GUID:="{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}", _
Major:=2, Minor:=0
End With
End Sub
'-------------------------------------------------------
Jacky
Le #26133922
Bonsoir Denis,

J'ai déjà constaté à plusieurs reprises sur différent pc (je viens de refaire le test)
sans avoir valider cette référence que DTPicker fonctionne.

Par contre Excel "coche" automatiquement "Microsoft Forms 2.0 Object library"
Y a t'il une concordance ?

--
Salutations
JJ


"MichD"
Bonjour,

Si tu utilises la suggestion de Jacky, je te suggère fortement d'ajouter
ceci dans le ThisWorkbook du projetVBA du classeur. Cela afin de
permettre l'exécution du code sur d'autres ordinateurs qui n'ont
pas ajouté à la barre d'outils du formulaire, le contrôle
"Microsoft Date and Time Picker Control 6.0 (sp6)". Sans quoi, ton
formulaire éprouvera des ratés sérieux! ;-))

GUID signifie : globally unique identifier (ID)
'-------------------------------------------------------
Private Sub Workbook_Open()
On Error Resume Next
With Me.VBProject.References
.AddFromGuid _
GUID:="{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}", _
Major:=2, Minor:=0
End With
End Sub
'-------------------------------------------------------

Jacky
Le #26133912
Re...
Je viens de constater que "Microsoft Forms 2.0 Object library"
se coche à la construction d'un Userform (même vide)
donc, rien à voir avec DTPicker.

--
Salutations
JJ


"Jacky"
Bonsoir Denis,

J'ai déjà constaté à plusieurs reprises sur différent pc (je viens de refaire le test)
sans avoir valider cette référence que DTPicker fonctionne.

Par contre Excel "coche" automatiquement "Microsoft Forms 2.0 Object library"
Y a t'il une concordance ?

--
Salutations
JJ


"MichD"
Bonjour,

Si tu utilises la suggestion de Jacky, je te suggère fortement d'ajouter
ceci dans le ThisWorkbook du projetVBA du classeur. Cela afin de
permettre l'exécution du code sur d'autres ordinateurs qui n'ont
pas ajouté à la barre d'outils du formulaire, le contrôle
"Microsoft Date and Time Picker Control 6.0 (sp6)". Sans quoi, ton
formulaire éprouvera des ratés sérieux! ;-))

GUID signifie : globally unique identifier (ID)
'-------------------------------------------------------
Private Sub Workbook_Open()
On Error Resume Next
With Me.VBProject.References
.AddFromGuid _
GUID:="{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}", _
Major:=2, Minor:=0
End With
End Sub
'-------------------------------------------------------





MichD
Le #26133932
Bonjour Jacky,

Ce que j'ai proposé n'ajoute pas le contrôle "Time and Date" dans la boîte
d'outils du formulaire, (je ne connais pas de code qui fait cela) mais
permet au code de s'exécuter correctement. Il se peut sur un autre
ordinateur que ce contrôle soit déjà présent dans la boîte d'outils du
formulaire, mais s'il est absent, je serais surpris, voire étonné si tu me
disais que tu peux exécuter le code du formulaire sans problème!

N.B- Je n'ai pas testé explicitement sous Excel 2013... mais si c'est le
cas, c'est toute une nouveauté!!!
;-))
JP
Le #26134492
Bonjour,

En définitive, j'ai adapté la proposition de Denis.
J'ai modifié le format date et j'ai limité la fonction à la colonne q ui était concernée par les dates.
Je confirme le bon fonctionnement.

Merci à tous.

JP
Publicité
Poster une réponse
Anonyme