Format de cellule

Résolu/Fermé
nany974 Messages postés 53 Date d'inscription jeudi 28 février 2013 Statut Membre Dernière intervention 1 juillet 2022 - 1 oct. 2014 à 10:00
 Nany974 - 2 oct. 2014 à 16:50
Bonjour,
Dans excel, je voudrais changer une année en date (par exemple, 2003 est déjà dans la case et je voudrais qu'il se transforme en 01/01/2003) mais quand je change le format de cellule, de standard à date, excel me met automatiquement 25/06/1905.
Quelqu'un peut m'expliquer pourquoi ?
J'ai environ 500 fiches et j'ai aucunement envie de les modifier une à une.
Merci d'avance pour votre aide !!!
A bientôt.
A voir également:

7 réponses

tontong Messages postés 2549 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 23 avril 2024 1 054
1 oct. 2014 à 11:24
Bonjour,
Pour excel une date est un nombre, c'est même le nombre de jours écoulés depuis la référence du 01/01/1900. Ce nombre peut être affiché sous différentes formes, ce sont les "Formats". Ici 2003 est le nombre de jous écoulés du 01/01/1900 au 25/06/1905.

Pour modifier il faut:
1- Sélectionner la cellule et taper 1/1/ devant 2003.
2- Changer le format standard en "aaaa".

Si les "fiches" sont des "Feuil" ou onglets d'un même classeur on peut économiser des manipulations avec une sélection multiple des onglets (en maintenant la touche shift ou la touche ctrl enfoncée).
1
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
1 oct. 2014 à 11:27
Bonjour,

une date pour excel est le nombre de jours depuis le 01/01/1900 (jour=1).
2003 est donc le 25/06/1905

Ci-joint une petite macro.
Ouvrir ce fichier, puis sur ta feuille sélectionner les cellules ou plages à convertir et faire Ctrl+d pour lancer la macro.

Par sécurité et pour te permettre de faire une sélection plus large seules sont traitées les cellules de la sélection :
- numériques (donc pas le résultat d'une formule)
- les valeurs comprises entre 1950 et 2060 (on peut modifier)
https://www.cjoint.com/?DJblCMGKVL6
Contrôler le résultat avant de sauvegarder.

eric
1
tontong Messages postés 2549 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 23 avril 2024 1 054
2 oct. 2014 à 11:40
Bonjour,
La solution décrite au #1 avec une sélection multiple des feuilles et la modification du contenu d'une cellule contenant 2003 fonctionne chez moi. Les cellules 01/01/2003 ne sont pas affectées.
Nota: ce n'est pas le cas avec Rechercher/remplacer.
1
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
2 oct. 2014 à 16:23
Bonjour,

A quoi Est-ce dû ?
Oupsss, je ne sais pas ce qu'il c'est passé avec CDate("019501/01/" & c.Value) mais c'est "01/01/" qu'il faut.
J'ai dû oublier de changer de fenêtre avant de vouloir écrire ailleurs.
Par sécurité si jamais tu as des années en texte on va compléter un peu:
If clng(c) >= anMin And clng(c) <= anMax Then c = CDate("01/01/" & c.Value)

eric
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
2 oct. 2014 à 16:46
j'ai 500 onglets
La fonction ne devrait pas fonctionner pour une sélection 3D (sur plusieurs feuilles).
Si tu as des critères assez stricts (plages identiques pour toutes les feuilles, et/ou un texte à coté à détecter, etc ) pour ne pas modifier par erreur on voir peut balayer les feuilles si tu veux.

eric
1
Ca fonctionne, pas de bug, car c'etait effectivement sur plusieurs feuilles mais dans une cellule donnée, identique sur toutes les feuilles donc c'est impeccable !!!
MERCI
0
nany974 Messages postés 53 Date d'inscription jeudi 28 février 2013 Statut Membre Dernière intervention 1 juillet 2022 16
2 oct. 2014 à 10:39
merci tontong, ta solution est très bien, le seul hic c'est que j'ai 500 onglets ou feuilles dans un même document, certains sont déjà au bon format date (01/01/2003) et d'autres non, du coup je dois les vérifier une à une...


eriic, mille mercis aussi.
je viens de tester la petite macro malheureusement, j'ai un message d'erreur : erreur d'exécution 13 incomptatibilité de type

Sub convertDate()
' converti une année en date au 01/01
' pour toutes les cellules de la sélection
Const anMin As Long = 1960 'valeur min traitée
Const anMax As Long = 2050 'valeur max traitée
Dim c As Range
For Each c In Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
If c >= anMin And c <= anMax Then c = CDate("019501/01/" & c.Value)
Next c
End Sub

A quoi Est-ce dû ?
J'ai pourtant pris la peine de vérifier le format de cellule (afin qu'il soit bien en nombre).

Peux-tu m'éclairer ?
Merci d'avance
0
nany974 Messages postés 53 Date d'inscription jeudi 28 février 2013 Statut Membre Dernière intervention 1 juillet 2022 16
2 oct. 2014 à 16:36
tontong, j'ai du louper qqchose car chez moi, ça ne marche pas.

eriiic, ça marche !!!!

10 000 mercis à tous les 2 ! vous êtes mes sauveurs

A bientôt !!!
0