Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

date dans macro

20 réponses
Avatar
Circé
Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver que
les date supérieures à aujourd'hui, je trouve tout !

Merci par avance,
Circé
http://faqwore.fr

10 réponses

1 2
Avatar
Modeste
Bonsour® Circé avec ferveur ;o))) vous nous disiez :

Alors voilà :
http://cjoint.com/?jlkImRRYMy
Regarde dans le fichier les deux cellules colorées en jaune qui
proviennent de ma base.



les 2 dates concernées sont en format texte : NBcar(A5)
il suffit de faire entrée sur les cellules concernées pour que excel interprété la saisie en tant que date

Sub Circe()
Dim c As Range
For Each c In Range("date_signature")
If c.Value > Now Then
c = c.Value ' -------excel fait l'interprétation date automatiquement
c.Offset(0, 5).Value = "A"
End If
Next c

End Sub


--
--
@+
;o)))
Avatar
Circé
Hello Misange,

Quel sournois, cet Excel !!! :D

Je me contenterai donc du DateSerial qui fonctionne très bien, car de
toutes façons, je ne peux pas modifier l'export (je n'ai pas la main
dessus).
En fait, cet export est fait plusieurs fois par semaine, et le
traitement des données par macro complémentaire interposé se fait à
chaque export... Le but est d'obtenir des résultats corrects et pas de
se prendre la tête ! :D

Merci à tous




Misange a formulé ce jeudi :
hello,
Et bien en fait tes deux dernières dates, même ayant été multipliées par 1
sont toujours en format texte : si tu changes le format et que tu mets nombre
à la place de date sur ta colonne, tu verras que les deux dernières restent
alignées à gauche et ne sont pas transformées. Excel est parfois "trop" futé :
il essaie de t'arranger au maximum. Quand tu écris = mois (A4), excel essaie
de convertir ta donnée en A4 en une date pour appliquer la fonction. Du coup
il ne te signale pas qu'en fait c'est du texte.
Donc il faut soit que tu revoies ta procédure d'importation de données pour
corriger cela, soit que tu utilises dateserial comme proposé.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Hello Miss-Ange !

Misange a présenté l'énoncé suivant :
au besoin mets nous un exemple sur c-joint.



Alors voilà :
http://cjoint.com/?jlkImRRYMy

En fait, ce n'est pas un problème de macro, c'est vraiment un problème avec
ces dates qui paraissent être pourtant au bon format.
J'ai testé avec une formule > ou < à aujourdhui() et le problème est le
même.
Regarde dans le fichier les deux cellules colorées en jaune qui proviennent
de ma base.

Circé
http://faqword.fr

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Bonsoir à tous,

Au moins, déjà, ça me rassure de voir que je ne débloquais pas
complètement !

Il s'agit de données récupérées d'une appli externe. Au départ, aucun
nombre n'était considéré comme numérique. Je les ai tous "convertis", y
compris les dates, par une multiplication par 1, car le format ne suffit
pas dans ce cas.

Les dates sont OK, car dans une autre colonne, je récupère bien le mois
avec une formule =MOIS(date)...
Bon, je vérifie tout ça demain, il doit y avoir autre chose...

Je vous tiens au courant ! :D

Circé
http://faqword.fr

Modeste avait écrit le 10/09/2008 :
Bonsour® Circé avec ferveur ;o))) vous nous disiez :
Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver que
les date supérieures à aujourd'hui, je trouve tout !



verifie le format des dates,
pour cela, passe la plage "date_signature" en format nombre il doit n'y
avoir que des nombres !!!

il ne faut pas que celles-ci soient en format texte

si ce n'est pas le cas
voir avec le menu Données convertir
ne selectionner que la colonne des dates-signature
à l'étape 3
format des données en colonne choisir date et le format correspondant à
celui lu (visible)


--














Avatar
Circé
Hello Modeste,

Non seulement, ça ne fonctionne pas (il me trouve aussi toutes les
dates quelles qu'elles soient), mais en plus ça boucle à l'infini ! :D

Circé
http://faqword.free.fr

Modeste avait énoncé :
Bonsour® Circé avec ferveur ;o))) vous nous disiez :

avec ferveur ))

