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 et remplacer un mot dans un module feuille


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 842
    Par défaut Rechercher et remplacer un mot dans un module feuille
    Bonsoir le forum

    Je souhaiterais rechercher et remplacer un mot dans un module Worksheet_SelectionChange" d'une feuille, voilà la procédure que j’ai testée et qui donne un résultat innatendu

    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
    27
    28
    29
    30
    31
    32
    33
    34
    Sub ModifierModuleFeuille()
    On Error Resume Next
       RechercherRemplacer ThisWorkbook, "Feuil1", "Worksheet_SelectionChange"
    End Sub
     
    Sub RechercherRemplacer(Wbk As ThisWorkbook, CodeMod$, NomProc$)
     
    Dim Rechercher As String
    Dim Remplacer As String
    Dim Trouver As Integer
    Dim I As Integer
     
    Rechercher = "ScrollArea="
    Remplacer = "'ScrollArea="
    With Wbk.VBProject.VBComponents(CodeMod).CodeModule
        For I = 1 To .CountOfLines
            Trouver = InStr(.Lines(I, 1), Rechercher)
                If Trouver > 0 Then
                'si une occurrence est trouvée, fait la modif et boucle
                'sur la ligne afin de remplacer tous les mots
                    Do
                      .ReplaceLine I, Left(.Lines(I, 1) _
                          , Trouver - 1) & Remplacer & _
                          Mid(.Lines(I, 1), _
                          Trouver + Len(Rechercher) _
                          , Len(.Lines(I, 1)))
                          Trouver = InStr(Trouver + 1, _
                          .Lines(I, 1), Rechercher)
                    Loop While Trouver <> 0
                End If
        Next I
    End With
     
    End Sub
    Pourriez-vous m’aider à corriger ce problème, merci d’avance

    Cordialement modus57

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Essaie comme ceci
    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
    Sub ModifierModuleFeuille()
        RechercherRemplacer ThisWorkbook, "Feuil1", "Worksheet_SelectionChange"
    End Sub
     
    Sub RechercherRemplacer(Wbk As ThisWorkbook, CodeMod$, NomProc$)
        Dim Rechercher As String, Remplacer As String
        Dim i As Integer, Ligne As String
        Dim LigDebut As Integer, NbrLig As Integer
     
        Rechercher = "ScrollArea="
        Remplacer = "'ScrollArea="
     
        With Wbk.VBProject.VBComponents(CodeMod).CodeModule
            LigDebut = .ProcStartLine(NomProc, 0) '<-- ligne de début de la procédure "NomProc"
            NbrLig = .ProcCountLines(NomProc, 0) + LigDebut '<-- ligne de fin de la procédure "NomProc"
     
            For i = LigDebut To NbrLig
                If .Lines(i, 1) <> "" Then
                    Ligne = .Lines(i, 1)
                    Ligne = Replace(Ligne, Rechercher, Remplacer)
                    .ReplaceLine i, Ligne
                End If
            Next i
        End With
    End Sub
    Tu trouveras plus d'info sur la manipulation des macros via macro dans le tuto ci-dessous :
    http://silkyroad.developpez.com/VBA/VisualBasicEditor/
    .

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 842
    Par défaut
    Bonjour fring

    Merci pour ta réponse, en effet les corrections que tu as apporté à la procédure fonctionne parfaitement.

    J’ai consulté le tutorial de SilkyRoad mais je n’ai pas trouver de réponse pour la question suivante :

    Comment insérer la ligne de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(1).ScrollArea = ""
    à la fin du module "Worksheet_SelectionChange" de "Feuil1"

    Tu as peut-être la solution

    @ + modus57

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 842
    Par défaut
    Re Bonjour fring

    Après avoir reconsulter le tutorial, j'ai modifier le code et cela fonctionne tip top

    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
    27
    Sub DésactiverScrollArea()
        RechercherRemplacer ThisWorkbook, "Feuil1", "Worksheet_SelectionChange"
    End Sub
     
    Sub RechercherRemplacer(Wbk As ThisWorkbook, CodeMod$, NomProc$)
        Dim Rechercher As String, Remplacer As String
        Dim i As Integer, Ligne As String
        Dim LigDebut As Integer, NbrLig As Integer
         
        Rechercher = "ScrollArea ="
        Remplacer = "'ScrollArea ="
        
        With Wbk.VBProject.VBComponents(CodeMod).CodeModule
            LigDebut = .ProcStartLine(NomProc, 0) '<-- ligne de début de la procédure "NomProc"
            NbrLig = .ProcCountLines(NomProc, 0) + LigDebut '<-- ligne de fin de la procédure "NomProc"
        
            For i = LigDebut To NbrLig
                If .Lines(i, 1) <> "" Then
                    Ligne = .Lines(i, 1)
                    Ligne = Replace(Ligne, Rechercher, Remplacer)
                    .ReplaceLine i, Ligne
                End If
            Next i
            X = .CountOfLines
                .InsertLines X - 1, "Worksheets(1).ScrollArea = """        
        End With
    End Sub
    A prime abord le sujet est clos, merci beaucoup

    Cordialement modus57

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par modus57 Voir le message
    A prime abord le sujet est clos
    Dans ce cas, peux-tu cliquer sur le bouton , en bas de discussion?

    Merci
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Rechercher/Remplacer un mot dans un texte
    Par epauusa dans le forum Pascal
    Réponses: 1
    Dernier message: 21/05/2009, 17h46
  3. Recherche le nombre de mots dans un fichier
    Par peppena dans le forum Linux
    Réponses: 2
    Dernier message: 19/04/2006, 10h46
  4. [RegEx] motif pour remplacer un mot dans du code HTML ...
    Par r-zo dans le forum Langage
    Réponses: 6
    Dernier message: 31/03/2006, 13h31

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