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 de "caractères" d'une "chaine" numérique Len() With Numeric value


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut Nombre de "caractères" d'une "chaine" numérique Len() With Numeric value
    Bonsoir,

    Je vous lirais demain matin avec plaisir.

    Je m'interroge sur la possibilité de lire le nombre de caractères d'un nombre.
    Len ne fonctionnant pas (en fait, dans ce cas, Len nous donne le "poids" du nombre en octets et non sa "longueur"), je me demande s'il n'existe pas une autre propriété permettant de définir le nombre de "caractères" contenus dans une variable numérique...

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim L As Single
    L = 0.123456
    Debug.Print Len(L)
    me donnera 4 au lieu de 8...
    Je connais les "subterfuges" consistants à passer par une variable String grâce à CStr(), mais je me dis qu'il y a, peut-être, an other way...
    Isn't it?

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir pikaju
    oulah!!! chez moi le len me donne bien 8 sans cstr

    edit: a oui!! single mince et oui la de toute façon y a pas d'autre moyen que convertir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Franck
    mais je me dis qu'il y a, peut-être, an other way...
    Il n'y en a pas (not even a long one, not even to Tipperary, not even to go )
    Un numérique n'a pas de "longueur". Une chaîne de caractères, oui. --->> conversion nécessaire.

    Re,

    Après un café et une réflexion : on peut y parvenir sans conversion, mais :
    - 1) uniquement en représentation décimale (base 10 - entiers et décimales)
    - 2) Tipperary serait la porte à côté, en comparaison

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour Messieurs,

    Il n'y a pas moyen, effectivement.

    Citation Envoyé par unparia
    Après un café et une réflexion : on peut y parvenir sans conversion, mais :
    - 1) uniquement en représentation décimale (base 10 - entiers et décimales)
    Je veux bien voir comment, pas pour mon problème qui est résolu, mais pour ma culture.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il n'est pas vraiment possible de définir la longueur d'un nombre à virgule flottante (Single) car par définition il n'affiche que des valeurs relatifs au séparateur décimal de l'exposant!

    Utilises double.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Franck
    Je veux bien voir comment, pas pour mon problème qui est résolu, mais pour ma culture.
    je vais faire mieux. Je vais te mettre sur la piste :
    - séparation de la partie entière P1 et de l'éventuelle partie décimale P2 --->> obtention, donc de 2 nbs entiers P1 et P2
    - détermination du nbs de "caractères/chiffres" de chaque partie (d'un nombre donc entier) --->>>
    ---- une boucle de divisions décroissantes de puissances de 10 jusqu'à obtenir un chiffre X > 0 et sortir de la boucle. La valeur de ce chiffre X est révélatrice de la longueur de l'entier étudié.

    Je te laisse faire ?

    EDIT : de mémoire : il se peut que j'aie utilisé un tel mécanisme lors de ma toute première venue sur ce forum. (je n'ai pas cherché et n'en suis pas non plus certain, mais je me connais et cela ne m'étonnerait pas que je m'y fusse amusé, histoire de "rigoler")

  7. #7
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    quand j'ai lu votre sujet hier soir, je me suis amusé à écrire un truc

    je n'étais pas satisfait à cause des problèmes de précision qui foutaient en l'air le calcul du nombre de décimales

    suis parti me coucher sans quitter Excel

    Et je vois ton dernier message unparia


    boahhh .... si quelqu'un veut corriger la partie qui gère le calcul des décimales, faites-vous plaisir

    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 Taille_Nombre(LeNombre As Double) As Long
        'calcul des chiffres APRES la virgule
        Temp = LeNombre - Int(LeNombre)
        If Temp <> 0 Then C = C + 1 ' la virgule
            While Temp - Int(Temp) <> 0          ' tant qu'on a pas fini de compter les décimales
                C = C + 1
                Temp = Temp * 10    ' On pousse les chiffres vers la droite
            Wend
     
        'calcul des chiffres AVANT la virgule
        Temp = Int(LeNombre)
        While Temp >= 1          ' tant qu'on a pas fini de compter les chiffres entiers
            C = C + 1
            Temp = Temp / 10    ' On pousse les chiffres vers la gauche
        Wend
    Taille_Nombre = C
    End Function
     
    Sub test()
    Debug.Print Taille_Nombre(12234)   ' fonctionne mal avec les décimales en raison des erreurs de précision
    End Sub

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour joe.levrai

    Je découvre que tu es aussi fou que moi. C'est bien.
    Amitiés.

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par pijaku Voir le message
    Je m'interroge sur la possibilité de lire le nombre de caractères d'un nombre.
    […] mais je me dis qu'il y a, peut-être, an other way...
    L'aide VBA de la fonction Len étant pourtant assez explicite …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Demo()
        L! = 0.123456
        Debug.Print Len(L), Len("" & L)
    End Sub
    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  10. #10
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    L'aide VBA de la fonction Len étant pourtant assez explicite …
    Bonjour Marc, le forum,

    Mea culpa.
    La fonction Len est en effet très bien développée dans l'aide, exemples à l'appui.
    Merci de cette piqûre de rappel.

    A bientôt

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

Discussions similaires

  1. [WD14] Utiliser le caractère guillemet dans une variable chaine
    Par samoel24 dans le forum WinDev
    Réponses: 5
    Dernier message: 01/10/2011, 18h44
  2. Réponses: 12
    Dernier message: 08/08/2008, 11h03
  3. Réponses: 1
    Dernier message: 06/08/2007, 03h23
  4. [PERL]Nombre d'un caractère présent dans une chaine
    Par LE NEINDRE dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 13h58

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