les 2 dates concernées sont en format texte : NBcar(A5)
il suffit de faire entrée sur les cellules concernées pour que excel
interpréte la saisie en tant que date (pouvue que celle-ci soit correcte !!)




Sub Circe()
Dim c As Range
For Each c In Range("date_signature")
c = c.Value ' -------excel fait l'interprétation date automatiquement
If c.Value > Now Then c.Offset(0, 5).Value = "A"
Next c

--


Avatar
michdenis
Après ton importation de données, applique
cette procédure sur les colonnes ayant des dates
comme tenu, cela devrait solutionner tes problèmes.

Ta petite proc. devrait fonctionner rondement après ça.
et tu es certaine qu'excel a compris qu'il a affaire à des dates.

En supposant que ton format date est du type "Format court"

'--------------------------------------
Sub test()
Dim DerLig As Long, X
With Feuil1
DerLig = .Range("A" & .Cells.Rows.Count).End(xlUp).Row
Application.EnableEvents = False
With .Range("A1:A" & DerLig)
.Replace Chr(160), ""
.Replace Chr(32), ""
X = .Value
.Value = ""
'Tu appliques le format de ton choix à tes dates.
.NumberFormat = "DD/MM/YY"
.Value = X
End With
Application.EnableEvents = True
End With
End Sub
'--------------------------------------




"Circé" a écrit dans le message de news:

Hello Misange,

Quel sournois, cet Excel !!! :D

Je me contenterai donc du DateSerial qui fonctionne très bien, car de
toutes façons, je ne peux pas modifier l'export (je n'ai pas la main
dessus).
En fait, cet export est fait plusieurs fois par semaine, et le
traitement des données par macro complémentaire interposé se fait à
chaque export... Le but est d'obtenir des résultats corrects et pas de
se prendre la tête ! :D

Merci à tous




Misange a formulé ce jeudi :
hello,
Et bien en fait tes deux dernières dates, même ayant été multipliées par
1
sont toujours en format texte : si tu changes le format et que tu mets
nombre
à la place de date sur ta colonne, tu verras que les deux dernières
restent
alignées à gauche et ne sont pas transformées. Excel est parfois "trop"
futé :
il essaie de t'arranger au maximum. Quand tu écris = mois (A4), excel
essaie
de convertir ta donnée en A4 en une date pour appliquer la fonction. Du
coup
il ne te signale pas qu'en fait c'est du texte.
Donc il faut soit que tu revoies ta procédure d'importation de données
pour
corriger cela, soit que tu utilises dateserial comme proposé.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Hello Miss-Ange !

Misange a présenté l'énoncé suivant :
au besoin mets nous un exemple sur c-joint.



Alors voilà :
http://cjoint.com/?jlkImRRYMy

En fait, ce n'est pas un problème de macro, c'est vraiment un problème
avec
ces dates qui paraissent être pourtant au bon format.
J'ai testé avec une formule > ou < à aujourdhui() et le problème est le
même.
Regarde dans le fichier les deux cellules colorées en jaune qui
proviennent
de ma base.

Circé
http://faqword.fr

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Bonsoir à tous,

Au moins, déjà, ça me rassure de voir que je ne débloquais pas
complètement !

Il s'agit de données récupérées d'une appli externe. Au départ, aucun
nombre n'était considéré comme numérique. Je les ai tous "convertis", y
compris les dates, par une multiplication par 1, car le format ne
suffit
pas dans ce cas.

Les dates sont OK, car dans une autre colonne, je récupère bien le mois
avec une formule =MOIS(date)...
Bon, je vérifie tout ça demain, il doit y avoir autre chose...

Je vous tiens au courant ! :D

Circé
http://faqword.fr

Modeste avait écrit le 10/09/2008 :
Bonsour® Circé avec ferveur ;o))) vous nous disiez :
Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver que
les date supérieures à aujourd'hui, je trouve tout !



verifie le format des dates,
pour cela, passe la plage "date_signature" en format nombre il doit
n'y
avoir que des nombres !!!

il ne faut pas que celles-ci soient en format texte

si ce n'est pas le cas
voir avec le menu Données convertir
ne selectionner que la colonne des dates-signature
à l'étape 3
format des données en colonne choisir date et le format correspondant
à
celui lu (visible)


--














