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 un mot dans le code d’un userform


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
    834
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 834
    Par défaut Remplacer un mot dans le code d’un userform
    Bonsoir.

    La macro « Comment remplacer un mot dans toutes les procédures d'un classeur » de SilkyRoad

    Lien : http://excel.developpez.com/faq/inde...ectedProjetVBE.

    Elle permet de rechercher et remplacer un mot dans tous les modules, mais je souhaiterais que cette action puisse le faire dans le code des userform.

    Je ne sais pas comment modifier le code.

    Une petite idée pour m’aider, merci d’avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Un tuto du même auteur : http://silkyroad.developpez.com/VBA/VisualBasicEditor/

    Starec

  3. #3
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir,

    à la lecture du code donné par SilkyRoad
    http://excel.developpez.com/faq/inde...ectedProjetVBE
    il me semble que les mots sont remplacés dans tout le projet VBA, module de feuille, de code, de classe ou userform.
    Cordialement

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 834
    Par défaut
    Bonsoir Starec, fred65200.

    à la lecture du code donné par SilkyRoad
    http://excel.developpez.com/faq/inde...ectedProjetVBE
    il me semble que les mots sont remplacés dans tout le projet VBA, module de feuille, de code, de classe ou userform.
    J'ai l'impression que les mots ne sont pas remplacés dans l'userform du fichier ci-joint ???

  5. #5
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir, dans ton code il y a un truc qui me tracasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Ancien = "Feuil3"
        Nouveau = "Feuil3"
    à quoi ça sert??

    Si tu places le code dans le classeur il faut que tu ajoutes une condition pour ne pas le faire dans la macro "RemplacementMotDansProcedure"

    Sinon ça fonctionne très bien

    cordialement

    EDIT
    Nommes un module modRemplacement et place la macro RemplacementMotDansProcedure dans ce module
    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
    Sub RemplacementMotDansProcedure()
        'Nécéssite d'activer la référence
        '"Visual basic For Application Extensibility 5.3"
        '
        Dim Ancien As String, Nouveau As String, Cible As String
        Dim VBComp As VBComponent
        Dim i As Integer
        Dim Wb As Workbook
        
        Set Wb = Workbooks("MomClasseur.xls")
        
        Ancien = "Feuil1"
        Nouveau = "Feuil3"
        
        For Each VBComp In Wb.VBProject.VBComponents
            If VBComp.Name = "modRemplacement" Then GoTo Suite
            For i = 1 To VBComp.CodeModule.CountOfLines
                Cible = VBComp.CodeModule.Lines(i, 1)
                Cible = Replace(Cible, Ancien, Nouveau)
                VBComp.CodeModule.ReplaceLine i, Cible
            Next i
    Suite:
        Next VBComp
    End Sub

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 834
    Par défaut
    Bonsoir fred, le forum.

    bonsoir, dans ton code il y a un truc qui me tracasse
    Code :
    Ancien = "Feuil3"
    Nouveau = "Feuil3"
    à quoi ça sert??
    Petite erreur de ma part c'est bien Ancien = "Feuil1".

    Effectivement j'ai pas pensé qu' il faut ajouter une condition pour ne pas le faire dans la macro "RemplacementMotDansProcedure". J'ai testé ta procédure elle fonctionne très bien.

    J'ai ajouté ce bout de code :
    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
     
    For Each VBComp In Wb.VBProject.VBComponents
        For I1 = 1 To VBComp.CodeModule
            If VBComp.CodeModule.Find(Ancien) = False Then
                MsgBox "Aucune occurence trouvée "
                Exit Sub
            Else
                For Each VBComp2 In Wb.VBProject.VBComponents
                If VBComp2.Name = "modRemplacement" Then GoTo Suite
                    For I2 = 1 To VBComp2.CodeModule.CountOfLines
                        Cible = VBComp2.CodeModule.Lines(I2, 1)
                        Cible = Replace(Cible, Ancien, Nouveau)
                        VBComp2.CodeModule.ReplaceLine I2, Cible
                    Next I2
    Suite:
                    Next VBComp2
                End If
        Next I1
    Next VBComp
     
    End Sub
    Mais ma synatxe Find ne fonctionne pas???

    Pourrais-tu la corriger SVP.

    Merci d'avance.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. [JS] Remplacer les mots dans le code d'une page.
    Par sansamis dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/01/2007, 19h06
  3. Réponses: 10
    Dernier message: 29/04/2006, 10h40
  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