6 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
27 avril 2009 à 15:40
27 avril 2009 à 15:40
Il faut essayer cela :
Dim MaDate As Date l = 2 While Not IsEmpty(Cells(l, 8)) MaDate = DateValue(Replace(Cells(l, 8).Value, ".", "/")) Cells(l, 8).NumberFormat = "dd/mm/yyyy" Cells(l, 8).Value = MaDate l = l + 1 Wend
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
27 avril 2009 à 14:23
27 avril 2009 à 14:23
Bonjour,
Le problème doit être que VBA, quand il fait la convertion de texte à date, travaille en format de date américaine c'est à dire en MM/JJ/AAAA. D'ailleurs je suis prêt a parier que celles qui ne sont pas converties sont toutes les dates dont les deux premiers chiffres forment un nombre supérieur à 12 (il les laisse en texte car c'est une date invalide en format américain)
Je propose de modifier légérement le code de la manière suivante :
Je pense que cela doit fonctionner
A+
Le problème doit être que VBA, quand il fait la convertion de texte à date, travaille en format de date américaine c'est à dire en MM/JJ/AAAA. D'ailleurs je suis prêt a parier que celles qui ne sont pas converties sont toutes les dates dont les deux premiers chiffres forment un nombre supérieur à 12 (il les laisse en texte car c'est une date invalide en format américain)
Je propose de modifier légérement le code de la manière suivante :
Dim MaDate As Date l = 1 While Not IsEmpty(Cells(l, 8)) MaDate = Replace(Cells(l, 8).Value, ".", "/") Cells(l, 8).NumberFormat = "dd/mm/yyyy" Cells(l, 8).Value = MaDate l = l + 1 Wend
Je pense que cela doit fonctionner
A+
Hum, non j'ai un message d'erreur d'incompatibilité de type 13...
Par contre, en tricotant j'ai essayé ca :
l = 1
While Not IsEmpty(Cells(l, 7))
Cells(l, 7).Value = Replace(Cells(l, 7).Value, ".", "/")
Cells(l, 7).NumberFormat = "dd/mm/yyyy"
Cells(l, 7).Value = MaDatea
l = l + 1
Wend
Toutes les valeurs de la colonne sont remplacées par 00/01/1900. Ce sont bien des valeurs au format date par contre...Et meme la valeur de la premiere cellule de la colonne qui contient "date", le titre de la colonne a été changée en 00/01/1900 !
Décidemment, novice en VBA un jour, novice en VBA touj...longtemps !
Une idée ?
Par contre, en tricotant j'ai essayé ca :
l = 1
While Not IsEmpty(Cells(l, 7))
Cells(l, 7).Value = Replace(Cells(l, 7).Value, ".", "/")
Cells(l, 7).NumberFormat = "dd/mm/yyyy"
Cells(l, 7).Value = MaDatea
l = l + 1
Wend
Toutes les valeurs de la colonne sont remplacées par 00/01/1900. Ce sont bien des valeurs au format date par contre...Et meme la valeur de la premiere cellule de la colonne qui contient "date", le titre de la colonne a été changée en 00/01/1900 !
Décidemment, novice en VBA un jour, novice en VBA touj...longtemps !
Une idée ?
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
27 avril 2009 à 15:29
27 avril 2009 à 15:29
Oui mais la c'est normal car si la variable MaDatea n'est pas initialisée cela donne 00/01/1900.
Pour ne pas toucher le titre de la colonne commencer à l=2
Au fait dans le test MaDate est bien déclarée et c'est MaDatea qui est utilisée ?
A+
Pour ne pas toucher le titre de la colonne commencer à l=2
Au fait dans le test MaDate est bien déclarée et c'est MaDatea qui est utilisée ?
A+
Oui tu as raison pardon, le 00/01/1900 est normal dans ce cas.
Et pour le madatea, j'ai fait ca car je dois le faire sur 2 colonnes (G et H) donc deux variables madatea et madateb... :-( désolé pour le manque d'imagination !
Par contre, ton code ne fonctionne pas...il me surligne ceci meme en ayant défini au départ "madate as date" :
madate = Replace(Cells(l, 7).Value, ".", "/")
Voila pourquoi je voulais transformer ton code en :
l = 1
While Not IsEmpty(Cells(l, 7))
Cells(l, 7).Value = Replace(Cells(l, 7).Value, ".", "/")
Cells(l, 7).NumberFormat = "dd/mm/yyyy"
l = l + 1
Wend
Mais meme probleme que précédemment, les premiers chiffres jj inférieurs a 12 sont convertis sous format date puisque VBA pense que ce sont les mois, et ceux dont les premiers chiffres sont supérieurs a 12 sont conservés au format standard...
Et pour le madatea, j'ai fait ca car je dois le faire sur 2 colonnes (G et H) donc deux variables madatea et madateb... :-( désolé pour le manque d'imagination !
Par contre, ton code ne fonctionne pas...il me surligne ceci meme en ayant défini au départ "madate as date" :
madate = Replace(Cells(l, 7).Value, ".", "/")
Voila pourquoi je voulais transformer ton code en :
l = 1
While Not IsEmpty(Cells(l, 7))
Cells(l, 7).Value = Replace(Cells(l, 7).Value, ".", "/")
Cells(l, 7).NumberFormat = "dd/mm/yyyy"
l = l + 1
Wend
Mais meme probleme que précédemment, les premiers chiffres jj inférieurs a 12 sont convertis sous format date puisque VBA pense que ce sont les mois, et ceux dont les premiers chiffres sont supérieurs a 12 sont conservés au format standard...
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
27 avril 2009 à 15:57
27 avril 2009 à 15:57
Il faut essayer la syntaxe de mon post précédent pour le forcer à convertir en date :
MaDate = DateValue(Replace(Cells(l, 8).Value, ".", "/"))
Dis moi le résultat...
A+
MaDate = DateValue(Replace(Cells(l, 8).Value, ".", "/"))
Dis moi le résultat...
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
:-)
Voila voila, ton code marche parfaitement !!
Toutes les dates sont au bon format !
Par contre, une petite derniere...Sais tu comment se fait-il qu'excel transforme une date en un nombre (qui a mon avis doit etre le Xe jour depuis 01/01/1900) ?
Parceque du coup, j'ai le bon format date dans ma table, mais mes réchercheV cherchent un nombre...
Voila voila, ton code marche parfaitement !!
Toutes les dates sont au bon format !
Par contre, une petite derniere...Sais tu comment se fait-il qu'excel transforme une date en un nombre (qui a mon avis doit etre le Xe jour depuis 01/01/1900) ?
Parceque du coup, j'ai le bon format date dans ma table, mais mes réchercheV cherchent un nombre...
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
27 avril 2009 à 16:01
27 avril 2009 à 16:01
A super !
Oui c'est bien cela une date en format numérique donne un numéro d'odre depuis le 01/01/1900 mais le Recherchev doit chercher une date parmi des dates peu importe le format de présentation de la date.
Oui c'est bien cela une date en format numérique donne un numéro d'odre depuis le 01/01/1900 mais le Recherchev doit chercher une date parmi des dates peu importe le format de présentation de la date.
Parceque...hummm longue histoire courte :
Mon pgrm insère une colonne A dans ma table, qui reprend des données dont cette date que nous venons de mettre au bon format.
Le cellule (A,1) contient donc par exemple ( ref1 & " " & ref2 & " " & date)
Dans une autre feuille, une somme si recherche et fais la somme si les critères sont respectés. Sauf que la date sous forme jj/mm/aaaa, il ne la trouve pas. Apparemment, il veut le format numérique.
Evidemment, je peux faire faire a mon pgrm d'ajouter dans une colonne vide les valeurs égales au format numérique de mes dates jj/mm/aaaa.
Mais bon...
En tout cas, merci beaucoup, une bonne épine du pied de retirée !
Mon pgrm insère une colonne A dans ma table, qui reprend des données dont cette date que nous venons de mettre au bon format.
Le cellule (A,1) contient donc par exemple ( ref1 & " " & ref2 & " " & date)
Dans une autre feuille, une somme si recherche et fais la somme si les critères sont respectés. Sauf que la date sous forme jj/mm/aaaa, il ne la trouve pas. Apparemment, il veut le format numérique.
Evidemment, je peux faire faire a mon pgrm d'ajouter dans une colonne vide les valeurs égales au format numérique de mes dates jj/mm/aaaa.
Mais bon...
En tout cas, merci beaucoup, une bonne épine du pied de retirée !
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
27 avril 2009 à 16:32
27 avril 2009 à 16:32
OK, si tu veux de l'aide pour le somme.si, n'hésites pas a mettre un morceau de fichier en ligne.
Je pense que c'est en effet encore un problème de type de données entre les textes, les dates et les numériques...
A+
Je pense que c'est en effet encore un problème de type de données entre les textes, les dates et les numériques...
A+
27 mai 2014 à 19:34