Code:
1
2
3
4
5
6
7 Sub convert_test() For i = 1 To 10 cellule = Cells(i, 5) If IsDate(cellule) And VarType(cellule) = 7 Then cellule = format(cellule,"yyyy-dd-mm") If IsDate(cellule) Then Cells(i, 6) = CDate(cellule) Next End Sub
Version imprimable
Code:
1
2
3
4
5
6
7 Sub convert_test() For i = 1 To 10 cellule = Cells(i, 5) If IsDate(cellule) And VarType(cellule) = 7 Then cellule = format(cellule,"yyyy-dd-mm") If IsDate(cellule) Then Cells(i, 6) = CDate(cellule) Next End Sub
Tu n'as pas répondu à la question de DocMarti ..., il y as quoi dans ton fichier pour le 13 mai par exemple ?
la solution que tu présente ne semble pas gérer le cas du ou la date est supérieure au 12 du mois ...
pour ma part je persiste à penser que tu ne nous en dis pas assez sur la provenance des données et que le traitement des dates doit-être effectué avant .... comment reçoit tu ces données ?
Code:
1
2
3
4
5
6
7
8
9 Sub test() For i = 1 To 10 Cells(i, 1).Select Cells(i, 1) = Mydate(Cells(i, 1)) Next End Sub Function Mydate(d) Mydate = IIf(IsDate(Format(d, "yyyy-dd-mm")), Format(d, "yyyy-dd-mm"), Format(d, "yyyy-mm-dd")) End Function
je ne serais pas contre une petite explication!
je ne voudrai pas déduire 1 à la mauvaise personne!
ca marche rdurupt sur la 10 premier cellule je peux change les 10 premiers cellules par tout la colonne
le code ca marche parfaitement sauf que je suis en train de mettre des modifications pour sélection tout la colonne A et mettre les changement sur la dernier colonne vide.
j'ai essayé de mettre le code ci dessous mais ca
Code:
1
2
3
4
5
6
7 Sub test() Columns.Select Columns(A) = Mydate(Columns(A)) End Sub Function Mydate(d) Mydate = IIf(IsDate(Format(d, "yyyy-dd-mm")), Format(d, "yyyy-dd-mm"), Format(d, "yyyy-mm-dd")) End Function
Code:
1
2
3
4
5
6
7
8 Sub test() For i = 1 To range("A1").CurrentRegion.rows.count Cells(i, 1) = Mydate(Cells(i, 1)) Next End Sub Function Mydate(d) Mydate = IIf(IsDate(Format(d, "yyyy-dd-mm")), Format(d, "yyyy-dd-mm"), Format(d, "yyyy-mm-dd")) End Function
Et ceci, ca donne quoi?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Sub tt() dern = Cells(Rows.Count, 1).End(xlUp).Row Columns(4).Cells.Clear Set r = Range("A1:A" & dern) For i = 1 To dern Set c = Cells(i, 1) If Trim(c.Value) = "" Then Else t = Split(c.Value, "/") If UBound(t) = 2 Then converti = t(1) & "/" & t(0) & "/" & t(2) Set dest = Cells(c.Row, 4) dest.NumberFormat = "m/d/yyyy" dest.FormulaLocal = converti d = TypeName(dest.Value) If premier = "" Then premier = d Else If d <> premier Then dest.Select MsgBox "Probleme potentiel ici. Types de donnees differents" End If End If End If End If Next End Sub
Les deux codes ça marche à merveille le 1er code convertir la date dans la même colonne et le 2eme code reporte la date modifier vers la colonne D
Au lieu de précisé de mettre les modifications sur la colonne D je peux dire o code de mettre la modification sur la dernier colonne vide ?
Le code renseigné par Docmarti ca fonction a merveille juste quel m’encrasse des donnes que j’ai dans la colonne D je peux pas mettre les modifications dans la dernier colonne vide.
c'est bon j'ai bien trouvé la solution je vous remercie bcq de votre collaboration avec moi
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Sub tt() Set f = ActiveSheet 'ou Worksheets("Feuil1") With f.Cells Set rg = .Find(what:="*", After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, SearchFormat:=False, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False) If Not rg Is Nothing Then derniereColonne = rg.Column Else MsgBox "Il y a un probleme" Exit Sub End If End With dern = f.Cells(Rows.Count, 1).End(xlUp).Row Set r = f.Range("A1:A" & dern) For i = 1 To dern Set c = f.Cells(i, 1) If Trim(c.Value) = "" Then Else t = Split(c.Value, "/") If UBound(t) = 2 Then converti = t(1) & "/" & t(0) & "/" & t(2) Set dest = f.Cells(c.Row, derniereColonne + 1) dest.NumberFormat = "m/d/yyyy" dest.FormulaLocal = converti d = TypeName(dest.Value) If premier = "" Then premier = d Else If d <> premier Then dest.Select MsgBox "Probleme potentiel ici. Types de donnees differents" End If End If End If End If Next End Sub
bonjour a tous
oui j'ai remarqué cela aussi
quand on a une date (anglais) du style mm/jj/yyyy(10/07/2015)au format date dans la cellule je précise
et que l'on veut formater en francais il n'y a pas d'erreur mais ca ne change rien
alors astuce pour asctuce
exemple en A1 il y 10/07/2015
et bien
le fait d'utiliser trim fait de la date une valeur mais dans le bon ordreCode:cells(1,1)=trim(format(cells(1,1),"mm/dd/yyyy"))
par contre si c'est 10/25/2015 la conversion fonctionne car excel met pour les jour la valeur qui depasse 12 d'office au bon endroit