[VBA] - Erreur de format (Texte)

Bonsoir,

Lorsque j'importe mes données depuis un CSV, j'ai un problème de format.

Les valeurs écrites comme ceci : 9-99 deviennent des dates.

J'ai beau préciser (plusieurs fois même) qu'il s'agit d'un format texte, à ne pas modifier donc ; Excel persiste à faire ce changement.

Je joins un fichier qui illustre bien le problème.

Voir colonne [K].

Vous auriez une idée pour arrêter ce problème ?

Bonne soirée, à plus tard !

14test06.xlsm (0.99 Mo)

Bonjour,

Pas vu de date en K...

Tu dois importer ton fichier par Données / A partir d'un fichier CSV, et à l'étape 3 (ou 4, je ne me rappelle plus) tu peux choisir colonne par colonne le type de données.

C'est ici qu'il faut choisir Texte.

Tu peux également y choisir le format date MJA ou JMA si tu as des inversions jour/mois.

eric

Oups, je voulais parler de la colonne L.

Je vais essayer votre solution ! J'avais complètement oublié qu'on pouvait choisir le type de données.

Bon je ne trouve plus dans mes fichiers comment faire ça...

Bonjour,

'Données / A partir d'un fichier CSV'

Ca peut varier selon la version excel.

eric

Bonjour,

Je voulais dire, je ne sais plus comment définir le type de données directement dans l'import, lorsqu'on passe par VBA.

Il y a une ligne de code que j'ai déjà utilisé et qui permet de définir colonne par colonne, le format de données. Mais je ne parviens plus à mettre la main dessus...

Bonjour,

ah !

Et bien tu le fais manuellement en enregistrement de macro.

Tu pourras récupérer la syntaxe exacte pour les paramètres des colonnes.

eric

Bonsoir,

En fait, le format est bon, jusqu'à ce que s'exécute ce code :

        .Range(Cells(2, cib), Cells(lrdc, cib)).Replace What:="6", Replacement:="6-9", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

A ce moment là, le format est changé en format personnalisé.

Bonjour,

ah mais ce n'est plus du tout au moment de l'importation, c'est que tu les modifies après.

Essaie en insérant avant :

.Range(Cells(2, cib), Cells(lrdc, cib)).NumberFormat = "@"

mais ça va te mettre le format texte sur toute la plage, peut-être non désiré.

Sinon remplacer avec : Replacement:="'6-9"

dans la mesure ou l'apostrophe pour forcer le format texte ne te gêne pas pour la suite.

eric

Bonjour,

J'avais déjà utilisé cette option :

.Range(Cells(2, cib), Cells(lrdc, cib)).NumberFormat = "@"

Mais le "replace" change les valeurs par la suite...

Alors j'ai testé l'autre solution que vous proposez :

Replacement:="'6-9"

Et là. Miracle ça fonctionne !

Le " ' " n'apparaît pas et, pour le moment il ne gène pas l'exécution du reste du code.

Merci !

Rechercher des sujets similaires à "vba erreur format texte"