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 :

macro vba pour rechercher/remplacer


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut macro vba pour rechercher/remplacer
    Bonjour,

    Je suis débutant en VBA.

    voilà mon problème.......je veux créer une macro qui me permettra de rechercher le mot "support" sur plusieurs feuilles d'un même classeur et le remplacer par " ". Aussi, si le mot "support" n'existe pas alors ne rien remplacer.

    pour l'instant j'ai réussi à créer seulement ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro1
     Cells.Replace What:="support", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    End Sub
    .....je ne sais pas comment rajouter la "recherche et le remplacer" sur les autres feuilles du même classeur, et aussi comment appliquer la condition si pas de mot "support" alors ne rien remplacer

    merci d'avance

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut Remplacer
    Bonjour,

    Il te faut balayer la collection que représentent les feuilles du classeur activé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub Rempl()
    Dim feuil As Worksheet
    For Each feuil In ThisWorkbook.Worksheets
        feuil.Cells.Replace What:="support", Replacement:=""
    Next feuil
    End Sub
    Un conseil (si je peux) : il est souhaitable de n'utiliser comme code que ce qui est utile (ici pour Replace)

    L'enregistreur donne toutes les propriétés. C'est au codeur de trier à bon escient.

    Cordialement.

    Marcel

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Points : 225
    Points
    225
    Par défaut
    Hello,

    Juste pour mettre mon petit grain de sel

    Tu peux aussi préciser quel mot tu recherches, si tu veux, via une InputBox...

    Complétes la macro de Marcel comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Dim feuil As Worksheet
        Dim Mot As Variant
     
        Mot = InputBox("Quel mot recherchez-vous ?", Title:="Recherche un mot")
     
        If Mot = "" Then Exit Sub
     
        For Each feuil In ThisWorkbook.Worksheets
            feuil.Cells.Replace What:=Mot, Replacement:=""
        Next feuil
    Mais attention, dans les deux cas, il efface le mot voulu.

    Exemple :

    Si dans une (ou plusieurs) cellule tu as "Support de base" ou "Colonne de support" ou autre, dès qu'il y a le mot "support", il l'effacera !

    Résultat :

    Ta cellule "Support de base" devient " de base" et ta cellule "Colonne de support" devient "Colonne de " !


    J'ai essayé une autre méthode, idem...

    A voir.

    Cdt, Anto.

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    bonjour à tous,

    Mais attention, dans les deux cas, il efface le mot voulu.
    Pour rechercher dans la totalité du contenu de la cellule ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LookAt:=xlPart ' Sinon LookAt:=xlWhole

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    impeccable ça marche parfaitement......
    merci à vous trois pour vos contributions
    bon aprem

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Août 2009
    Messages : 89
    Points : 87
    Points
    87
    Par défaut
    Bonjour
    De même qu' Atoniom propose une InputBox pour la recherche, tu peux imaginer également une InputBox pour le mot à remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub efface_mot()
    'rechercher un mot dans toutes les feuilles du classeur et le remplacer par un autre
        Dim feuil As Worksheet
        Dim Mot As Variant
        Dim Replace As Variant
     
        Mot = InputBox("Quel mot recherchez-vous ?", Title:="Recherche un mot")
        Replace = InputBox("Par quel mot voulez vous remplacer ?", Title:="Remplacer le mot trouver")
        If Mot = "" Then Exit Sub
     
        For Each feuil In ThisWorkbook.Worksheets
            feuil.Cells.Replace What:=Mot, Replacement:=Replace
        Next
    End Sub

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    J'utilise ce type de macro pour des problèmes de format date...

    Le fait de remplacer un caractère dans une cellule met cette cellule au bon format.

    Bref, mon problème est le suivant :

    Via la macro, toutes le remplacement ne fonctionne pas pour toutes les cellules... Par contre, si je le fais manuellement, cela fonctionne...

    Ma macro similaire ci dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub Rempl()
    Dim feuil As Worksheet
    For Each feuil In ThisWorkbook.Worksheets
        feuil.Cells.Replace What:="/", Replacement:="/"
    Next feuil
    End Sub
    Pourquoi cela fonctionne manuellement et pas par la macro ?!

    Merci de votre aide

  8. #8
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    bien qu'il serait préférable de refaire une discutions, étant donnée que le sujet d'origine n'a pas trop a voir en plus, je vais quand même essayé de répondre.
    Si tu connais les colonnes ou ton format date est nécessaire il est préférable d'utiliser le propriété NumberFormat et de lui attribuer le format date souhaité "dd/mm/yyyy" par exemple. Un petit coup de F1 te donnera les renseignement.
    A++
    Qwaz

  9. #9
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,


    Dans ton exemple tu ne précise pas si on fait la recherche sur tout le contenu de la cellule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub Rempl()
    Dim feuil As Worksheet
    For Each feuil In ThisWorkbook.Worksheets
        feuil.Cells.Replace What:="/", Replacement:="/", LookAt:=xlPart
    Next feuil
    End Sub
    Par contre, si je le fais manuellement, cela fonctionne...
    As-tu essayé le recorder VBA ?

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

Discussions similaires

  1. Macro automatique pour rechercher/remplacer
    Par Flaguette dans le forum VBA Word
    Réponses: 16
    Dernier message: 13/05/2020, 13h32
  2. vbs pour rechercher-remplacer par fichier spécifique
    Par chicano dans le forum VBScript
    Réponses: 7
    Dernier message: 17/03/2009, 13h25
  3. Macro VBA pour mettre colonne en ligne avec cellule fusionnée
    Par dany13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/01/2008, 06h09
  4. [VBA-E] Rechercher / Remplacer
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/08/2006, 16h09
  5. [VBA-E] Macro VBA pour personaliser mon .doc depuis mon .xls
    Par korntex5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2006, 16h01

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