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 :

Lecture Range("A1") erronée


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Retraité ingén.automatisme
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité ingén.automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 45
    Points
    45
    Par défaut Lecture Range("A1") erronée
    Après avoir saisi manuellement le nombre -5.25 dans la cellule A1
    - avec un point, le PC étant paramétré avec le "." en séparateur décimal
    - avec KK déclaré : Dim KK As Single
    La lecture en VB : KK = Range("A1") donne : KK = -5,25 en texte de valeur 0

    Passionné de VB depuis 15 ou 20 ans (sans très grande compétence toute fois) je n'ai jamais rencontré ce pb !
    Merci pour votre aide

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    La lecture en VB : KK = Range("A1") donne : KK = -5,25 en texte de valeur 0
    Je ne comprends pas comment tu pourrais obtenir une valeur texte dans une variable de type Single.
    Ton problème ne viendrait-il pas de l'utilisation que tu fais de KK postérieurement à son affectation ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre du Club
    Homme Profil pro
    Retraité ingén.automatisme
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité ingén.automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 45
    Points
    45
    Par défaut
    Je ne comprends pas comment tu pourrais obtenir une valeur texte dans une variable de type Single.
    D'accord, c'est pour ça qu'après avoir cherché à comprendre pendant plus de 2 heures, je me décide à demander de l'aide.
    Ton problème ne viendrait-il pas de l'utilisation que tu fais de KK postérieurement à son affectation ?
    Non, ci-après le test isolé que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim KK As Single
    Sub PointerCptePerso() 
    
                KK = Range("A1")    ' Cellule A1 = -5.25        KK = -5,25
                Tst = 3 + KK            ' Tst = -2,25
                ValNumKK = IsNumeric(KK)      ' ValNumKK = "Vrai"
    End Sub
    Ceci laisse à penser que le paramétrage "Séparation décimale" par "." ne serait pas respecté dans cette macro.
    Que faire ? ? ? ?
    Merci au répondeur éventuel.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 257
    Points
    34 257
    Par défaut
    Salut,

    il ne faut pas confondre les valeurs texte et valeurs numériques...

    Commençons par éliminer les sources de problèmes classiques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim KK As Single
    Sub PointerCptePerso() 
     
                KK = Range("A1").Value    ' Cellule A1 = -5.25        KK = -5,25
                Tst = 3 + KK            ' Tst = -2,25
                ValNumKK = IsNumeric(KK)      ' ValNumKK = "Vrai"
    End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne comprends pas ton problème : tu mets une valeur décimale dans une cellule, tu récupères cette valeur dans une variable numérique et tu obtiens bien une valeur numérique.
    Je ne comprends pas ce qui te semble illogique dans tout ça.

    De plus, dans ton premier post, tu écris KK = -5,25 en texte de valeur 0 et dans ce nouveau post tu montres que tu peux faire une opération avec KK et donc qu'elle n'a pas pour valeur 0.
    Ta demande n'est pas vraiment claire.

    Si ce qui te choque c'est qu'il y ait une virgule dans la variable KK, sache qu'il n'y a dans cette variable ni virgule, ni point, ni autre séparateur de décimales ou de milliers mais simplement une série de 4 octets (quatre nombres entre 0 et 255).

    Je le répète, ce n'est que l'exploitation de cette valeur qui fait apparaitre un point ou une virgule.
    Bref, comme disait Mulder : "la vérité est ailleurs".
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Membre du Club
    Homme Profil pro
    Retraité ingén.automatisme
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité ingén.automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 45
    Points
    45
    Par défaut
    Merci Menhir pour ton attention à mon PB

    1 - Oui, tu as bien compris, c'est l'affichage de KK avec virgule qui me dérange. Pour moi un affichage avec virgule est du texte. C'est pourquoi, pour essayer de comprendre, j'ai procédé aux tests des lignes 4 et 5 qui confirment bien que KK est numérique.
    Alors pourquoi la virgule ? ? ?

    2 - Je comprends aussi que Dim Single (numérique) ne comprend ni virgule ni point.
    Mais alors - je me répète (!) - pourquoi VB fait un affichage en format "Texte" ? ? ?

    Je me doute que ma curiosité me rend casse-pied !
    Si tu es occupé, ne te sens pas obligé de me répondre ! - Le pb à l'origine de ces questionnements est apparu dans une macro assez lourde, pb qui s'est éclipsé sans explication !
    Encore merci.

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par PICHOUX Voir le message
    Alors pourquoi la virgule ? ? ?
    Mais alors - je me répète (!) - pourquoi VB fait un affichage en format "Texte" ? ? ?
    Moi aussi je vais me répéter : ton problème vient de la façon d'exploiter le contenu de cette cellule.
    Comme tu ne dis rien sur la façon dont elle est exploitée, il n'est pas possible de savoir pourquoi cette exploitation présente une virgule.
    Sans plus d'informations, impossible d'en dire plus.

    La seule chose que je peux te garantir c'est que, même s'il y a une virgule dans l'exploitation faite de cette valeur, la variable KK ne contient pas du texte.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut point virgule
    Bonjour,

    je ne sais pas ce qui se passe sur la version 2016 mais, as-tu la possibilité de voir les options avancées --> 'Utiliser les séparateurs système' ?
    Si oui, tu pourras tester les différents cas.

    Remarque : avec ma version 2010, les retours dans la feuille sont différents en fonction de la déclaration Single / Double.
    Images attachées Images attachées  

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    avec un point, le PC étant paramétré avec le "." en séparateur décimal
    C'est quoi, "le PC" ? ===>>
    Le système d'exploitation ?
    L'application Office ?
    Les deux ?
    Et "affichage" dans quoi ? ==>>
    - une boîte de dialogue ?
    - une cellule ?
    - autre (et quoi) ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. [Toutes versions] lecture donnée dans un onglet erronée
    Par crissud dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/04/2011, 15h29
  2. Réponses: 2
    Dernier message: 15/04/2004, 15h44

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