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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 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
    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 ?

  3. #3
    Membre confirmé
    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
    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
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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 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
    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".

  6. #6
    Membre confirmé
    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
    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 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
    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.

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