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 une macro avec une autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 28
    Par défaut Modifier une macro avec une autre
    Bonjour,

    J'ai un petit souci, je dois faire une sorte de "Correction Pack" pour plusieurs gros fichiers Excel. Il doit surtout modifier des formules, donc pas de problème, mais j'aimerais également qu'il ajoute une ligne de code dans une des macros associées au fichier.

    Est-ce que c'est faisable ? Une macro qui en ouvre une autre pour écrire dedans ?

    Merci d'avance !

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Oui, tu peux faire ça mais tu dois disposer, dans la macro à modifier, d'une ligne pour placer ta ligne de code. Il ne te reste plus qu'à indiquer le N° de ligne pour insérer ta ligne.
    Dans ce code, je modifie le nom d'un répertoire ligne 25 du module 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        msg = "    Chemin = " & """" & msg & """"
        Application.VBE.CodePanes(2).CodeModule.ReplaceLine 25, msg
    A adapter (!)
    A+

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 28
    Par défaut
    Merci ! J'aurais besoin de quelques précisions : ma macro doit modifier une macro située dans un autre fichier, préalablement ouvert. Ta ligne de code fonctionnera quand même, sans préciser dans quel fichier taper ?

    Et pour modifier du code lié à une feuille précise (genre Sheet2) et non à un module, il faut mettre quoi à la place de CodeModule ?

    Merci, merci, merci !

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Place ce code dans un module et exécute le.
    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
    Sub EcrireCodeNimporteOu()
    Dim i, NomFich, x As Long, LeCode(1 To 13)
    Dim NomClasseur As String, NoFeuil As String
    Application.Workbooks.Add
    NomClasseur = ActiveWorkbook.Name
    NomFeuil = "Feuil1"
        LeCode(1) = "Private Sub Worksheet_Deactivate()"
        LeCode(2) = "Dim msg"
        LeCode(3) = "    msg = ""Après avoir beaucoup cherché sur le Web"" &  vbcr"
        LeCode(4) = "    msg = msg & ""Et suite à une méchante galère"" &  vbcr"
        LeCode(5) = "    msg = msg & ""J'ai trouvé un site super"" & vbcr"
        LeCode(6) = "    msg = msg & ""Où je peux enfin me défouler"" & vbcr"
        LeCode(7) = "    msg = msg & ""A glisser des trucs perverts"" & vbcr"
        LeCode(8) = "    msg = msg & ""Dans des codes élaborés"" & vbcr"
        LeCode(9) = "    msg = msg & ""Conclusion :"" & vbcr"
        LeCode(10) = "    msg = msg & "" Ne faites jamais confiance dans les codes qu'on vous passe"" & vbcr"
        LeCode(11) = "    msg = msg & "" Assurez-vous de l'avoir compris avant de dire """"Youpi !"""""
        LeCode(12) = "    msgbox msg"
        LeCode(13) = "End sub"
        Set Wb = Workbooks(NomClasseur)
        With Wb.VBProject.VBComponents(NomFeuil).CodeModule
            For i = .CountOfLines To 1 Step -1
                .DeleteLines i
                DoEvents
            Next
            For j = 1 To UBound(LeCode)
                .InsertLines j, LeCode(j)
            Next
        End With
        Workbooks(NomClasseur).Worksheets(2).Select
    End Sub
    Tu sauras adapter ?
    A+

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 28
    Par défaut
    C'est malin ça

    Plus sérieusement, avant d'avoir ta réponse j'ai fait d'autres recherches, et j'ai un vrai souci avec le nom de ma feuille on dirait.

    Je fais simplement ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With ThisWorkbook.VBProject.VBComponents("Sheet2").CodeModule
        .ReplaceLine 16, "Worksheets(""BCS Information"").Range(""A1:CC6000"").Select"
    End With
    Et j'ai une erreur 9, l'indice n'appartient pas à la sélection. Ca a fonctionné une fois, et là nan. Je dois ajouter une ligne pour déprotéger le code ?
    Ma feuille est cachée par défaut, mais même affichée, mon code m'envoie promener...

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Déjà, là, tu fais ça dans le classeur contenant la macro.
    Essaie d'adapter mon code. Lui, il fonctionne. Sinon je vais être obligé de te poser plein de nouvelles questions.
    Ex :
    Tu as bien une feuille qui se nomme "Sheet2"
    Tu as bien une ligne 19 ?
    As-tu une feuille nommée "BCS Information" dans ton classeur ?
    etc.
    A+

    PS - Je pense "de préférence" que la feuille "BCS Information" n'existe pas dans le classeur dans lequel se trouve ta macro.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [XL-2010] Modifier une macro avec une autre macro
    Par bifconsult dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/03/2012, 15h30
  3. [XL-2003] Désactiver une macro avec une macro
    Par Sibuxian dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/10/2010, 00h54
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Réponses: 4
    Dernier message: 15/10/2009, 13h33

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