IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Importation : Notation scientifique vs texte [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Points : 234
    Points
    234
    Par défaut Importation : Notation scientifique vs texte
    Bonjour,
    J'importe un fichier ".xls" issue d'un processus automatisé non modifiable (CMS médical) sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       Workbooks.Open ret, ReadOnly:=True
       With ActiveWorkbook
          i = .ActiveSheet.[A1].CurrentRegion.Rows.Count
          a = .ActiveSheet.Range("A2:F" & i).Value
             WsI.Range("A2:F" & i) = a 'Feuille cible
          .Close
       End With
    Aléatoirement quelques cellules sont au format scientifique et celui-ci est conservé dans le fichier cible (malgré que les cellules cibles soient au format Texte).
    Comment contourner efficacement ce pb ?
    Merci.

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par galopin01 Voir le message
    Aléatoirement quelques cellules sont au format scientifique et celui-ci est conservé dans le fichier cible (malgré que les cellules cibles soient au format Texte).
    Comment contourner efficacement ce pb ?
    C'est probablement que ces valeurs au format scientifique ne sont pas de type numerique mais de type texte (String).

    Remplace la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WsI.Range("A2:F" & i) = a
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WsI.Range("A2:F" & i).NumberFormat = ""
    WsI.Range("A2:F" & i).FormulaLocal = a
    WsI.Range("A2:F" & i).NumberFormat = "@"
    Cordialement

    Docmarti.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Points : 234
    Points
    234
    Par défaut
    Bonjour,
    Pour le coup toutes les données sont maintenant au format scientifique même celles qui au départ ne l'étaient pas !
    Pour l'instant j'arrive à un résultat avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       Workbooks.Open ret, ReadOnly:=True
       With ActiveWorkbook
          i = .ActiveSheet.[A1].CurrentRegion.Rows.Count
          a = .ActiveSheet.Range("A2:F" & i).Value
             WsI.Range("A2:F" & i) = a
             WsI.Columns(5).NumberFormat = "0"
             WsI.Columns(5).HorizontalAlignment = xlLeft
          .Close
       End With
    Mais je me rends bien compte que c'est un peu illusoire :

    Bien que ce ne soit affiché nulle part VBA (et Excel) a conservé quelque part dans un recoin de sa mémoire cette information que quelques cellules de départ étaient au format scientifique.
    Ce qui est un comble quand on sait que les données d'origine sont toutes au format texte (alphanumérique) et une bonne centaine ne comporte aucun caractère alphabétique (14 digits )

    Pour reformuler, après expériences, il semble que le format de départ n'a rien à voir : On peut écrire presque tous les nombres à 14 digits sous une forme normale mais dès qu'on écrit 10705032013666 là Excel considère qu'il ne peut afficher cela qu'en notation scientifique... Pfff !

    Bon je vais voir si je peux m'en tirer avec ce subterfuge.

    Merci quand même d'avoir essayé !

    A+

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    2 questions:
    1) Quelle langue apparait dans tes Parametres linguistiques regionaux du Panneau de Configuration ?

    2) Pourrais-tu nous faire un copier/coller d'une ligne de donnees du classeur qui contient les donnees d'origine?
    Cordialement

    Docmarti.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par galopin01 Voir le message
    Bonjour,
    et une bonne centaine ne comporte aucun caractère alphabétique (14 digits )

    A+
    L'affichage d'Excel en mode numérique est limité à 13 chiffres. C'est juste normal et automatique qu'avec 14 chiffres, il passe en notation scientifiques.

    Et avec Option Strict OFF, ou non spécifiquement mis à On. VBA convertit automatiquement un texte qui a l'air d'un nombre en nombre. D'autant plus que tu demandes un format numérique.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Points : 234
    Points
    234
    Par défaut
    Bonsoir,
    Citation Envoyé par Docmarti Voir le message
    2 questions:
    1) Quelle langue apparait dans tes Parametres linguistiques regionaux du Panneau de Configuration ?

    2) Pourrais-tu nous faire un copier/coller d'une ligne de donnees du classeur qui contient les donnees d'origine?
    1)Français(France)
    2)Dans ce fichier source (.xls mode de compatibilité) toutes les cellules sont en format Standart alignement gauche
    On voit que la plupart des cellules (colonne 5) même celles qui ont 14 digits (ou plus) affichent tous les caractères, sauf la seconde
    Système de fermeture artérielle	St Jude	AngioSeal STS Plus	AngioSeal STS Plus	05414734004992	202
    Cathéters diagnostiques	Cordis	JL3.5 5F	JL3.5 5F	1.0705E+13	153
    Cathéters d'angioplastie	Cordis	XB3 6F	XB3 6F	20705032020142	57
    Guides	Abbott	BMW	BMW 0.014 HYDRO 3CM (SING)	1001780-HC	44
    Ballons	Cordis	empira	3  10	00812917020831	5
    Introducteurs	Cordis	AVANTI 4F Fémoral	AVANTI 4F Fémoral	10705032009911	1
    Cathéters spéciaux	Medtronic	Export	Export	00613994416063	1
    Cathéters diagnostiques	Cordis	JL4	JL4	171808311017333750	1
    Ballons	Terumo	RyujinPlus 2.4x40	RyujinPlus 2.4x40	04987350676153	1
    clementmarcotte :
    Euh...
    Option Strict OFF ??? (Excel 2010 ?)

  7. #7
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    C'est inutilisable. Ce serait mieux que tu copies quelques donnees dans un fichier xlsx et que tu joignes ce fichier.
    Pour qu'on puisse analyser le format des cellules et surtout le type des differentes donnees.
    Cordialement

    Docmarti.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Points : 234
    Points
    234
    Par défaut
    bonjour,
    Une réduction d'un fichier source.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par galopin01 Voir le message

    les données d'origine sont toutes au format texte (alphanumérique)
    Ce n'est pas le cas. Les donnees qui te causent probleme sont de type numerique (Double) alors que les autres sont de type String.

    Tu peux verifier avec la fonction TypeName :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t = TypeName(ActiveCell.Value)
    Ces donnes numeriques peuvent etre converties en Texte en utilisant la fonction Convertir.
    Cordialement

    Docmarti.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Points : 234
    Points
    234
    Par défaut
    Oui,
    C'est toute la différence entre "Format" et "Type" !
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/02/2014, 17h06
  2. Conversion en double et notation scientifique
    Par bert24 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/09/2005, 13h26
  3. Notation scientifique
    Par Equus dans le forum Débuter
    Réponses: 4
    Dernier message: 03/02/2005, 14h16
  4. importation d'un fichier texte vers excel
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2005, 11h47
  5. Conversion fpu -> notation scientifique décimale
    Par Alucard_Math dans le forum Assembleur
    Réponses: 4
    Dernier message: 13/05/2004, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo