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 :

Utiliser 3 fois Replace sur un seul mot; Une solution ? [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut Utiliser 3 fois Replace sur un seul mot; Une solution ?
    Bonsoir à tous,

    Dans C2, j'ai la chaine [1500-1659].

    Pour avoir un résultat similaire à S-1500&&-1659, j'utilise trois fois la fonction Replace pour en arriver au résultat voulu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub ReplaceChar()
        Dim S As String
        S = Replace(Cells(2, 3), "[", "")
        S = Replace(S, "]", "")
        S = Replace(S, "-", "&&-")
        S = "S-" & S
        MsgBox "S : " & S
        Cells(2, 4) = S
    End Sub
    Y a-t-il un moyen pour remplacer tous ces caractères en une seule fois ?

    Merci.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    3 fois Replace c'est pas grand chose et c'est lisible.
    Sinon, 3 Replaces imbriquées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Function Former(ByVal Str As String) As String
     
    Former = "S-" & Replace(Replace(Replace(Str, "[", ""), "]", ""), "-", "&&-")
    End Function
     
    Sub ReplaceChar()
     
    Cells(2, 4) = Former(Cells(2, 3))
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Merci mercatog.


  4. #4
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Function Former(ByVal Str As String) As String
     
    Former = "S-" & Replace(Replace(Replace(Str, "[", ""), "]", ""), "-", "&&-")
    End Function
     
    Sub ReplaceChar()
     
    Cells(2, 4) = Former(Cells(2, 3))
    End Sub
    en essayant de comprendre la logique du remplacement ( a propos) ne connaissant pas la manipulation de "replace"
    je suis arrivé à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Former = "S-" & Replace(Str, "-", "&&-")
    pour la Private Function , ce qui donne le même résultat. Est ce une simplification, ou ai je loupé un truc?

  5. #5
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir Daranc,

    Citation Envoyé par Daranc Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Former = "S-" & Replace(Str, "-", "&&-")
    pour la Private Function , ce qui donne le même résultat. Est ce une simplification, ou ai je loupé un truc?
    Mais comme ça, en aura un résultat similaire à :

    S-[1500&&-1659] au lieu de S-1500&&-1659

  6. #6
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    S-[1500&&-1659] au lieu de S-1500&&-1659
    j'avais tester 1500-1659 j'avais pas pris en compte les crochets
    nettement plus compréhensible comme ça ... je me remet au café

  7. #7
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir Daranc,

    Merci pour ton passage.


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

Discussions similaires

  1. Utilisation de 2 Query sur un seul QuickRep
    Par yacinew dans le forum Composants VCL
    Réponses: 1
    Dernier message: 12/04/2015, 17h06
  2. Réponses: 15
    Dernier message: 20/02/2014, 14h54
  3. utiliser la fonction replace sur des Bytes
    Par omarrrio dans le forum C#
    Réponses: 0
    Dernier message: 02/07/2013, 21h16
  4. Réponses: 0
    Dernier message: 30/12/2007, 12h47
  5. Utilisation de Distinct sur un seul champ!
    Par Bils dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/11/2007, 09h31

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