voici mon problème : lorsque j'importe une base de données, il arrive que certaine cellules affichent des résultats sous le format de date alors qu'il ne s'agit en réalité que de nombres
ex : 8050-09-7 sera transformé en 07/09/8050
J'ai déjà tenté la solution de changer le format de cellule en format personnalisé "aaaa-mm-j" ce qui effectivement visuellement fonctionne, mais la cellule reste au format date ce qui me gêne pour la suite de mes opérations.
J'ai également testé le fait de mettre la cellule en format texte au lieu de standard, ce qui fonctionne mais nécessite une opération manuelle trop longue compte tenu du nombre de cellules à vérifier.
Ce que je souhaiterais faire c'est l'opération inverse de celle effectuée automatiquement lors de l'import, c'est à dire de repasser d'un format date "jj/mm/aaaa" à un format texte xxxx-xx-x.
Via la fonction =TEXTE("A1";"aaaa-mm-j") ça fonctionne, mais cela implique d'insérer une nouvelle colonne et de faire glisser le calcul manuellement.
Est-ce qu'il serait possible de faire une macro qui tourne automatiquement à l'ouverture du classeur et qui effectue cette conversion de date en texte ?
Pour info voici un essai de code mais qui ne fonctionne pas :
Code:
Sub changement_date_en_heure()
For i = 6 To Range("A" & Rows.Count).End(xlUp).Row
If Cells(i, 2) <> "" Then
Cells(i, 3) = Application.WorksheetFunction.Text(Cells(i, 2), "yyyy-mm-d")
End If
Next i
End Sub
tu parles d'import.... tu ne peux pas importer la colonne en question sous format texte.... Sinon regarde peut être du coté de la conversion de données...
voici mon problème : lorsque j'importe une base de données, il arrive que certaine cellules affichent des résultats sous le format de date alors qu'il ne s'agit en réalité que de nombres
Dans ton processus d'importation, tu as la possibilité de sélectionner colonne par colonne le format du texte entre Standard, Texte ou Date, il te suffit donc de sélectionner Texte pour ta référence et le tour sera joué ...
Bon courage Ajout :Salut Pierrot
bah ton csv tu l'ouvres coment ? si tu le fait par fichier => ouvrir, cela appele l'assistant de conversion, et a cemoment pour la colone en question tu choisis le format texte.
quand je passe en texte une cellule qui était sous forme de date, la série de chiffre que je récupère est très différente de ce que je souhaite puisque le résultat correspond au nombre de jours entre la date et la date de référence sous excel (1er janvier 1900 si je ne m'abuse).
ex: 8050-09-7(fichier initial) sera transformé en 07/09/8050(date) qui sera transformé en 2246493(texte)
merci pour vos réponses, en effet j'ouvre le fichier CSV en faisant fichier => ouvrir, par contre comment dois-je faire pour faire intervenir l'assistant de conversion svp ? il ne se lance pas automatiquement ?
@Pierrot : ok pour l'import de données externes, j'ai même pu importer via un format xml avec les colonnes formatées en texte.
@pierrejean : impeccable ça fonctionne au poil, 2 sujets traités pour moi en 1 journée = un très grand merci.
Pour info, une autre solution est de renommer le fichier .csv en .txt avant de l'ouvrir dans Excel, si l'import est manuel, ce qui permet d'avoir accès à l'assistant de conversion
J'ai le même problème qu'Adrian a rencontré à la différence près que mes chiffres sont transformés au format JJ.mmm dans une colonne et au format mmm.aa dans une autre et que j'aimerais les avoir en format texte "simple" (par ex. 16.05).
Ce problème est apparu après avoir formaté mon ordi et installé Office 2010 pro à la place du standard.
Je pense qu'il suffit de modifier un peu la macro de pierrejean, mais ça dépasse largement mes capacités.
Merci pour ta réponse mais ce n'est pas tout à fait ce dont j'ai besoin.
Je pense que mon explication manquait de clarté et je m'en excuse.
Ci-dessous de meilleures explications :
- Colonne C doit rester comme elle est.
- Colonne D doit être au format texte (ligne 8: 16.mai -> 16.5)
- Colonne E doit également être au format texte (ligne 2 et suivantes: janv.72 -> 1.72)
- Les autres colonnes sont ok (sauf erreur car j'ai 5.5 millions de cellules)