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 qui modifie une macro dans vba


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 44
    Points : 25
    Points
    25
    Par défaut Macro qui modifie une macro dans vba
    Bonjour à tous,

    Je cherche le code pour créer une macro qui modifie une macro dans VBA.
    J'ai trouver le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub essai()
      With ThisWorkbook.VBProject.VBComponents("").CodeModule
        LiDeb = .ProcBodyLine("Macro1", 0)
        .InsertLines LiDeb + 3, "a=a+1"
      End With
    End Sub
    Mais je cherche à modifier le code de la macro située sur la feuille 1 et pas ceux présents dans les modules
    Ce code devra me permettre de chercher les caractères et de les modifier.

    L'enregistreur de macro ne prend pas en compte le passage dans VB editor...

    Merci d'avance

  2. #2
    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
    Un lien ici


    Un exemple pour lister les composants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
    Dim wb     As Workbook
    Dim VBComp As VBComponent
    Set wb = ThisWorkbook
     For Each VBComp In wb.VBProject.VBComponents
        Debug.Print VBComp.Type & "."; VBComp.Name
          ' If VBComp.Type = 1 Then  ' Modules
           'End If
     Next
    End Sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Merci pour le lien, cela a vraiment bien aidé:
    Pour ce que ça intéresse, je met le bout de code que j'ai crée du coup

    Merci encore

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Private Sub Ok_Bouton_Click()
        If Ok_Bouton.Enabled = True Then
     
            If Controls("Date_TextBox") = "" Then
                MsgBox "You have ABSOLUTLY to indicate the Date to change !", vbExclamation, _
               "ERREUR ... Date change !"
                Controls("Date_TextBox").SetFocus
                Exit Sub
            End If
     
            'Controls("Commercial_Reference_TextBox").SetFocus
     
     
        'Nécéssite d'activer la référence
        '"Visual basic For Application Extensibility 5.3"
        '
        Dim AncienneDate1 As String
        Dim AncienneDate2 As String
        Dim NouvelleDate1 As String
        Dim NouvelleDate2 As String
        Dim CibleDate1 As String
        Dim CibleDate2 As String
     
        Dim Number1 As Byte
        Dim Number2 As Byte
     
        Dim VBComp As VBComponent
        Dim i As Integer
        Dim j As Integer
        Dim Wb As Workbook
     
        Set Wb = Workbooks("ModifieMacro.xlsm")
     
        Number1 = Mid(Date_UserForm.Date_TextBox, 3, 2)
        Number2 = Number1 - 1
        'MsgBox Number2
     
        AncienneDate1 = "2013"
        NouvelleDate1 = Date_UserForm.Date_TextBox
        AncienneDate2 = "-" & Number2
        NouvelleDate2 = "-" & Mid(Date_UserForm.Date_TextBox, 3, 2)
     
     
     
        For Each VBComp In Wb.VBProject.VBComponents
            For i = 1 To VBComp.CodeModule.CountOfLines
                CibleDate1 = VBComp.CodeModule.Lines(i, 1)
                CibleDate1 = Replace(CibleDate1, AncienneDate1, NouvelleDate1)
                'CibleDate2 = VBComp.CodeModule.Lines(i, 1)
                'CibleDate2 = Replace(CibleDate2, AncienneDate2, NouvelleDate2)
                VBComp.CodeModule.ReplaceLine i, CibleDate1
                'VBComp.CodeModule.ReplaceLine i, CibleDate2
            Next i
        Next VBComp
        For Each VBComp In Wb.VBProject.VBComponents
           For j = 1 To VBComp.CodeModule.CountOfLines
                'CibleDate1 = VBComp.CodeModule.Lines(i, 1)
                'CibleDate1 = Replace(CibleDate1, AncienneDate1, NouvelleDate1)
                CibleDate2 = VBComp.CodeModule.Lines(j, 1)
                CibleDate2 = Replace(CibleDate2, AncienneDate2, NouvelleDate2)
                'VBComp.CodeModule.ReplaceLine i, CibleDate1
                VBComp.CodeModule.ReplaceLine j, CibleDate2
            Next j
        Next VBComp
     
    Unload Date_UserForm
    End If
    End Sub

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

Discussions similaires

  1. Macro qui modifie une cellule dans une colonne fixe
    Par nyto35 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2013, 12h48
  2. [WD-2002] Macro qui modifie une macro
    Par Wanaka dans le forum VBA Word
    Réponses: 2
    Dernier message: 09/05/2009, 10h46
  3. Macro qui modifie une cellule (non-voulu)
    Par spirit1300 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/12/2007, 17h37
  4. Réponses: 5
    Dernier message: 23/10/2007, 14h56
  5. [VBA] Macro qui envoie une formule dans une cellule
    Par Okoss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2007, 22h32

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