[VBA] - Eternelle erreur de format

Bonjour,

Depuis plus d'un an je me bats avec les problèmes de formats, parfois je bidouille quelque chose, parfois vous m'avez aidé sur le problème. Mais au final, celui-ci revient encore et toujours.

Le pire dans tout ça c'est que si les développeur d'Excel arrêtaient tout simplement d'appliquer des formats automatiques je n'aurais jamais aucun problème... (Ex : 1-9 qui devient 01sept ; les . qui deviennent des , ...)

Dans mon cas je veux générer une base de données à partir de plusieurs bases.
J'ai des codes renseignés ainsi : x.xx (ex 2.33) ; mais lorsque je récupère ces données pour les mettre dans une nouvelle feuille, Excel les transforme en 2,33 ce qui donne de multiples erreurs par la suite vue que je me sert de ces codes pour alimenter d'autres colonnes.

J'ai essayé de mettre les données au format "général" ; de changer les "," en "." sans succès.

Je joins un document, si vous souhaitez y jeter un œil.

La colonne en question s'appelle "Code CORINE" dans la feuille "TABLE DES CORRESPONDANCES".

Il faut regarder les cellules où il n'a pas de "-" (donc assez bas dans la feuille).

Je vous remercie de votre attention,

Bonne journée !

Bonjour,

une façon simple et infaillible est de faire précéder les valeurs d'une apostrophe

Bonjour,

Ou de formater préalablement la colonne (ou la plage) en texte !?

Cdlt.

Bonsoir,

une façon simple et infaillible est de faire précéder les valeurs d'une apostrophe

Déjà testé, mais ne fonctionne pas. Excel ne tient pas compte de l'apostrophe dans les "copier-coller" (je passe par une variable tableau).

Et j'ajoute l'apostrophe comme ceci :

    For Each c In .Range(.Cells(2, cib5), .Cells(lrhab, cib5))
        c.Value = "'" & c.Value
    Next

Ou de formater préalablement la colonne (ou la plage) en texte !?

Est-ce qu'il suffit de s'y prendre comme cela ?

ActiveSheet.Range("A:Z").NumberFormat = "@"

Ce code ne fonctionne pas dans mon cas, les "." sont toujours transformés en ","...

Comment vous y prendriez-vous ?

Bonne soirée !

Bonsoir,

une façon simple et infaillible est de faire précéder les valeurs d'une apostrophe

Déjà testé, mais ne fonctionne pas. Excel ne tient pas compte de l'apostrophe dans les "copier-coller" (je passe par une variable tableau).

Et j'ajoute l'apostrophe comme ceci :

    For Each c In .Range(.Cells(2, cib5), .Cells(lrhab, cib5))
        c.Value = "'" & c.Value
    Next

oui, je capte les données dans un array, je prends ensuite chaque valeur et lui adjoins l'apostrophe

Bonjour,

Est-ce qu'il suffit de s'y prendre comme cela ?

ActiveSheet.Range("A:Z").NumberFormat = "@"

Ce code ne fonctionne pas dans mon cas, les "." sont toujours transformés en ","...

si, mais faut le mettre au bon endroit.
Vu que tu supprime des colonnes pour faire le ménage, si tu le fais avant tu te retrouves à nouveau avec le format Général.

Dans Sub import() :

For a = lctc To 1 Step -1
    If .Cells(1, a) <> "CD_HAB_ENTRE" And .Cells(1, a) <> "CD_HAB_SORTIE" And .Cells(1, a) <> "CD_TYPO_ENTRE" And .Cells(1, a) <> "CD_TYPO_SORTIE" Then .Cells(1, a).EntireColumn.Delete
Next a
.Columns(6).NumberFormat = "@"

Indépendamment de ça, tu ne peux pas mettre toutes tes optimisations dans un Sub séparé.
ScreenUpdating par exemple est réactivé sur le End Sub, c'est comme si tu ne l'avais pas mis.
eric

Bonsoir,

Merci pour vos réponses ! En effet, en m'y prenant comme indiqué par eriiic, je n'ai plus de problème avec les virgules.
Ça va vraiment m'être utile ! Je vais essayer d'appliquer ça systématiquement lorsque j'importe des données pour éviter tout problème.

Bonne soirée !

Rechercher des sujets similaires à "vba eternelle erreur format"