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 :

Nombre stocké sous format texte


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut Nombre stocké sous format texte
    bonjour,

    je charge des données dans un tableau excel via une macro. lors de larecupération des données , j'ai un message d'erreur dans la cellule du type : nombre stocké sous format texte .

    comment faire pour convertir lors de l'import ces données sous format numérique.

    merci de votre aide.

    olivier

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je n'ai pas bien compris mais tu peux toujours essayer
    Mais tout dépend de la valeur qu'a ta donnée.
    Si tu pouvais être plus précis

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    J'importe via un macro des cours d'une base de données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Function chargement_cours_j_moins1correlationindice(codeprodui) As Double
        Dim code_prod As String
        Dim cours As Double
        Dim ptr As Variant
     
    'cette fonction sert à récupérer les informations pour enrichir l'onglet correlation indice
        cours = 0
     
     Set ptr = CreateObject("ADODB.Recordset")
     
     
        ptr.Open "SELECT _COURSCLOSE FROM omega.com.prixhist WHERE _codeprodui = '" & codeprodui & "' ORDER BY _DATE DESC", Mybd
        Do While Not ptr.EOF
     
            cours = ptr("_COURSCLOSE")
            Exit Do
        Loop
        chargement_cours_j_moins1correlationindice = cours
     
    End Function

    je récupère bien dans mon tableau excel les cours souhaités. Le problème est que ces cours sont importé sous format texte .

    comment faire pour que l'intégration de ces cours se fasse sous format numérique.

    merci de votre réponse

    Olivier

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            cours = Val(ptr("_COURSCLOSE"))
    'ou
            cours = cdbl(ptr("_COURSCLOSE"))
    Teste les deux
    A+

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    je vais la manip pour importer les données dans deux onglets différents.
    dans un cas ca marche pas pas dans l'autre

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu peux être plus précis ? (tu ne devrais pas avoir de mal... parce que là )
    A+

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    j'ai fais les modif que tu as preconisé. pour l'import ci dessous je recupére bien les données sous format num dans l'onglet A d'excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Function chargement_cours_j_moins1correlationindice(codeprodui) As Double
        Dim code_prod As String
        Dim cours As Double
        Dim ptr As Variant
     
    'cette fonction sert à récupérer les informations pour enrichir l'onglet correlation indice
        cours = 0
     
     Set ptr = CreateObject("ADODB.Recordset")
     
     
        ptr.Open "SELECT _COURSCLOSE FROM omega.com.prixhist WHERE _codeprodui = '" & codeprodui & "' ORDER BY _DATE DESC", Mybd
        Do While Not ptr.EOF
     
            cours = Val(ptr("_COURSCLOSE"))
            Exit Do
        Loop
        chargement_cours_j_moins1correlationindice = cours
     
    End Function

    Je fais le meme type d'import dans un onglet b avec le code ci-dessous et la je recupère encore dans excel du format text?? very strange


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    Function chargement_cours_j_moinsindice1(codeisin) As Double
        Dim code_prod As String
        Dim cours As Double
        Dim ptr As Variant
     
        'cette fonction sert à récupérer les informations pour enrichir l'onglet correlation
     
        cours = 0
     
     Set ptr = CreateObject("ADODB.Recordset")
     
        ptr.Open "SELECT _COURSCLOSE FROM omega.com.prixhist WHERE _isin = '" & codeisin & "' ORDER BY _DATE DESC", Mybd
        Do While Not ptr.EOF
     
            cours = Val(ptr("_COURSCLOSE"))
            Exit Do
        Loop
        chargement_cours_j_moinsindice1 = cours
     
     
     
    End Function

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Alors c'est ta colonne qui est au mauvais format.
    Je n'ai pas la macro qui appelle cette fonction mais quelque part, avant le chargement de la fonction, remet la colonne au format standard, ce format reconnaîtra ses "petits" (si c'est un nombre, il le reconnaîtra comme tel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(x).numberformat = "General"
    Tu dis
    A+

  9. #9
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    j'ai mis la colonne en format standart....j'ai toujours un import en format text

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Question subsidiaire : Comment places-tu ta donnée dans la colonne ? Le code ?
    A+

    Edit
    Quel format ta donnée a-t-elle (décimale, non décimale) Un exemple, non, plusieurs exemples différents

  11. #11
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    ce sera des données avec décimale

    voici le code pour l'affectation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    Sub Affectjmoins1correlation(nom_feuille)
    Dim i
    Dim datejmoins1 As Date
     
    'ceci permet de charger les cours j-1 dans l'onglet correlation
     
    If (Sheets("correlation").Range("A2")) <> "" Then
    datejmoins1 = chargement_date_j_moins1(Sheets("correlation").Range("A2"))
    Sheets("Correlation").Range("B1") = datejmoins1
      Else
     
        End If
     
    For i = 2 To 500
        If (Sheets("correlation").Range("a" & i)) <> "" Then
            mont = chargement_cours_j_moins1(Sheets("correlation").Range("A" & i))
            Sheets("Correlation").Range("B" & i) = mont
     
        Else
     
        End If
    Next i
     
    End Sub
    merciiiiiiiiii de ton aide

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    J'ai lu trois lignes mais si tu es censé avoir une valeur, alors teste une valeur, là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Sheets("correlationindice").Range("A2")) <> 0 Then
    Je poursuis la lecture

    J'allais oublier... tu as dis des nombre décimaux (youpi ! je me souviens d'une réponse récente !)
    Tes points sont des "mauvais points" ! Oui, parce que dans Excel, il y a les bons points et les mauvais points
    Manuellement, pour tester, sélectionne ta colonne et remplace "." par "."
    Si tu crois que je plaisante, fais-le quand même et donne-moi le résultat
    A+

  13. #13
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Ta cellule est de format texte ? il faudra peut-être la remettre en format standard.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").NumberFormat = "General"
    Si la valeur s'affiche toujour à gauche, tu as probablement un espace dans la donnée (à gauche ou à droite).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Value = Trim(Range("A1").Value)

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello zaza, tu dors ?
    Citation Envoyé par ouskel'n'or
    Alors c'est ta colonne qui est au mauvais format.
    Je n'ai pas la macro qui appelle cette fonction mais quelque part, avant le chargement de la fonction, remet la colonne au format standard, ce format reconnaîtra ses "petits" (si c'est un nombre, il le reconnaîtra comme tel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(x).numberformat = "General"
    Tu dis
    A+
    Le remplacement des points par des points n'a pas fonctionné ?
    A+

  15. #15
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    zazaraignée,

    ou dois je placer le code que tu m'as donné?

  16. #16
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Citation Envoyé par ouskel'n'or
    J'allais oublier... tu as dis des nombre décimaux (youpi ! je me souviens d'une réponse récente !)
    Tes points sont des "mauvais points" ! Oui, parce que dans Excel, il y a les bons points et les mauvais points
    Manuellement, pour tester, sélectionne ta colonne et remplace "." par "."
    Si tu crois que je plaisante, fais-le quand même et donne-moi le résultat
    A+

    c'est pas forcément des points, ça peut etre des virgules aussi

    Sinon pour des décimaux, c'est pas cdbl qu'il faut utiliser, plutot que Val ?

  17. #17
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    ouskel'n'or,

    le remplacement proposé ne peut pas marcher car dans mon tableau excel les nb decimaux sont avec des virgules. je mets en pièce jointe le fameux tableau....

  18. #18
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Remplace dans ta colonne les virgules par des virgules

    Par macro, il faudrait que tu fasse une procédure qui te permet de changer la valeur, de ce genre la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ChangeStdtoDouble(Col as long)
    dim i as long
    dim ValTemp as double
    for i = 1 to range("A2").end(xldown).row
        valtemp = cells(i,col).value
        cells(i,col).value = valtemp
    next i
    end sub
    J'utilise cette macro personnellement quand j'ai des problèmes de format de ce genre

  19. #19
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    c'est toujours ko

  20. #20
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Bah chez moi ça marche très bien donc je vois pas ppourquoi chez toi ça marche pas

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Toutes versions] Questions pour convertir des nombres stockés en format texte
    Par antoisse3 dans le forum Excel
    Réponses: 7
    Dernier message: 20/04/2015, 09h55
  2. Conversion de Nombre stockés en format texte.
    Par tytyxam dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/09/2011, 15h52
  3. [XL-2007] Nombre stocké sous format texte
    Par locosr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/05/2011, 22h17
  4. Nombre stocké sous forme de texte
    Par krhyme dans le forum IHM
    Réponses: 5
    Dernier message: 31/10/2007, 00h12
  5. [VBA-E] Probleme avec Nombre stocké sous forme de texte
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/07/2006, 01h46

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