Avatar
Mishell
Excel ne mélange jamais les nombres formatés nombres et les nombres formatés
texte. Un nombre formaté texte est toujours considéré comme étant supérieur
à un nombre formaté nombre.

Avant comparer un nombre formaté texte avec un nombre formaté nombre, il
faut reformater le nombre formaté texte. Dans une feuille, copier une
cellule vide, puis sélectionner les nombres formatés texte et faire Collage
spécial, Valeurs et addition.

En VBA, avant d'effectuer la comparaison avec une autre date (NOW par
exemple), on utilise la fonction Dateserial pour transformer une date
formatée texte en date formatée nombre . Si on ne fait pas cela, la date
formatée texte est toujours supérieure à une date formatée nombre.

Mishell


"Circé" wrote in message
news:
Bonjour Laurent et Mishell,

Je suis désolée, j'ai répondu à Misange sans avoir vu vos réponses !!!

Surtout que Mishell, tu a résolu mon problème ! Donc avec le DateSerial,
ça fonctionne nickel ! Un grand merci à toi, et si vous aviez une petite
explication en plus, c'est pas de refus.

En tous les cas, je garde ça dans mes tablettes.
Merci encore...

Bonne journée,

Circé
http://faqword.fr

Alors la fonction
Laurent a exposé le 11/09/2008 :
Bonjour Circé,
Ca marche aussi chez moi.
Par contre j'ai plutôt l'habitude d'utiliser now avec des parenthèse :
now()
Comme une fonction, il peut peu-être confondre now avec une variable.

Si ce n'est pas ça, peut être un problème de format de date.

@+
Laurent

"Circé" a écrit :

Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver que
les date supérieures à aujourd'hui, je trouve tout !

Merci par avance,
Circé
http://faqwore.fr










Avatar
Circé
Bonjour MichDenis,

Effectivement, j'ai testé et ça marche comme ça ! Je le saurai pour la
prochaine fois qui risque d'être très proche !
Ce projet-ci était terminé, j'ai appliqué la solution de Mishell qui
fonctionne bien.

Merci à tous

Circé
http://faqword.fr

Il se trouve que michdenis a formulé :
Après ton importation de données, applique
cette procédure sur les colonnes ayant des dates
comme tenu, cela devrait solutionner tes problèmes.

Ta petite proc. devrait fonctionner rondement après ça.
et tu es certaine qu'excel a compris qu'il a affaire à des dates.

En supposant que ton format date est du type "Format court"

'--------------------------------------
Sub test()
Dim DerLig As Long, X
With Feuil1
DerLig = .Range("A" & .Cells.Rows.Count).End(xlUp).Row
Application.EnableEvents = False
With .Range("A1:A" & DerLig)
.Replace Chr(160), ""
.Replace Chr(32), ""
X = .Value
.Value = ""
'Tu appliques le format de ton choix à tes dates.
.NumberFormat = "DD/MM/YY"
.Value = X
End With
Application.EnableEvents = True
End With
End Sub
'--------------------------------------




"Circé" a écrit dans le message de news:

Hello Misange,

Quel sournois, cet Excel !!! :D

Je me contenterai donc du DateSerial qui fonctionne très bien, car de
toutes façons, je ne peux pas modifier l'export (je n'ai pas la main
dessus).
En fait, cet export est fait plusieurs fois par semaine, et le
traitement des données par macro complémentaire interposé se fait à
chaque export... Le but est d'obtenir des résultats corrects et pas de
se prendre la tête ! :D

Merci à tous




Misange a formulé ce jeudi :
hello,
Et bien en fait tes deux dernières dates, même ayant été multipliées par
1
sont toujours en format texte : si tu changes le format et que tu mets
nombre
à la place de date sur ta colonne, tu verras que les deux dernières
restent
alignées à gauche et ne sont pas transformées. Excel est parfois "trop"
futé :
il essaie de t'arranger au maximum. Quand tu écris = mois (A4), excel
essaie
de convertir ta donnée en A4 en une date pour appliquer la fonction. Du
coup
il ne te signale pas qu'en fait c'est du texte.
Donc il faut soit que tu revoies ta procédure d'importation de données
pour
corriger cela, soit que tu utilises dateserial comme proposé.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Hello Miss-Ange !

Misange a présenté l'énoncé suivant :
au besoin mets nous un exemple sur c-joint.



