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 :

Rechercher/Remplacer avec boucle et plusieurs motifs


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 345
    Points : 530
    Points
    530
    Par défaut Rechercher/Remplacer avec boucle et plusieurs motifs
    Bonsoir,

    Je cherche à effectuer un Rechercher/Remplacer sur une colonne entière pour une série de colonne avec un motif de remplacement différent selon la colonne.

    Pour ce qui est d'une seule colonne la solution est simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub RR()
     Worksheets("Aliments").Columns("A").Replace _
     What:="Fruit", Replacement:="Pomme", _
     SearchOrder:=xlByColumns, MatchCase:=True
    End Sub
    Comment faire de même avec une boucle sur plusieurs colonnes consécutives et un motif de remplacement différent pour chaque colonne ?

    J'ai essayé ceci sans succès :

    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
     
    Sub RR()
     Dim cols As Range
     Dim T(5) As String
     Dim i As Integer
     
    T(1) = "Pomme"
    T(2) = "Poire"
    T(3) = "Pêche"
    T(4) = "Abricot"
    T(5) = "Fraise"
     
    i = 1
     
    For Each cols In Range("A:E")
     Worksheets("Aliments").Columns(cols).Replace _
     What:="Fruit", Replacement:=T(i), _
     SearchOrder:=xlByColumns, MatchCase:=True
     i = i + 1
    Next
    End Sub
    Merci d'avance.

    ----
    Canvas

  2. #2
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,

    Dans ton code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cols In Range("A:E")
    la variable cols prend pour valeur chaque cellule des colonnes de A à E

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Worksheets("Aliments").Columns(cols).Replace
    Du coup, Columns(cols) ne veut rien dire, la méthode Columns a besoin d'un entier qui représente le numéro de colonne comme paramètre.

    En remplaçant les lignes 15 et 16 avec ce code, ça devrait aller mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each cols In Worksheets("Aliments").Range("A:E").Columns
     cols.Replace _

  3. #3
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Bonjour,

    Je rajouterais que les tableau commencent par défaut à l'indice 0. Donc à moins que tu ais précisé en en tete de module, le code suivant t'évitera l'erreur "l'indice n'appartient pas à la selection."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    T(0) = "Pomme"
    T(1) = "Poire"
    T(2) = "Pêche"
    T(3) = "Abricot"
    T(4) = "Fraise"
     
    i = 0

Discussions similaires

  1. Rechercher/Remplacer avec retour à la ligne
    Par LittleBean dans le forum Eclipse
    Réponses: 2
    Dernier message: 26/05/2011, 10h31
  2. Logique/algorithme et rechercher-remplacer avec des "chaînes soeurs"
    Par gratiert dans le forum Général Python
    Réponses: 4
    Dernier message: 25/06/2010, 18h00
  3. [RegEx] Rechercher/remplacer avec preg_replace
    Par olbouss dans le forum Langage
    Réponses: 5
    Dernier message: 13/01/2009, 12h00
  4. Rechercher fichiers avec un ou plusieurs groupes de mots
    Par Boubas1 dans le forum Windows XP
    Réponses: 6
    Dernier message: 23/09/2008, 23h04
  5. [VS] rechercher/remplacer avec des regexp
    Par v1nce dans le forum Visual Studio
    Réponses: 4
    Dernier message: 03/07/2007, 14h58

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