je suis tomber sur une discussion a la quelle j'ai répondu et j'ai décidé d'aller plus loin dans mes recherche
alors le sujet c'etait les dates
ah... les dates francais /americains /javanorusse
j'ai voulu par exemple transférer des dates au format "dd.mm.yyyy" d'une colonne a une autre en changeant le separateur textuel "." pour "/" et sans boucle
je me suis dit je vais faire une fonction public puis inserer la formules dans les cellules concernées jusque la rien de bien compliqué
mais la ou le bas blaisse c'est le format
et tout particulierement l'enorme coquille dans la fonction interne entre les formats dd/mm/yyyy" "m/d/yyyy" et enfin "mm/dd/yyyy" tout du moins les deux derniers
voila deux fonctions qui parraissent similaires mais il n'en est rien
la 2d
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Function convertDATE1(cel) convertDATE1 = CDate(Replace(cel.Text, ".", "/")) End Function
bon elle ne sont pas tres compliqué faut etre honnete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Function convertDATE2(cel) convertDATE2 = Replace(cel.Text, ".", "/") End Function
maintenant faisons quelques testes avec la fonction 1
et bien examinez le résultat avec la "bis" et trois" la 1ere n'en parlons pas nous connaissons ce soucis (francais/americain)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub test_convertedate1_1() With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) .Offset(0, 1).FormulaR1C1 = "=convertdate1(RC[-1])" .Offset(0, 1).NumberFormat = "dd/mm/yyyy" End With End Sub ' Sub test_convertedate1_bis() With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) .Offset(0, 1).FormulaR1C1 = "=convertdate1(RC[-1])" .Offset(0, 1).NumberFormat = "mm/dd/yyyy" End With End Sub ' Sub test_convertedate1_trois() With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) .Offset(0, 1).FormulaR1C1 = "=convertdate1(RC[-1])" .Offset(0, 1).NumberFormat = "m/d/yyyy" End With End Sub
bien maintenant testons la 2d fonction
examinez bien le resultat avec les 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub test_convertedate2_1() With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) .Offset(0, 1).FormulaR1C1 = "=convertdate2(RC[-1])" .Offset(0, 1).NumberFormat = "m/d/yyyy" End With End Sub ' Sub test_convertedate2_bis() With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) .Offset(0, 1).FormulaR1C1 = "=convertdate2(RC[-1])" .Offset(0, 1).NumberFormat = "mm/dd/yyyy" End With End Sub ' Sub test_convertedate2_trois() With Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) .Offset(0, 1).FormulaR1C1 = "=convertdate2(RC[-1])" .Offset(0, 1).NumberFormat = "dd/mm/yyyy" End With End Sub
la celui qui me l'expliquera dans un language que je comprends méritera un + 1000
y a vraiment de quoi tourner en bourique non?
messieux a vous l'honneur
Partager