Alors voilà :
http://cjoint.com/?jlkImRRYMy

En fait, ce n'est pas un problème de macro, c'est vraiment un problème
avec
ces dates qui paraissent être pourtant au bon format.
J'ai testé avec une formule > ou < à aujourdhui() et le problème est le
même.
Regarde dans le fichier les deux cellules colorées en jaune qui
proviennent
de ma base.

Circé
http://faqword.fr

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Bonsoir à tous,

Au moins, déjà, ça me rassure de voir que je ne débloquais pas
complètement !

Il s'agit de données récupérées d'une appli externe. Au départ, aucun
nombre n'était considéré comme numérique. Je les ai tous "convertis", y
compris les dates, par une multiplication par 1, car le format ne
suffit
pas dans ce cas.

Les dates sont OK, car dans une autre colonne, je récupère bien le mois
avec une formule =MOIS(date)...
Bon, je vérifie tout ça demain, il doit y avoir autre chose...

Je vous tiens au courant ! :D

Circé
http://faqword.fr

Modeste avait écrit le 10/09/2008 :
Bonsour® Circé avec ferveur ;o))) vous nous disiez :
Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver que
les date supérieures à aujourd'hui, je trouve tout !



verifie le format des dates,
pour cela, passe la plage "date_signature" en format nombre il doit
n'y
avoir que des nombres !!!

il ne faut pas que celles-ci soient en format texte

si ce n'est pas le cas
voir avec le menu Données convertir
ne selectionner que la colonne des dates-signature
à l'étape 3
format des données en colonne choisir date et le format correspondant
à
celui lu (visible)


--












Avatar
Mishell
Attention. Cette procédure modifie la valeur réelle de la cellule
01/07/2007 devenant 07/01/2007 et vice versa.

Mishell


"michdenis" wrote in message
news:
Après ton importation de données, applique
cette procédure sur les colonnes ayant des dates
comme tenu, cela devrait solutionner tes problèmes.

Ta petite proc. devrait fonctionner rondement après ça.
et tu es certaine qu'excel a compris qu'il a affaire à des dates.

En supposant que ton format date est du type "Format court"

'--------------------------------------
Sub test()
Dim DerLig As Long, X
With Feuil1
DerLig = .Range("A" & .Cells.Rows.Count).End(xlUp).Row
Application.EnableEvents = False
With .Range("A1:A" & DerLig)
.Replace Chr(160), ""
.Replace Chr(32), ""
X = .Value
.Value = ""
'Tu appliques le format de ton choix à tes dates.
.NumberFormat = "DD/MM/YY"
.Value = X
End With
Application.EnableEvents = True
End With
End Sub
'--------------------------------------




"Circé" a écrit dans le message de news:

Hello Misange,

Quel sournois, cet Excel !!! :D

Je me contenterai donc du DateSerial qui fonctionne très bien, car de
toutes façons, je ne peux pas modifier l'export (je n'ai pas la main
dessus).
En fait, cet export est fait plusieurs fois par semaine, et le
traitement des données par macro complémentaire interposé se fait à
chaque export... Le but est d'obtenir des résultats corrects et pas de
se prendre la tête ! :D

Merci à tous




Misange a formulé ce jeudi :
hello,
Et bien en fait tes deux dernières dates, même ayant été multipliées par
1
sont toujours en format texte : si tu changes le format et que tu mets
nombre
à la place de date sur ta colonne, tu verras que les deux dernières
restent
alignées à gauche et ne sont pas transformées. Excel est parfois "trop"
futé :
il essaie de t'arranger au maximum. Quand tu écris = mois (A4), excel
essaie
de convertir ta donnée en A4 en une date pour appliquer la fonction. Du
coup
il ne te signale pas qu'en fait c'est du texte.
Donc il faut soit que tu revoies ta procédure d'importation de données
pour
corriger cela, soit que tu utilises dateserial comme proposé.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Hello Miss-Ange !

Misange a présenté l'énoncé suivant :
au besoin mets nous un exemple sur c-joint.



Alors voilà :
http://cjoint.com/?jlkImRRYMy

En fait, ce n'est pas un problème de macro, c'est vraiment un problème
avec
ces dates qui paraissent être pourtant au bon format.
J'ai testé avec une formule > ou < à aujourdhui() et le problème est le
même.
Regarde dans le fichier les deux cellules colorées en jaune qui
proviennent
de ma base.

Circé
http://faqword.fr

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Bonsoir à tous,

Au moins, déjà, ça me rassure de voir que je ne débloquais pas
complètement !

Il s'agit de données récupérées d'une appli externe. Au départ, aucun
nombre n'était considéré comme numérique. Je les ai tous "convertis",
y
compris les dates, par une multiplication par 1, car le format ne
suffit
pas dans ce cas.

Les dates sont OK, car dans une autre colonne, je récupère bien le
mois
avec une formule =MOIS(date)...
Bon, je vérifie tout ça demain, il doit y avoir autre chose...

Je vous tiens au courant ! :D

Circé
http://faqword.fr

Modeste avait écrit le 10/09/2008 :
Bonsour® Circé avec ferveur ;o))) vous nous disiez :
Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver
que
les date supérieures à aujourd'hui, je trouve tout !



verifie le format des dates,
pour cela, passe la plage "date_signature" en format nombre il doit
n'y
avoir que des nombres !!!

il ne faut pas que celles-ci soient en format texte

si ce n'est pas le cas
voir avec le menu Données convertir
ne selectionner que la colonne des dates-signature
à l'étape 3
format des données en colonne choisir date et le format correspondant
à
celui lu (visible)


--


















Avatar
michdenis
01/07/07
01/08/08
24/11/08
01/07/2007
01/07/2008

Voici les dates qu'elles proposent et ce après avoir
manipulé ces données

| Je les ai tous "convertis", y compris les dates, par
| une multiplication par 1, car le format ne
| suffit pas dans ce cas.

Déjà, on peut constater que le format des dates n'est
pas le même pour les 5 dates... après la manipulation.

Était-ce le format "date" du fichier d'origine d'où provient
l'importation ? Quant à moi, je suis très surpris qu'excel
n'arrive pas à interpréter ces données comme des dates
correctement lui-même. Pourquoi lors d'un copier-coller
excel attribue-t-il un format texte à ces 2 dates ? C'est là la
vraie question....! Lorsque tu as la réponse à cela, tu appliques
le remède approprié.








"Mishell" a écrit dans le message de news:
%
Attention. Cette procédure modifie la valeur réelle de la cellule
01/07/2007 devenant 07/01/2007 et vice versa.

Mishell


"michdenis" wrote in message
news:
Après ton importation de données, applique
cette procédure sur les colonnes ayant des dates
comme tenu, cela devrait solutionner tes problèmes.

Ta petite proc. devrait fonctionner rondement après ça.
et tu es certaine qu'excel a compris qu'il a affaire à des dates.

En supposant que ton format date est du type "Format court"

'--------------------------------------
Sub test()
Dim DerLig As Long, X
With Feuil1
DerLig = .Range("A" & .Cells.Rows.Count).End(xlUp).Row
Application.EnableEvents = False
With .Range("A1:A" & DerLig)
.Replace Chr(160), ""
.Replace Chr(32), ""
X = .Value
.Value = ""
'Tu appliques le format de ton choix à tes dates.
.NumberFormat = "DD/MM/YY"
.Value = X
End With
Application.EnableEvents = True
End With
End Sub
'--------------------------------------




"Circé" a écrit dans le message de news:

Hello Misange,

Quel sournois, cet Excel !!! :D

Je me contenterai donc du DateSerial qui fonctionne très bien, car de
toutes façons, je ne peux pas modifier l'export (je n'ai pas la main
dessus).
En fait, cet export est fait plusieurs fois par semaine, et le
traitement des données par macro complémentaire interposé se fait à
chaque export... Le but est d'obtenir des résultats corrects et pas de
se prendre la tête ! :D

Merci à tous




Misange a formulé ce jeudi :
hello,
Et bien en fait tes deux dernières dates, même ayant été multipliées par
1
sont toujours en format texte : si tu changes le format et que tu mets
nombre
à la place de date sur ta colonne, tu verras que les deux dernières
restent
alignées à gauche et ne sont pas transformées. Excel est parfois "trop"
futé :
il essaie de t'arranger au maximum. Quand tu écris = mois (A4), excel
essaie
de convertir ta donnée en A4 en une date pour appliquer la fonction. Du
coup
il ne te signale pas qu'en fait c'est du texte.
Donc il faut soit que tu revoies ta procédure d'importation de données
pour
corriger cela, soit que tu utilises dateserial comme proposé.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Hello Miss-Ange !

