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 confirmé
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2013
    Messages : 155
    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 confirmé
    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
    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
    1 035
    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 : 1 035
    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 confirmé
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2013
    Messages : 155
    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