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 :

Remplacer des caractère par d'autres [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Points : 78
    Points
    78
    Par défaut Remplacer des caractère par d'autres
    Bonjour,

    Voila je voudrai savoir si il est possible de remplacer certains caractères par d'autres. En faite, une fonction de m^me type que str_replace en php.

    Mon problème est le suivant :
    Une macro fait un traitement sur une ligne d'une base de données afin de compléter un feuille automatiquement.
    Une fois cela fait, le formulaire est enregistré avec un nom reprenant certains champs de la ligne.

    Le problème c'est que parfois ces champs comprennent des caractères spéciaux type : "" ou autres or c'est caractère font planter la macro lors de l'enregistrement donc je souhaites remplacer ces caractères qui posent problèmes mais je vois pas trop comment faire.

    Merci de votre aide.

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Il faut utiliser la fonction replace(ChaineOriginale, CaractèreAModifier, CaractèreRemplaçant)

  3. #3
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour gege765,

    par exemple pour remplacer un caractere de retour à la ligne,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each c In Range("A1:A10")
    Range(c.Address) = Application.Substitute(c, Chr(10), "")
    Next

  4. #4
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Points : 78
    Points
    78
    Par défaut
    Merci des réponses.

    Donc si je veux remplacer le . / ou " par espace je suis obliger de faire des boucles dans des boucles ?

  5. #5
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    Donc si je veux remplacer le . / ou " par espace je suis obliger de faire des boucles dans des boucles ?
    oui,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a = Array(".", "/", ", ", "./!") '<---mettre autant de caractère voulu, unique ou groupe
    For i = LBound(a) To UBound(a)
      For Each c In Range("A1:A10")
       Range(c.Address) = Application.Substitute(c, a(i), "")
      Next
    Next

  6. #6
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Points : 78
    Points
    78
    Par défaut
    merci Isabelle,
    Je testerai demain.
    Bonne soirée.

  7. #7
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    se serait mieux dans ce sens,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a = Array(".", "/", ", ", "./!") '<---mettre autant de caractère voulu, unique ou groupe
    For Each c In Range("A1:A10")
      For i = LBound(a) To UBound(a)
       Range(c.Address) = Application.Substitute(c, a(i), "")
      Next
    Next

  8. #8
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    En faites les expressions qui posent problème sont contenus dans des variable de type string.
    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
     
    chemin = ActiveWorkbook.Path
    [a5].Select 'se mettre automatiquement dans la cellule A5
     
    Dim nom, prenom, site, service, intitule, madate, organisme, objectif1, objectif2, annee As String
    annee = [g2]
    nom = ActiveCell
    prenom = ActiveCell.Offset(0, 1)
    site = ActiveCell.Offset(0, 2)
    service = ActiveCell.Offset(0, 5)
    intitule = ActiveCell.Offset(0, 7)
     
    ActiveWorkbook.SaveAs Filename:= _
    chemin & "\" & site & " " & service & "\" & nom & "_" & prenom & "_" & intitule & "_" & annee & ".xls" _
    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
    et donc je souhaite vérifier les variables site, service et intitulé et remplacer les caractères qui pose problème pour la sauvegarde par des espaces.

    je n'ai pas réussi a adapté la macro pour rendre ce traitement possible.

    Merci de votre aide.

  9. #9
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour gege765,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listVar = Array(nom, prenom, site, service, intitule)
    caractere = Array(".", "/", ", ", "./!") '<---mettre autant de caractère voulu, unique ou groupe
     
    For i = LBound(listVar) To UBound(listVar)
      For i = LBound(caractere) To UBound(caractere)
       listVar(i) = Application.Substitute(listVar(i), caractere(i), "")
      Next
    Next

  10. #10
    Expert éminent
    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
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    vois ceci :

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub toto()
    Dim strChaine As String
     
    strChaine = "toto/fifi.bubu"
    MsgBox Replace(Replace(strChaine, "/", " "), ".", " ")
    End Sub
    ce qui dans ton code donnerait cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    service = Replace(Replace(ActiveCell.Offset(0, 5), "/", " "), ".", " ")
    ensuite si dans un string tu es sur qu'il n'y a que des risques de présence de points, tu ne replace que le point...

    Ton chemin, du coup s'il est OK, reste idem.

    cordialement,

    Didier

  11. #11
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Points : 78
    Points
    78
    Par défaut
    Salut,

    Enfaite j'ai manqué de recul et certainement d'expérience.

    La solution parait "simple" une fois quel a été exposée.

    Je vais tester merci beaucoup.
    Merci beaucoup.

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

Discussions similaires

  1. [Débutant] Remplacer une sélection avec des caractères "*" par un autre
    Par canardav77 dans le forum VB.NET
    Réponses: 6
    Dernier message: 26/10/2012, 16h29
  2. Réponses: 5
    Dernier message: 09/11/2007, 09h59
  3. Réponses: 3
    Dernier message: 21/07/2007, 01h48
  4. Remplacer un caractère par un autre
    Par cybkilla dans le forum Sybase
    Réponses: 3
    Dernier message: 08/01/2007, 15h42
  5. Parser une page pour remplaçer des mots par d'autres
    Par HALOMOTO dans le forum Langage
    Réponses: 13
    Dernier message: 13/07/2006, 22h58

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