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 :

Fonction Remplacer Par


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2016
    Messages : 13
    Par défaut Fonction Remplacer Par
    Bonjour,

    Je sais utiliser l'outil Remplacer sur EXCEL. Connaissez-vous le code macro pour cette fonction ?

    Dans une colonne, j'ai une succession de noms et prénoms différents, mais certains sont en doublon comme ceci : Marc DURAND ... Il y a trois points de suspensions en trop dans la cellule.

    Pouvez-vous m'aider ?

    Dans l'attente de vous lire, Cdt.

    Olialex

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la méthode Range.Replace te permet de le faire

    un exemple, sur la plage utile de la feuille active

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Replace What:="...", Replacement:="", LookAt:=xlPart
    Ps : attention à la façon dont sont écrits tes "trois petits points", parfois Excel remplace ces trois caractères par un unique caractère qui n'est pas détecté en tapant trois fois un "point" ... il faudra copier et coller cette valeur depuis excel et la coller dans ta procédure VBA.
    (tu verras que les points seront vachement plus petits que si tu écris au clavier)

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    J'ai pour toi une mauvaise nouvelle :
    Excel (et le VBA non plus) n'est pas capable de gérer la "localisation" du caractère 133 et, par voir de conséquence, de le remplacer (comme il pourrait le faire avec tout autre caractère) par la méthode Range.Replace
    Tu n'as dans ce cas très particulier aucun autre recours, à ma connaissance, que le parcours,cellule par ligne, et le remplacement par rien du caractère 133, par la fonction (pas la méthode) Replace - ainsi (exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each c In UsedRange.Cells
      c.Value = Replace(c.Text, Chr(133), "")
    Next
    (A moins qu'un plus "vivo" que moi ne connaisse cette solution par des voies normales et sans utiliser Regex ).

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    pourtant ceci marche très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Replace What:=Chr(133), Replacement:="", LookAt:=xlPart
    bien entendu, après avoir écrit de deux façons ces trois petits points :

    - insertion d'un Chr(133) par vba
    - écriture manuelle de trois petits points, validation de la cellule pour qu'il devienne un Chr(133)

    ou alors ai-je mal compris le sens de ton intervention ?

    Merci au passage pour m'avoir appris que ce Chr(133) correspond à ce symbole

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour joe.levrai
    Je n'avais pas pensé à faire ainsi (supprimer chaque caractère 133 pris séparément).
    J'avais essayé le remplacement de la chaîne "..." ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Replace What:=String(3, Chr(133)), Replacement:="", LookAt:=xlPart
    Ne marchait pas, alors que marcherait sans problème le remplacement de tout autre chaîne de caractère (exemple "bbb") par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Replace What:=String(3, Chr(66)), Replacement:="", LookAt:=xlPart
    Ouais ... Excel nous fatigue, quelquefois, non ?
    Amitiés.

    Ce que nous découvrons tous les deux de ce comportement particulier, et qu'il nous faudrait faire de la gymnastique pour remplacer par exemple ".." par "toto". (je dis bien ".." et non "."). L'aide VBA ne nous dit absolument rien de ce comportement-là.

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ben non, si on a uniquement ".." alors ce n'est pas Chr(133) qui (lui) représente un "caractère" qu'un humain lit en "trois caractères" ?

    et avec ça on est bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Replace What:="..", Replacement:="toto", LookAt:=xlPart

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Vrai, joe.levrai
    Fais maintenant l'expérience avec le remplacement de "..." (aucun remplacement chez moi).

Discussions similaires

  1. Réponses: 12
    Dernier message: 07/09/2016, 13h40
  2. id remplacé par "{" dans fonction Ajax
    Par stefde3 dans le forum jQuery
    Réponses: 8
    Dernier message: 07/04/2015, 23h36
  3. Réponses: 3
    Dernier message: 19/05/2012, 21h07
  4. SQL Server / Fonction définie par l'utilisateur
    Par borgfabr dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/03/2005, 15h14
  5. Fonctions définies par l'utilisateur
    Par DiGueDao dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/06/2003, 11h17

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