Misange a présenté l'énoncé suivant :
au besoin mets nous un exemple sur c-joint.



Alors voilà :
http://cjoint.com/?jlkImRRYMy

En fait, ce n'est pas un problème de macro, c'est vraiment un problème
avec
ces dates qui paraissent être pourtant au bon format.
J'ai testé avec une formule > ou < à aujourdhui() et le problème est le
même.
Regarde dans le fichier les deux cellules colorées en jaune qui
proviennent
de ma base.

Circé
http://faqword.fr

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Bonsoir à tous,

Au moins, déjà, ça me rassure de voir que je ne débloquais pas
complètement !

Il s'agit de données récupérées d'une appli externe. Au départ, aucun
nombre n'était considéré comme numérique. Je les ai tous "convertis",
y
compris les dates, par une multiplication par 1, car le format ne
suffit
pas dans ce cas.

Les dates sont OK, car dans une autre colonne, je récupère bien le
mois
avec une formule =MOIS(date)...
Bon, je vérifie tout ça demain, il doit y avoir autre chose...

Je vous tiens au courant ! :D

Circé
http://faqword.fr

Modeste avait écrit le 10/09/2008 :
Bonsour® Circé avec ferveur ;o))) vous nous disiez :
Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver
que
les date supérieures à aujourd'hui, je trouve tout !



verifie le format des dates,
pour cela, passe la plage "date_signature" en format nombre il doit
n'y
avoir que des nombres !!!

il ne faut pas que celles-ci soient en format texte

si ce n'est pas le cas
voir avec le menu Données convertir
ne selectionner que la colonne des dates-signature
à l'étape 3
format des données en colonne choisir date et le format correspondant
à
celui lu (visible)


--


















Avatar
michdenis
J'ai omis de mentionner que dans le fichier publié,
si tu fais la manipulation qu'elle dit avoir fait ...

"Multiplier les données par 1" toute la colonne
des entrées "Date" , tu obtiens directement
la transformation de toutes ces données en date....
Pourquoi dans son fichier excel qu'elle possède,
cela ne se fait pas pour ces 2 dates ? Moi, je ne
saurais le dire à partir du fichier publié ....
????? Mystère ????




"Mishell" a écrit dans le message de news:
%
Attention. Cette procédure modifie la valeur réelle de la cellule
01/07/2007 devenant 07/01/2007 et vice versa.

Mishell


"michdenis" wrote in message
news:
Après ton importation de données, applique
cette procédure sur les colonnes ayant des dates
comme tenu, cela devrait solutionner tes problèmes.

Ta petite proc. devrait fonctionner rondement après ça.
et tu es certaine qu'excel a compris qu'il a affaire à des dates.

En supposant que ton format date est du type "Format court"

'--------------------------------------
Sub test()
Dim DerLig As Long, X
With Feuil1
DerLig = .Range("A" & .Cells.Rows.Count).End(xlUp).Row
Application.EnableEvents = False
With .Range("A1:A" & DerLig)
.Replace Chr(160), ""
.Replace Chr(32), ""
X = .Value
.Value = ""
'Tu appliques le format de ton choix à tes dates.
.NumberFormat = "DD/MM/YY"
.Value = X
End With
Application.EnableEvents = True
End With
End Sub
'--------------------------------------




"Circé" a écrit dans le message de news:

Hello Misange,

Quel sournois, cet Excel !!! :D

Je me contenterai donc du DateSerial qui fonctionne très bien, car de
toutes façons, je ne peux pas modifier l'export (je n'ai pas la main
dessus).
En fait, cet export est fait plusieurs fois par semaine, et le
traitement des données par macro complémentaire interposé se fait à
chaque export... Le but est d'obtenir des résultats corrects et pas de
se prendre la tête ! :D

Merci à tous




