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 :

Caractères invisibles vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Par défaut Caractères invisibles vba
    Bonjour, j'ai écrit le code suivant pour connaitre le premier caractère de ma chaîne de caractère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Allo()
     
    Dim position As Integer
    Dim caractere As String
     
        caractere = Left(Range("A5"), 1)
        position = InStr(Range("A5"), caractere)
        MsgBox (position)
    End Sub
    J'ai ajouté le position pour m'assurer du résultat. Seul problème, les premiers caractères de ma chaîne sont des caractères invisibles. J'aurais souhaité les supprimer mais je n'y arrive pas, j'ai essayé avec un trim mais ça ne fonctionne pas. En pièce jointe la cellule en question.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour vashh50,

    Je ne comprends pas du tout ceci :
    Citation Envoyé par vashh50 Voir le message
    J'ai ajouté le position pour m'assurer du résultat.
    En effet, afin de savoir quel est le premier caractère de ta chaîne, tu as juste à faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Allo()
    Dim caractere As String
     
        caractere = Left(Range("A5"), 1)
        MsgBox caractere
    End Sub
    La méthode InStr te renvoie la position d'un caractère mais pas celui-ci.

    Voila, je ne sais pas trop quoi dire de plus ! ^^

    Cordialement,
    Kimy

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Par défaut
    Oui tu as tout à fait raison. Mais lorsque que tu fais instr(range("A1"),"T") il te renvoie 3 et pas 1. Donc le premier caractère n'est pas le T. Il y a bien 2 caractères invisibles avant que je souhaiterais supprimer.

  4. #4
    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,

    avec la fonction de feuille de calculs EPURAGE (en VBA Application.Clean) …


    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  5. #5
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Par défaut
    Je continue de réfléchir au sujet, certes je pourrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Range("A1") = right(Range("a1"),len(Range("A1")-instr(range("A1"),T))
    Cependant, le premier "vrai" caractère de ma chaîne peut varier...

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Marc t'a donné la réponse.

    Si tu as envie de t'embêter, tu peux Replace tous les caractères suivants :
    • Chr(0)
    • Chr(9)
    • Chr(10)
    • Chr(13)

    puis trimer.

    Mais EPURAGE fait tout ça. Donc utilises Evaluate puis Trim ou Application.Clean puis Trim. Voila !

    Cordialement,
    Kimy

  7. #7
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Par défaut
    Je ne connais pas du tout EPURAGE.

    Je regarde ça de suite. Merci à vous.

  8. #8
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour

    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
    Sub Allo()
    Dim a As Integer
    dim i as integer
     
    For i = 1 To Len(Range("a1"))
    a = Asc(Mid(Range("a1"), i, 1))
     
        If a > 96 And a < 123 Or a > 64 And a < 91 Then
        Range("a1") = Right(Range("a1"), Len(Range("a1")) - i + 1)
        MsgBox Chr(a)
        Exit Sub
        End If
     
    Next i
    End Sub
    Tu auras ainsi la premiere lettre chr(a) et sa position i

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Fait ce test la et on y verra plus clair!
    msgbox asc(mid(Range("A5"),1,1)) & " : " & asc(mid(Range("A5"),2,1))

  10. #10
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Par défaut
    Bonjour,
    Fait ce test la et on y verra plus clair!
    msgbox asc(mid(Range("A5"),1,1)) & " : " & asc(mid(Range("A5"),2,1))
    La msg box me dit 160 : 10

  11. #11
    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
    exemple
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub premier_caractere_valable()
    MsgBox Mid(Trim("   toto"), 1, 1)' le premier caractere valable
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub dernier_caractere_valable()
    MsgBox Right(Trim("   toto   "), 1) ' le derniercaractere valable
    End Sub
    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

  12. #12
    Membre éprouvé Avatar de Klin89
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 119
    Par défaut
    Bonjour à tous,

    Place toi sur la cellule concernée.
    Ouvre la fenêtre Exécution, on y verra plus clair
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Verif_caracteres()
    Dim i As Integer, str As String
        str = ActiveCell.Value
        For i = 1 To Len(str)
            Debug.Print Mid(str, i, 1) & "  =  " & Asc(Mid(str, i, 1))
        Next
    End Sub
    klin89

  13. #13
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Par défaut
    = 160

    = 10
    2 = 50
    0 = 48
    1 = 49
    1 = 49
    [...]

    Voilà après l"exécution de ton code klin89.

  14. #14
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Je n'arrive pas à comprendre pourquoi cette discussion n'est pas encore fermée...
    Marc t'a donné la méthode permettant de répondre à ton besoin sur ce post.
    Tu n'as plus qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Sub premiere_lettre()
    Dim oRng As Range
    Dim pLettre As String
     
    Set oRng = Worksheets("Feuil1").Range("A1")
    pLettre = Left(Trim(Evaluate("CLEAN(" & oRng.Address & ")")), 1)
     
    MsgBox pLettre
     
    End Sub
    ...
    Kimy

  15. #15
    Invité
    Invité(e)
    Par défaut
    160 est le code ascii du a avec un accent aigu, rare dans nos conversations!
    10 un retour ligne la ça va!!

    D'où provient ton texte? D'une capture internet? D'une autre extraction d'un logiciel codé en utf8?

    As tu d'autres caractères bizarre?

    http://www.theasciicode.com.ar/
    Dernière modification par Invité ; 12/08/2015 à 16h05.

  16. #16
    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



    Normalement sous Windows 160 est le code de l'espace insécable : voir ce que renvoie Chr(160).
    Ce caractère n'est pas nettoyé par la fonction EPURAGE, utiliser la fonction VBA Replace

    Mais bon l'origine provient du côté de la création du fichier source … S'il est créé proprement, rien à faire côté Excel !


    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  17. #17
    Invité
    Invité(e)
    Par défaut
    D'accord avec toi Marc, il faut voir en amont d'Excel avoir des données propres!

    Je pense qu'il s'agit d'un import mal géré!

  18. #18
    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

    C'est fou le nombre de fois où l'on demande à Excel de palier aux conneries en amont !

    En combinant les fonctions EXCEL - et non pas VBA - EPURAGE, remplacement et SUPPRESPACE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        With Application
            MsgBox .Trim(Replace(.Clean([A5].Value), 160, " "))
        End With
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  19. #19
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Par défaut
    Pour info, mon texte provient d'un texte d'une zone de texte d'un fichier WORD.

    Je ne sais pas si ça vous aide ^^.

    En tout cas merci bien à vous. Je testerais la méthode mais pour le moment je travaille sur une autre partie de mon code.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par vashh50 Voir le message
    mais pour le moment je travaille sur une autre partie de mon code.
    Ça tombe bien l'eau de la piscine est à bonne température!

Discussions similaires

  1. Suppression de caractère invisible
    Par lodan dans le forum Langage
    Réponses: 10
    Dernier message: 02/10/2008, 16h55
  2. Echapper des caractères avec VBA pour requete SQL
    Par mpereg dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2008, 03h41
  3. [RegEx] Supprimer caractères invisibles au sein d'une chaîne
    Par webrider dans le forum Langage
    Réponses: 9
    Dernier message: 19/04/2007, 11h07
  4. Recherche de caractères en VBA
    Par Khab' dans le forum Access
    Réponses: 8
    Dernier message: 12/02/2007, 15h18
  5. Comment découper une chaîne de caractères en VBA
    Par TomPad dans le forum Access
    Réponses: 3
    Dernier message: 23/06/2005, 09h58

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