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 :

Modifier Code VBA avec macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club Avatar de yadla
    Profil pro
    Inscrit en
    Août 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 82
    Points : 34
    Points
    34
    Par défaut Modifier Code VBA avec macro
    Bonjour le forum,

    Après avoir fait des recherches dans le forum, j'ai trouvé cette discussion :
    J'aimerais comprendre et donc essayer le code proposé par kiki, mais j'ai une erreur de compilation.

    Je mets le 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Option Explicit
     
    '======================================================================================
    '   Cocher Outils | Reférence Microsoft Visual Basic for Applications Extensibility 5.3
    '======================================================================================
     
    '   Détruit Macro nommée Essai dans module nommé ModuleA de ThisWorkbook
    Sub DelMacro()
    Dim Debut As Long
    Dim NbLignes As Long
    Dim VBCodeMod As CodeModule
    On Error GoTo Erreurs
     
        Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("ModuleA").CodeModule
        With VBCodeMod
            Debut = .ProcStartLine("Essai", vbext_pk_Proc)
            NbLignes = .ProcCountLines("Essai", vbext_pk_Proc)
            .DeleteLines Debut, NbLignes
        End With
        Exit Sub
    Erreurs:
        Debug.Print Err.Number & " " & Err.Description
    End Sub
     
    '   Crée la Macro nommée Essai dans module nommé ModuleA dans ThisWorkbook
    Sub CreerMacro()
    Dim VBCodeMod As CodeModule
    Dim x As Long
     
        Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("ModuleA").CodeModule
        With VBCodeMod
            x = .CountOfLines + 1
            .InsertLines x, ""
            .InsertLines x + 1, "Sub Essai()"
            .InsertLines x + 2, "      Msgbox ""Nouvelle Procedure"""
            .InsertLines x + 3, "End Sub"
        End With
    End Sub
     
    '   Alternative
    '   Crée la Macro nommée Essai dans module nommé ModuleA de ThisWorkbook
    Sub CreerMacro2()
    Dim VBCodeMod As CodeModule
    Dim x As Long, str As String
        str = ""
        Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("ModuleA").CodeModule
        With VBCodeMod
            str = "Sub Essai()" & vbCrLf
            str = str & "      Msgbox ""Nouvelle Procedure""" & vbCrLf
            str = str & "End Sub" & vbCrLf
            x = .CountOfLines + 1
            .InsertLines x, str
        End With
    End Sub
    Du coup, je n'ai pas tout à fait saisi ce que ses macros font exactement.
    Si quelqu'un peut m'éclairer un peut.

    Ce que je cherche à faire, moi, c'est de modifier le texte "aaa" par le texte "bbb" dans le code VBA.

    Merci de votre aide
    Encore et toujours besoin d'aide
    Yadla

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

    Quel est l'erreur de compliation (message, code) ?
    As-tu bien référencé la bibliothèque ? (tu as le nom dans les premières lignes du code).

    Starec

  3. #3
    Nouveau membre du Club Avatar de yadla
    Profil pro
    Inscrit en
    Août 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 82
    Points : 34
    Points
    34
    Par défaut
    Oups ,

    Bonjour Starec, désolée, je suis un peu distraite... Autant pour moi...

    Du coup, je vois, la nouvelle macro "Essai()" n'a que le Msgbox.
    Comment faire pour récupérer l'ancien code et le modifier en cherchant un texte précis ?
    Encore et toujours besoin d'aide
    Yadla

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    Le code tu as trouvé est un début de piste pour pouvoir modifier le module.
    En utilisant l'aide tu peux progresser.

    Voici un exemple que j'ai écrit pour trouver des valeurs dans le code et les remplacer par d'autres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim VBComp As VBComponent
    Dim Ancien As String, Nouveau As String, Cible As String
     
    With ActiveWorkbook.VBProject.VBComponents("Nom du module").CodeModule
        ' pour le remplacement d'une ligne entière
        For i = 1 To .CountOfLines
        Cible = .Lines(i, 1)
        If Cible = "texte cherché" Then
            .ReplaceLine i, "Nouveau texte"
        End If
    Next
    Modifie ce code pour chercher une valeur dans le module et inspire toi de cette Q/R.
    http://excel.developpez.com/faq/inde...emplacerMotVBE

  5. #5
    Nouveau membre du Club Avatar de yadla
    Profil pro
    Inscrit en
    Août 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 82
    Points : 34
    Points
    34
    Par défaut
    Bonjour Lou Pitchoun,

    J'avais fait un .find... et je trouvais bien le texte que je cherchais... Maintenant je regardais pour rempalcer... en fat c'est facile "ReplaceLine" faut que je vois si c'est possible pour autre qu'un ligne enitère.

    Merci en tout cas.

    Bonne journée à tous
    Encore et toujours besoin d'aide
    Yadla

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    En complément, as-tu lu ce tuto http://silkyroad.developpez.com/VBA/VisualBasicEditor/ de SilkyRaod.

    Starec

  7. #7
    Nouveau membre du Club Avatar de yadla
    Profil pro
    Inscrit en
    Août 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 82
    Points : 34
    Points
    34
    Par défaut
    Merci

    Je découvre encore de nouvelles choses...
    Il faudrait que je prenne le temps de visiter le site en ENTIER...
    Il est vraiment génial.

    Je lis le tutoriel. En plus il est est vraiment simple à comprendre, vraiment bien fait, encore merci
    Encore et toujours besoin d'aide
    Yadla

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

Discussions similaires

  1. Modifier du code vba avec vba
    Par kergamenan dans le forum Access
    Réponses: 1
    Dernier message: 19/03/2014, 14h58
  2. [XL-2007] Modifier Code VBA avec macro
    Par lenovo49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/01/2012, 18h39
  3. copier le code vba avec sa mise en forme
    Par gritchou dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/06/2008, 09h00
  4. Code VBA avec caractère @
    Par Jacques-Henri dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/11/2007, 21h01
  5. [débutant]Code VBA ou Macro ?
    Par Sarune dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2007, 09h38

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