Bonjour.
J'ouvre un nouveau fil pour résumer celui intitulé "Combobox"
Considérons la macro suivante :
Sub test()
MsgBox CDate("0.4")
MsgBox CDate("0.43")
MsgBox CDate("0.431")
End Sub
La première ligne donne 00:04:00, la seconde 00:43:00
Et la troisième 10:20:38 !!
La logique : je ne peux pas fourrer 431 dans les minutes, alors,
j'interprète 0.431 comme une date à part entière.
Bizzare non ?
Cordialement.
Daniel
laquelle est la plus sûre ?? MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ? MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" a écrit dans le message de news: u3$
| Bien que le résultat soit le même, laquelle est la plus sûre ??
Celle-là : MsgBox CDate("0.4" + 0)
;-) AV
Daniel
Si vous le permettez, aucune solution de fonctionne dans mon contexte. La valeur du combobox étant choisie dans une liste de dates, il s'agit de faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change() ComboBox1.Value = CDate(CDbl(ComboBox1.Value)) End Sub
L'exécution de cette macro la redéclenche puisque la valeur de ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type" sur la seconde exécution. Daniel "michdenis" a écrit dans le message de news:
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ?? MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ? MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" a écrit dans le message de news: u3$ | Bien que le résultat soit le même, laquelle est la plus sûre ??
Celle-là : MsgBox CDate("0.4" + 0)
;-) AV
Si vous le permettez, aucune solution de fonctionne dans mon contexte.
La valeur du combobox étant choisie dans une liste de dates, il s'agit de
faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change()
ComboBox1.Value = CDate(CDbl(ComboBox1.Value))
End Sub
L'exécution de cette macro la redéclenche puisque la valeur de
ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type"
sur la seconde exécution.
Daniel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OASkCCXOGHA.1288@TK2MSFTNGP09.phx.gbl...
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ??
MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ?
MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même
que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
u3$Kn9WOGHA.3556@TK2MSFTNGP10.phx.gbl...
| Bien que le résultat soit le même, laquelle est la plus sûre ??
Si vous le permettez, aucune solution de fonctionne dans mon contexte. La valeur du combobox étant choisie dans une liste de dates, il s'agit de faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change() ComboBox1.Value = CDate(CDbl(ComboBox1.Value)) End Sub
L'exécution de cette macro la redéclenche puisque la valeur de ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type" sur la seconde exécution. Daniel "michdenis" a écrit dans le message de news:
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ?? MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ? MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" a écrit dans le message de news: u3$ | Bien que le résultat soit le même, laquelle est la plus sûre ??
Celle-là : MsgBox CDate("0.4" + 0)
;-) AV
michdenis
Bonjour Daniel,
Un fichier exemple là : http://cjoint.com/?cyvY4b7LeA
P.S. La propriété RowSource du combobox n'est pas utilisé !
Salutations!
"Daniel" a écrit dans le message de news: % Si vous le permettez, aucune solution de fonctionne dans mon contexte. La valeur du combobox étant choisie dans une liste de dates, il s'agit de faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change() ComboBox1.Value = CDate(CDbl(ComboBox1.Value)) End Sub
L'exécution de cette macro la redéclenche puisque la valeur de ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type" sur la seconde exécution. Daniel "michdenis" a écrit dans le message de news:
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ?? MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ? MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" a écrit dans le message de news: u3$ | Bien que le résultat soit le même, laquelle est la plus sûre ??
Celle-là : MsgBox CDate("0.4" + 0)
;-) AV
Bonjour Daniel,
Un fichier exemple là : http://cjoint.com/?cyvY4b7LeA
P.S. La propriété RowSource du combobox n'est pas utilisé !
Salutations!
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news: %232kclRXOGHA.2268@TK2MSFTNGP09.phx.gbl...
Si vous le permettez, aucune solution de fonctionne dans mon contexte.
La valeur du combobox étant choisie dans une liste de dates, il s'agit de
faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change()
ComboBox1.Value = CDate(CDbl(ComboBox1.Value))
End Sub
L'exécution de cette macro la redéclenche puisque la valeur de
ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type"
sur la seconde exécution.
Daniel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OASkCCXOGHA.1288@TK2MSFTNGP09.phx.gbl...
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ??
MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ?
MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même
que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
u3$Kn9WOGHA.3556@TK2MSFTNGP10.phx.gbl...
| Bien que le résultat soit le même, laquelle est la plus sûre ??
Un fichier exemple là : http://cjoint.com/?cyvY4b7LeA
P.S. La propriété RowSource du combobox n'est pas utilisé !
Salutations!
"Daniel" a écrit dans le message de news: % Si vous le permettez, aucune solution de fonctionne dans mon contexte. La valeur du combobox étant choisie dans une liste de dates, il s'agit de faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change() ComboBox1.Value = CDate(CDbl(ComboBox1.Value)) End Sub
L'exécution de cette macro la redéclenche puisque la valeur de ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type" sur la seconde exécution. Daniel "michdenis" a écrit dans le message de news:
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ?? MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ? MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" a écrit dans le message de news: u3$ | Bien que le résultat soit le même, laquelle est la plus sûre ??
Celle-là : MsgBox CDate("0.4" + 0)
;-) AV
Daniel
Merci. Mais dans mon cas, c'était "listfillrange" qui est utilisé. Ca peut se changer, toutefois. Ou alors renseigner les heures en format texte dans les cellules, ça marche aussi. Bonne soirée. Daniel
"michdenis" a écrit dans le message de news:
Bonjour Daniel,
Un fichier exemple là : http://cjoint.com/?cyvY4b7LeA
P.S. La propriété RowSource du combobox n'est pas utilisé !
Salutations!
"Daniel" a écrit dans le message de news: % Si vous le permettez, aucune solution de fonctionne dans mon contexte. La valeur du combobox étant choisie dans une liste de dates, il s'agit de faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change() ComboBox1.Value = CDate(CDbl(ComboBox1.Value)) End Sub
L'exécution de cette macro la redéclenche puisque la valeur de ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type" sur la seconde exécution. Daniel "michdenis" a écrit dans le message de news:
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ?? MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ? MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" a écrit dans le message de news: u3$ | Bien que le résultat soit le même, laquelle est la plus sûre ??
Celle-là : MsgBox CDate("0.4" + 0)
;-) AV
Merci.
Mais dans mon cas, c'était "listfillrange" qui est utilisé. Ca peut se
changer, toutefois. Ou alors renseigner les heures en format texte dans les
cellules, ça marche aussi.
Bonne soirée.
Daniel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OeOTqQYOGHA.348@TK2MSFTNGP11.phx.gbl...
Bonjour Daniel,
Un fichier exemple là : http://cjoint.com/?cyvY4b7LeA
P.S. La propriété RowSource du combobox n'est pas utilisé !
Salutations!
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de news:
%232kclRXOGHA.2268@TK2MSFTNGP09.phx.gbl...
Si vous le permettez, aucune solution de fonctionne dans mon contexte.
La valeur du combobox étant choisie dans une liste de dates, il s'agit de
faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change()
ComboBox1.Value = CDate(CDbl(ComboBox1.Value))
End Sub
L'exécution de cette macro la redéclenche puisque la valeur de
ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type"
sur la seconde exécution.
Daniel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OASkCCXOGHA.1288@TK2MSFTNGP09.phx.gbl...
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ??
MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ?
MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même
que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
u3$Kn9WOGHA.3556@TK2MSFTNGP10.phx.gbl...
| Bien que le résultat soit le même, laquelle est la plus sûre ??
Merci. Mais dans mon cas, c'était "listfillrange" qui est utilisé. Ca peut se changer, toutefois. Ou alors renseigner les heures en format texte dans les cellules, ça marche aussi. Bonne soirée. Daniel
"michdenis" a écrit dans le message de news:
Bonjour Daniel,
Un fichier exemple là : http://cjoint.com/?cyvY4b7LeA
P.S. La propriété RowSource du combobox n'est pas utilisé !
Salutations!
"Daniel" a écrit dans le message de news: % Si vous le permettez, aucune solution de fonctionne dans mon contexte. La valeur du combobox étant choisie dans une liste de dates, il s'agit de faire apparaitre un nombre formaté "date" dans la fenêtre du combobox :
Private Sub ComboBox1_Change() ComboBox1.Value = CDate(CDbl(ComboBox1.Value)) End Sub
L'exécution de cette macro la redéclenche puisque la valeur de ComboBox1.Value a changé. Et il y a plantage en "incompatibilité de type" sur la seconde exécution. Daniel "michdenis" a écrit dans le message de news:
Bonjour AV,
la question était celle-ci :
laquelle est la plus sûre ?? MsgBox CDate(CDbl("0,4"))
Et non laquelle est la plus courte ? MsgBox CDate("0.4" + 0)
Et dans les 2 cas, le séparateur décimale doit être le même que celui que l'on retrouve dans le panneau de configuration.
;-))
Salutations!
"AV" a écrit dans le message de news: u3$ | Bien que le résultat soit le même, laquelle est la plus sûre ??
Celle-là : MsgBox CDate("0.4" + 0)
;-) AV
AV
| Et dans les 2 cas, le séparateur décimale doit être le même | que celui que l'on retrouve dans le panneau de configuration.
Objection votre Honneur !
MsgBox CDate("0.4" + 0) MsgBox CDate("0,4" + 0)
Si le symbole décimal système est le point, les 2 syntaxes sont sans soucis quel que soit le symbole décimal choisi dans l'application (possiblité de différencier système et application après XL200) C'est toujours le choix de la virgule comme séparateur décimal qui pose problème !
AV
| Et dans les 2 cas, le séparateur décimale doit être le même
| que celui que l'on retrouve dans le panneau de configuration.
Objection votre Honneur !
MsgBox CDate("0.4" + 0)
MsgBox CDate("0,4" + 0)
Si le symbole décimal système est le point, les 2 syntaxes sont sans soucis quel
que soit le symbole décimal choisi dans l'application (possiblité de
différencier système et application après XL200)
C'est toujours le choix de la virgule comme séparateur décimal qui pose problème
!
| Et dans les 2 cas, le séparateur décimale doit être le même | que celui que l'on retrouve dans le panneau de configuration.
Objection votre Honneur !
MsgBox CDate("0.4" + 0) MsgBox CDate("0,4" + 0)
Si le symbole décimal système est le point, les 2 syntaxes sont sans soucis quel que soit le symbole décimal choisi dans l'application (possiblité de différencier système et application après XL200) C'est toujours le choix de la virgule comme séparateur décimal qui pose problème !
AV
michdenis
Bonjour AV,
| Et dans les 2 cas, le séparateur décimale doit être le même | que celui que l'on retrouve dans le panneau de configuration.
Ce qui précède était pour appuyer le choix que j'avais fait MsgBox CDate(CDbl("0,4")) En fait, pour utiliser une fonction de conversion, la chaîne doit avoir le séparateur décimale définit dans le panneau de configuration de Windows. Cela demeure vrai nonobstant l'option "internationale" utilisée (version excel 2002 et 2003) de la feuille de calcul.
Évidemment, les "dates" font toujours les choses un peu différemment. Avec la virgule comme séparateur décimale -> panneau de configuration
Voici 2 opérations différentes : Si on multiplie par 1 la date trouvé par CDate("0,4") MsgBox CDate("0,4") * 1 -> 36617 -> 01-04-2000
MsgBox CDate("0,4" + 0) ' = 9:36:00
Et pour ajouter à ce qui précède, j'ai modifié la "langue" du panneau de configuration pour Anglais - US et j'ai obtenu ce qui suit nonobstant le séparateur décimale
Je n'ai jamais prétendu que ta méthode MsgBox CDate("0,4" + 0) ne fonctionnait pas, mais je demeure perplexe sur la manière que vba interprète le contenu entre les parenthèses pour la transformer! Si tu connais comment VBA résout la donne, je serais bien heureux de lire tes commentaires sur le sujet.
MsgBox CDate(CDbl("0,4")) L'utilisation de cette syntaxe est pour moi, plus simple au niveau de la compréhension... de la logique (cdbl transforme d'avoir la chaîne en valeur numérique pour par la suite extraire la date) et de ce que je connais comme "règle général" en programmation dans le maniement des variables !
Salutations!
Bonjour AV,
| Et dans les 2 cas, le séparateur décimale doit être le même
| que celui que l'on retrouve dans le panneau de configuration.
Ce qui précède était pour appuyer le choix que j'avais fait
MsgBox CDate(CDbl("0,4"))
En fait, pour utiliser une fonction de conversion, la chaîne
doit avoir le séparateur décimale définit dans le panneau de
configuration de Windows. Cela demeure vrai nonobstant
l'option "internationale" utilisée (version excel 2002 et 2003)
de la feuille de calcul.
Évidemment, les "dates" font toujours les choses un peu différemment.
Avec la virgule comme séparateur décimale -> panneau de configuration
Voici 2 opérations différentes :
Si on multiplie par 1 la date trouvé par CDate("0,4")
MsgBox CDate("0,4") * 1 -> 36617 -> 01-04-2000
MsgBox CDate("0,4" + 0) ' = 9:36:00
Et pour ajouter à ce qui précède, j'ai modifié la "langue" du panneau de
configuration pour Anglais - US et j'ai obtenu ce qui suit nonobstant
le séparateur décimale
Je n'ai jamais prétendu que ta méthode MsgBox CDate("0,4" + 0) ne fonctionnait
pas, mais je demeure perplexe sur la manière que vba interprète le contenu entre
les parenthèses pour la transformer! Si tu connais comment VBA résout
la donne, je serais bien heureux de lire tes commentaires sur le sujet.
MsgBox CDate(CDbl("0,4"))
L'utilisation de cette syntaxe est pour moi, plus simple au niveau de la
compréhension... de la logique (cdbl transforme d'avoir la chaîne en valeur numérique
pour par la suite extraire la date) et de ce que je connais comme "règle général"
en programmation dans le maniement des variables !
| Et dans les 2 cas, le séparateur décimale doit être le même | que celui que l'on retrouve dans le panneau de configuration.
Ce qui précède était pour appuyer le choix que j'avais fait MsgBox CDate(CDbl("0,4")) En fait, pour utiliser une fonction de conversion, la chaîne doit avoir le séparateur décimale définit dans le panneau de configuration de Windows. Cela demeure vrai nonobstant l'option "internationale" utilisée (version excel 2002 et 2003) de la feuille de calcul.
Évidemment, les "dates" font toujours les choses un peu différemment. Avec la virgule comme séparateur décimale -> panneau de configuration
Voici 2 opérations différentes : Si on multiplie par 1 la date trouvé par CDate("0,4") MsgBox CDate("0,4") * 1 -> 36617 -> 01-04-2000
MsgBox CDate("0,4" + 0) ' = 9:36:00
Et pour ajouter à ce qui précède, j'ai modifié la "langue" du panneau de configuration pour Anglais - US et j'ai obtenu ce qui suit nonobstant le séparateur décimale
Je n'ai jamais prétendu que ta méthode MsgBox CDate("0,4" + 0) ne fonctionnait pas, mais je demeure perplexe sur la manière que vba interprète le contenu entre les parenthèses pour la transformer! Si tu connais comment VBA résout la donne, je serais bien heureux de lire tes commentaires sur le sujet.
MsgBox CDate(CDbl("0,4")) L'utilisation de cette syntaxe est pour moi, plus simple au niveau de la compréhension... de la logique (cdbl transforme d'avoir la chaîne en valeur numérique pour par la suite extraire la date) et de ce que je connais comme "règle général" en programmation dans le maniement des variables !
Salutations!
AV
| MsgBox CDate("0,4") * 1 -> 36617 -> 01-04-2000
La chaine n'a pas été converti en numérique (le * 1 hors parenthèses, n'a aucune incidence sur le résultat), CDate interprète la "décimale" comme séparateur de date
| MsgBox CDate("0,4" + 0) ' = 9:36:00
La chaine a pas été converti en numérique par l'opération + 0, CDate interprète correctement la valeur
AV
| MsgBox CDate("0,4") * 1 -> 36617 -> 01-04-2000
La chaine n'a pas été converti en numérique (le * 1 hors parenthèses, n'a aucune
incidence sur le résultat), CDate interprète la "décimale" comme séparateur de
date
| MsgBox CDate("0,4" + 0) ' = 9:36:00
La chaine a pas été converti en numérique par l'opération + 0, CDate interprète
correctement la valeur
La chaine n'a pas été converti en numérique (le * 1 hors parenthèses, n'a aucune incidence sur le résultat), CDate interprète la "décimale" comme séparateur de date
| MsgBox CDate("0,4" + 0) ' = 9:36:00
La chaine a pas été converti en numérique par l'opération + 0, CDate interprète correctement la valeur
AV
AV
|| MsgBox CDate("0,4" + 0) ' = 9:36:00 | La chaine a pas été converti en numérique par l'opération + 0, CDate interprète | correctement la valeur
Pfff... Les bonheurs des copier/coller ! Il faut évidemment enlever le "pas"
AV
|| MsgBox CDate("0,4" + 0) ' = 9:36:00
| La chaine a pas été converti en numérique par l'opération + 0, CDate
interprète
| correctement la valeur
Pfff... Les bonheurs des copier/coller !
Il faut évidemment enlever le "pas"