Misange a formulé ce jeudi :
hello,
Et bien en fait tes deux dernières dates, même ayant été multipliées par
1
sont toujours en format texte : si tu changes le format et que tu mets
nombre
à la place de date sur ta colonne, tu verras que les deux dernières
restent
alignées à gauche et ne sont pas transformées. Excel est parfois "trop"
futé :
il essaie de t'arranger au maximum. Quand tu écris = mois (A4), excel
essaie
de convertir ta donnée en A4 en une date pour appliquer la fonction. Du
coup
il ne te signale pas qu'en fait c'est du texte.
Donc il faut soit que tu revoies ta procédure d'importation de données
pour
corriger cela, soit que tu utilises dateserial comme proposé.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Hello Miss-Ange !

Misange a présenté l'énoncé suivant :
au besoin mets nous un exemple sur c-joint.



Alors voilà :
http://cjoint.com/?jlkImRRYMy

En fait, ce n'est pas un problème de macro, c'est vraiment un problème
avec
ces dates qui paraissent être pourtant au bon format.
J'ai testé avec une formule > ou < à aujourdhui() et le problème est le
même.
Regarde dans le fichier les deux cellules colorées en jaune qui
proviennent
de ma base.

Circé
http://faqword.fr

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Circé a écrit :
Bonsoir à tous,

Au moins, déjà, ça me rassure de voir que je ne débloquais pas
complètement !

Il s'agit de données récupérées d'une appli externe. Au départ, aucun
nombre n'était considéré comme numérique. Je les ai tous "convertis",
y
compris les dates, par une multiplication par 1, car le format ne
suffit
pas dans ce cas.

Les dates sont OK, car dans une autre colonne, je récupère bien le
mois
avec une formule =MOIS(date)...
Bon, je vérifie tout ça demain, il doit y avoir autre chose...

Je vous tiens au courant ! :D

Circé
http://faqword.fr

Modeste avait écrit le 10/09/2008 :
Bonsour® Circé avec ferveur ;o))) vous nous disiez :
Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver
que
les date supérieures à aujourd'hui, je trouve tout !



verifie le format des dates,
pour cela, passe la plage "date_signature" en format nombre il doit
n'y
avoir que des nombres !!!

il ne faut pas que celles-ci soient en format texte

si ce n'est pas le cas
voir avec le menu Données convertir
ne selectionner que la colonne des dates-signature
à l'étape 3
format des données en colonne choisir date et le format correspondant
à
celui lu (visible)


--


















Avatar
Mishell
Le fait de récupèrer le mois
avec une formule =MOIS(date)...
ne signifie pas que la date est correctement formatée au format Date. La
fonction Mois() récupère correctement le mois même dans une date au format
texte.

Pour bien formater une date au format date dans une cellule, on peut soit la
multiplier par 1, soit lui aditionner 0, soit la modifier en VBA avec la
fonction DateSerial.

Mishell



"Circé" wrote in message
news:OIJO$
Bonsoir à tous,

Au moins, déjà, ça me rassure de voir que je ne débloquais pas
complètement !

Il s'agit de données récupérées d'une appli externe. Au départ, aucun
nombre n'était considéré comme numérique. Je les ai tous "convertis", y
compris les dates, par une multiplication par 1, car le format ne suffit
pas dans ce cas.

Les dates sont OK, car dans une autre colonne, je récupère bien le mois
avec une formule =MOIS(date)...
Bon, je vérifie tout ça demain, il doit y avoir autre chose...

Je vous tiens au courant ! :D

Circé
http://faqword.fr

Modeste avait écrit le 10/09/2008 :
Bonsour® Circé avec ferveur ;o))) vous nous disiez :
Bonjour à tous !

Mais qu'est-ce qui cloche là-dedans ?...

For Each c In Range("date_signature")
If c.Value > Now Then
c.Offset(0, 5).value = "A"
End If
Next c

Ça me paraît tout bête, et pourtant, alors que je ne veux trouver que
les date supérieures à aujourd'hui, je trouve tout !



verifie le format des dates,
pour cela, passe la plage "date_signature" en format nombre il doit n'y
avoir que des nombres !!!

il ne faut pas que celles-ci soient en format texte

si ce n'est pas le cas
voir avec le menu Données convertir
ne selectionner que la colonne des dates-signature
à l'étape 3
format des données en colonne choisir date et le format correspondant à
celui lu (visible)


--






1 2