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 :

Virer par macro certains caractere spéciaux? [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut Virer par macro certains caractere spéciaux?
    Bonjour,

    Toujours dans mon histoire d'import a automatiser, je mouline une description pour en virer certains caracteres sur ce modele
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'suprime les retours à la ligne
    descritption = Replace(descritption, Chr(10), " ")
    descritption = Replace(descritption, Chr(13), " ")
    'suprime certain caracteres spéciaux
    '™
    descritption = Replace(descritption, Chr(153), " TM ")
    
    descritption = Replace(descritption, Chr(174), "(R)")
    
    descritption = Replace(descritption, Chr(169), "(C)")
    ';
    descritption = Replace(descritption, Chr(59), ",")
    mais la je viens d'en avoir 2 autres que je veux virer automatiquement, « ㎜ » et « Ⅱ » , et je n'arrive pas a trouver.
    Si je les mets dans une cellule et que je met =code(cette cellule) ca me donne 63 comme réponse dans les deux cas. Et 63, ca a l'air d'etre le point d'interrogation

    Est-ce que j'ai un moyen de les virer avec du VBA sans virer les points d'interrogations innocents?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Bonjour,

    Je retrouve le caractère Ⅱ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub sc1()
        Cells(1,1) = ChrW("&H" & 2161)
    End Sub
    par contre pour l'autre?

  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,

    pour mm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1, 1) = ChrW("&H339C")
    cordialement,

    Didier

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut
    Super, un grand merci ca fonctionne parfaitement

    Juste pour me coucher moins bete ce soir, comment est-ce qu'on fait pour trouver a partir du caractere le code a mettre en argument du ChrW?

    Il y a la commande inverse? ou ca se trouve dans des tables de correspondance?

    [Edit] J'ai trouvé une méthode. Si on fait AscW(Cells(1, 1)) (avec le caractere a identifier dans la cellule A1), il retourne une référence qu'on peut donner comme arguement à ChrW apres

    Par contre, je présume que vous avez fait autrement parce qu'en faisant ainsi, j'obtiens comme correspondance et que c'est pas les même
    Ⅱ = ChrW(8545)
    ㎜ = ChrW(13212)

  5. #5
    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
    Un peu de méthode et un peu de pif pour les plus rares.

    C'est très complexe,en gros : la norme ASCII, obsolète, ne gère que 128 caractères, la norme Unicode (il y a des évolutions) en gère possiblement 100_000.

    Ensuite tu as la notion de Jeu de caractères, puis de polices.

    Tout ça te mène sous Excel ou Word à Insertion, Caractères spéciaux.
    En cliquant sur un caractères, tu as son code affiché dans la case Code du caractère en bas.

    Tu retrouves le codage unicode et ascii dans le menu à côté et polices et sous ensemble en haut.

    Le soucis, vu que la norme ISO 10646-1 n'est pas très vieille par rapport aux apllis sur le marché, tous le codes ne sont pas implémentés, et pas de façons égales partout...

    Pour avoir presque tout (ou tout ?), vois ce lien :

    http://alis.isoc.org/codage/iso10646/index.html

    cordialement,

    Didier

  6. #6
    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
    Citation Envoyé par EmmanuelleC Voir le message

    [Edit] J'ai trouvé une méthode. Si on fait AscW(Cells(1, 1)) (avec le caractere a identifier dans la cellule A1), il retourne une référence qu'on peut donner comme arguement à ChrW apres

    Par contre, je présume que vous avez fait autrement parce qu'en faisant ainsi, j'obtiens comme correspondance et que c'est pas les même
    Ⅱ = ChrW(8545)
    ㎜ = ChrW(13212)
    Bravo !

    Si, c'est la même, mais pas encodée de la même façon :

    AscW renvoie le code de caractère Unicode

    si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(1, 1)=ChrW(13212)
    Cells(2, 1)=hex(13212)
    tu auras bien mm en A1 et 339C en A2, 339C est 13312 en hexadécimal

    Ceci est valable si tu as le caractère affiché, mais tu auras besoin de tables si tu veux l'afficher et que tu ne connais pas son code, on peut toujours faire une boucle d'affichage

    Ce qui fait que pour te renseigner, on devait avoir le caractère, un exemple peu courant de l'utilité d'un fichier joint précoce

    Petit jeu : tapes dans le fenêtre d'exécution de vba : tu comprendras tes premiers résultats...

    cordialement,

    Didier

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut
    Citation Envoyé par Ormonth Voir le message
    Mais tu auras besoin de tables si tu veux l'afficher et que tu ne connais pas son code, on peut toujours faire une boucle d'affichage
    Oui, dans l'autre sens c'est moins pratique, j'en conviens.
    Mais en l'occurence, je suis limitée a un seul sens, je dois intégrer une liste qui intégre de caractere norme ISO 10646-1 dans un programme qui ne le gere pas (et donc les virer/remplacer) mais on ne me demande pas de pouvoir rajouter des nouveau caracteres dans la liste épurée

    J'ignorais qu'une commande VBA pouvait tolérer comme argument du décimal ou de l'exadécimal

    Citation Envoyé par Ormonth Voir le message
    Ce qui fait que pour te renseigner, on devait avoir le caractère, un exemple peu courant de l'utilité d'un fichier joint précoce

    Petit jeu : tapes dans le fenêtre d'exécution de vba : tu comprendras tes premiers résultats...
    La par contre, j'ai rien compris :p

    J'ignore ce qu'est un fichier joint précoce et j'ai testé le petit jeu, il a remplacé mon "?ChrW(13212)" par "Print ChrW(13212)" mais ca ne m'aide pas a comprendre

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

Discussions similaires

  1. Remplacer par un caractere special par macro
    Par lraynal dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2009, 16h39
  2. remplacer les caracteres spéciaux
    Par roninou dans le forum Langage
    Réponses: 2
    Dernier message: 02/11/2005, 15h26
  3. Analyseur XML : extraction des caracteres spéciaux
    Par abdou.sahraoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/07/2005, 15h07
  4. [DB2] supprimer les caractere spéciaux
    Par guin dans le forum DB2
    Réponses: 1
    Dernier message: 17/01/2005, 16h34
  5. Réponses: 7
    Dernier message: 14/05/2004, 18h22

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