conversion texte en date problématique

meles

XLDnaute Nouveau
Bonjour,

J'ai un fichier Excel dont une colonne contient des dates au format texte du type "01/01/2013" et qui se placent par défaut à gauche de la cellule.
j'ai changé le format de la colonne, en sélectionnant le format date, seulement rien ne bouge. cependant quand je double clique dans une cellule, elle s'actualise.

j'ai tenté cette solution récupérée sur le net:
"J'ai mis le format 01-01-2013 dans une cellule et j'y ai affecté un format texte, histoire de ressembler à ton cas. Ensuite, j'ai saisis le chiffre 1 dans une cellule puis j'ai copié cette cellule. J'ai sélectionné la date au mauvais format puis j'ai fait "collage spécial" et ai coché "multiplication". La cellule 01-01-2013 s'est transformée en 41275. Je lui ai affecté un format date et tout est ok."

mais elle ne marche pas à tout les coups. car la suite de chiffre est incohérente et n'est plus reconnue lors du changement de format cellule.
j'ai aussi tenté en basant par des formules avec STXT, GAUCHE, DROITE mais pas trouvé la bonne formule
et je n'y connais rien en prog, vb macro et le reste.

une piste ?
merci d'avance
 

meles

XLDnaute Nouveau
super, merci
cela semble bien marcher avec le première solution.

par contre il me reste un souci :
certaines dates apparaissent comme suit : 4/5/216 au lieu de 04/05/2016 (sous format standard ou format date).
j'ai tenté le format personnalisée et sélectionné jj/mm/aaaa mais rien de probant.
je dois à nouveau double cliquer sur la cellule pour que cela soit activé.

une solution pour en terminer?
 

Staple1600

XLDnaute Barbatruc
Re

En creusant la question, je me suis aperçu du petit souci illustré par les macros ci-dessous.
(NB: Macro à tester sur une feuille vierge)
Est-ce que quelqu'un peut m'expliquer ces deux points
1) pour IsDate dit vrai alors que le contenu de la cellule n'est pas un date valide (car il y a des "espaces" en début de cellule)
2) Pourquoi la macro a inverse le jour et le mois et donc applique le format mm/dd/yyyy alors qu'elle doit seulement supprimer les caractères ASCII 160 et 32
VB:
Sub Test()
Cells.Clear
MsgBox "A1 contient une date? ->" & IsDate([A1])
Range("A1:B15") = Chr(160) & Chr(160) & Chr(32) & Date
MsgBox "A1 contient une date? ->" & IsDate([A1]) & Chr(13) & "(sauf que la date n'est pas valide, alors pourquoi tu dis Vrai, Monsieur VBA?)"
a Range("A1:A15") 'format date américain
b Range("B1:B15") 'format date Ok
MsgBox "On peut voir qu'il y a petit souci sur la colonne A"
End Sub
Sub a(p As Range)
Dim r As Range
For Each r In p
If Len(r) > 0 Then
r.Value = Replace(Replace(r, Chr(160), vbNullString), Chr(32), vbNullString)
End If
Next
End Sub
Sub b(p As Range)
Dim r As Range
For Each r In p
If Len(r) > 0 Then
r.Value = Replace(Replace(r, Chr(160), vbNullString), Chr(32), vbNullString)
r.NumberFormat = "mm/dd/yyyy"
End If
Next
End Sub
 

Staple1600

XLDnaute Barbatruc
Re,

Suite
J'ai beau me creuser les méninges
Je comprends pas le pourquoi de la chose
Même phénomène avec cette variante (sans boucle)
VB:
Sub c()
Dim p As Range: Set p = Range("A1:B15")
Cells.Clear
With p
.Value = Chr(160) & Chr(160) & Chr(32) & Date: .Replace Chr(160), "", 2: .Replace Chr(32), "", 2
End With
p(1, 2).Resize(15).NumberFormat = "mm/dd/yyyy"
End Sub
 

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
une autre solution c'est de mettre le curseur dans une cellule vide, puis faire un copier, puis sélectionner la plage de dates, collage spécial, cocher "Ajouter" ou "Addition" selon la version puis OK, après tu peux changer le format comme tu veux.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
311 719
Messages
2 081 871
Membres
101 828
dernier inscrit
Did-Pan