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 :

Correspondance de la valeur ASCII 0 et code de la valeur vide


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 Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut Correspondance de la valeur ASCII 0 et code de la valeur vide
    Bonjour à tous

    Mon Problème est que je voudrais connaitre la valeur ASCII du Vide et quest ce que le code ASCII 0 (Zéro).

    voici ce que viens de coder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ValeurDuVide()
        Dim MaChaine As String * 10
        Dim LgCh, ValMachaine, ValEspace, ValMachaine2 As Byte
     
        'test des valeurs ASCII
     
        LgCh = Len(MaChaine)
        ValMachaine = Asc(MaChaine)
        MaChaine = ""
        'ValVide = Asc("")
        ValEspace = Asc(" ")
        ValMachaine2 = Asc(MaChaine)
     
    End Sub
    Donc je déclare ma variable de longueur 10
    Je verifie elle fait bien 10
    je teste la valeur ASCII c'est 0
    mais avec les espions je vois que c'est rempli de carré
    Je met du vide dans la variable et elle se rempli de valeur d'espace

    Donc voilà qu'est-ce que le code ASCII 0(zéro) et qu'elle est la valeur ASCII du vide

    le code :ValVide = Asc("") plante

    Si quelqu'un peut m'expliquer

    Merci d'avance

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    l'aide VBA est claire sur ce point :


    L'argument string peut être n'importe quelle expression de chaîne valide. Si l'argument string ne contient aucun caractère, une erreur d'exécution se produit.
    aucun code, dans la table ascii pour une chaîne/un caractère de longueur nulle (à ne pas confondre avec le caractère NULL)

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Ce que je t’en dis est une réflexion personnelle, donc sujette à caution.

    Le vide… est vide donc il n’a aucune valeur.

    Le code ASCII 0 représente la valeur Null, il a une existence, donc il n’est pas vide.

    Citation Envoyé par Igloobel
    Donc je déclare ma variable de longueur 10
    Je vérifie elle fait bien 10
    je teste la valeur ASCII c'est 0
    Le fait de forcer ton string à avoir une longueur de 10 doit mener le VBA à lui attribuer 10 Null, tu lui attribues par défaut 10 caractères, donc tous ceux qui ne sont pas explicités sont Null, donc tu as un String valide, Len te le confirme (longueur =10) et :

    Citation Envoyé par Aide VBA
    Asc, fonction
    Renvoie une donnée de type Integer représentant le code de caractère correspondant à la première lettre d'une chaîne.
    Si tu fais Dim MaChaine As String seulement, ça plantera et ceci a tendance à confirmer la suite..
    Citation Envoyé par Igloobel
    mais avec les espions je vois que c'est rempli de carrés
    Ce sont les représentations graphiques des caractères ASCII non imprimables.

    Utilises plutôt la fenêtre variables locales en pas à pas, c'est plus parlant, et plus fiable que les espions (agents doubles...).

    Citation Envoyé par Igloobel
    Je mets du vide dans la variable et elle se rempli de valeur d'espace
    Bon là de manière explicite, tu fais une assignation de valeur, vba lui attribue donc ce qui est possible pour lui au niveau interprétation à savoir :

    Tu as obligatoirement un string de 10 dont il faut tenir compte; à défaut d’autre chose le seul choix logique est l’espace.

    Tant que tu te cantonnes à une déclaration, VBA est en Wait and See et le string contient bien du Null.

    Dès que tu passes à une attribution, il interprète, pour preuve, si tu fais une attribution implicite en concaténant ton String à un autre, il le traduit bien en une chaîne de 10 espaces.
    comme dans le code ci-dessous :

    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
    Sub ValeurDuVide()
    Dim MaChaine As String * 10
    Dim LgCh, ValMachaine, ValEspace, ValMachaine2 As Byte
    Dim I As Long
     
    'test des valeurs ASCII
    Debug.Print "oo" & MaChaine & "aa"""
    LgCh = Len(MaChaine)
    ValMachaine = Asc(MaChaine)
    For I = 1 To 10
       Debug.Print Asc(Left(MaChaine, I)) 'ValMachaine2 =
    Next I
    MaChaine = ""
    LgCh = Len(MaChaine)
    Debug.Print MaChaine & "bb"
       For I = 1 To 10
    Debug.Print Asc(Left(MaChaine, I)) 'ValMachaine2 =
    Next I
     
    End Sub
    Bon, ce n'est que la façon de je vois les choses à ce jour

    cordialement,

    Didier

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Merci c'est tès clair

    Et bien ce que je craignais

    Bien j'ai deux choix :
    - soit déclarer sans forcer la longueur
    - soit modifier les tests avec non pas du vide mais de l'espace

    Travail très long de toute manière

Discussions similaires

  1. [Configuration] Valeurs différentes pour même code sur 2 serveurs
    Par Xris dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 12/02/2007, 01h40
  2. Valeur asp dans le code Java ?
    Par kaiser59 dans le forum ASP
    Réponses: 4
    Dernier message: 25/01/2007, 17h33
  3. pb de code "" recuperer une valeur ""une idée !!
    Par moonia dans le forum Langage
    Réponses: 21
    Dernier message: 05/05/2006, 15h14
  4. Réponses: 25
    Dernier message: 08/03/2006, 17h03
  5. Valeur Ascii d'un AnsiString
    Par neness dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/02/2004, 09h00

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