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ère joker en VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut Caractère joker en VBA
    Bonjour,

    Certaines de mes cellules contiennent des chaines de caractères sur le format 1, Truc, chouette | 2, Chose | 3, Bidule | 4, Machin

    Je souhaiterais en VBA remplacer les virgules suivant des chiffres (et uniquement celles-ci) par un signe = pour obtenir à la place : 1= Truc, chouette | 2= Chose | 3= Bidule | 4= Machin.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    codage = Replace(Sheets(1).Range("A" & i).Value, ", ", "=")
    Evidemment ça remplace toutes les virgules, y compris celle entre truc et chouette.

    J'aimerais pouvoir faire un truc ressemblant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    codage = Replace(Sheets(1).Range("A" & i).Value, "#, ", "=")
    mais qui marche, avec # codant pour un chiffre.

    Je pourrais faire les 10 cas possibles mais je me dis qu'il doit y avoir moyen d'utiliser en VBA le caractère joker pour un nombre non ? Au moins pour trouver la position des virgules qui m'intéressent en laissant les autres de côtés.

    J'ai cherché et ai trouvé la Microsoft vbscript regular expression. Mais avant de me lancer la dedans, je me demandais s'il n'existait pas de trucs plus simples...

    Merci d'avance pour votre aide !

    Bonne après-midi,

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, de la lecture

  3. #3
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 947
    Points : 4 058
    Points
    4 058
    Par défaut
    Traitement sur les cellules sélectionnées :

    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 Test()
     
    Dim C As Range, i As Long
     
    For Each C In Selection
        i = InStr(C.Value, ",")
        If i > 0 Then
            If Mid(C.Value, i - 1, 1) >= "0" And Mid(C.Value, i - 1, 1) <= 9 Then
                C.Value = Replace(C.Value, ", ", "=", 1, 1)
            End If
        End If
    Next C
     
    End Sub

  4. #4
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Merci beaucoup pour vos 2 réponses.

    Pour kiki29, j'avais pensé au LIKE mais je n'étais pas allé plus loin puisque si j'ai bien compris le like recherche "une chaine débutant par ...", non ? Or j'ai des suites chiffre+virgule à plusieurs endroits dans la chaine. Donc j'avais abandonné. Ceci dit, j'aurais pu scinder ma chaine dans un tableau selon le pipe. Et là chaque sous chaine aurait commencé par un chiffre+virgule. Y avait de l'idée ! :-)

    Pour laurent_ott, j'aime bien, c'est élégant. Je suis parti de ton idée pour résoudre ma difficulté. Comme quoi, je n'ai pas poussé assez loin ma réflexion sur la construction de la chaine et je n'ai pas pensé à regarder si le caractère avant est un chiffre. Arg !

    Merci en tous les cas de votre réactivité !

    Bonne fin de journée,

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

Discussions similaires

  1. Comment entrer les caractères greques sous VBA
    Par jerryshen427 dans le forum Général VBA
    Réponses: 1
    Dernier message: 22/04/2009, 19h35
  2. Caractère joker comme en SQL (%) mais en VBA
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/01/2009, 11h16
  3. Caractère tabulation en vba
    Par bj304075 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/08/2008, 11h41
  4. les caractères $ et % en vba
    Par herji dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/01/2008, 15h15
  5. [formulaire] Caractère Joker
    Par ronin_of_ragnarok dans le forum IHM
    Réponses: 6
    Dernier message: 04/05/2007, 13h28

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