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 :

Remplacement chaîne de caractère


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut Remplacement chaîne de caractère
    Re-bonjour,
    Tout à l’heure j’ai posé une question assez stupide sur InStr. J’ai une autre question (moins stupide ?) sur le traitement des chaînes de caractères :
    Est-ce qu’il existe un sous-programme semblable à la fonction « Edition /remplacer » de Excel, mais qui travaille en VRA directement sur les variables String ?
    Si ce sous-programme s’appelait :
    RemplaceCC(CCDépart, CCàRemplacer, CCenRemplacement, CCArrivée NbDeRemplacements),
    Variables d’entrée : CCDépart, CCàRemplacer, CCenRemplacement
    Variables de sortie : CCArrivée NbDeRemplacements
    alors on aurait par exemple :
    RemplaceCC(«Il y avait une fois, oui une fois», «fois», « histoire », «Il y avait une histoire, oui une histoire », 2)
    Merci de m’aider. RéviAT

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Par défaut
    Il existe cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function RemplaceCC(CCDépart, CCàRemplacer, CCenRemplacement)
        RemplaceCC = Replace(CCDépart, CCàRemplacer, CCenRemplacement)
    End Function
    Par contre, je ne vois pas bien l'utilité de mettre en paramètre d'appel ta chaîne d'arrivée et le nombre de remplacements...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut
    Merci.
    J'ai testé, cela fonctionne bien.
    L'intérêt de mettre le nombre de modications est de savoir d'abord qu'il y eu au moins une modification (sinon le nombre est 0) et aussi de compter les modifications faites.
    Excel dans la fonction "Edition / Remplace" affiche bien le nombre de modifications effectuées.
    Est-ce possible de savoir le nombre de modifications faites ?
    Merci.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Par défaut
    Oui c'est possible mais en codant un peu... de plus si tu veux renvoyer la chaîne modifiée ET le nombre de modification, ta fonction doit renvoyer un tableau de variant...

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Par défaut
    Tiens... Essaie ça :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Function RemplaceCC(CCDépart As String, CCàRemplacer As String, CCenRemplacement As String) As Variant()
        Dim Sortie(1 To 2) As Variant
        Dim p As Integer
     
        Sortie(1) = CCDépart
        Sortie(2) = 0
        Do
            p = InStr(Sortie(1), CCàRemplacer)
            If p = 0 Then
                RemplaceCC = Sortie
                Exit Do
            Else
                If (Len(Sortie(1)) - p - Len(CCàRemplacer)) > -1 Then
                    Sortie(1) = Left$(Sortie(1), p - 1) & CCenRemplacement & Right$(Sortie(1), Len(Sortie(1)) - p - Len(CCàRemplacer) + 1)
                Else
                    Sortie(1) = Left$(Sortie(1), p - 1) & CCenRemplacement
                End If
                Sortie(2) = Sortie(2) + 1
            End If
        Loop
    End Function
     
    Sub essai()
        MsgBox RemplaceCC("Il y a vait une fois, oui une fois.", "fois", "histoire")(1) & _
          vbCrLf & RemplaceCC("Il y avait une fois, oui une fois", "fois", "histoire")(2)
    End Sub

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut
    Je viens de tester. Cela fonctionne bien.
    Je vais y travailler pour bien comprendre la programmation qui dépasse mon niveau.
    Merci beaucoup.
    RéviAT

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

Discussions similaires

  1. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  2. Rechercher et remplacer chaîne de caractères
    Par ponpon17430 dans le forum VBScript
    Réponses: 2
    Dernier message: 06/03/2012, 14h10
  3. remplacement chaîne de caractère
    Par omelhor dans le forum Langage
    Réponses: 11
    Dernier message: 21/01/2011, 19h55
  4. Remplacer chaînes de caractères au moment de la compilation
    Par profilien dans le forum Mise en forme
    Réponses: 2
    Dernier message: 01/09/2007, 17h06
  5. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03

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