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 :

Depuis une macro comment effacer un module de macros dans un autre fichier excel ?


Sujet :

Macros et VBA Excel

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Ingénieur en électronique
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 20
    Points
    20
    Par défaut Depuis une macro comment effacer un module de macros dans un autre fichier excel ?
    Bonjour,

    Comment peut-on depuis une macro écrite en VBA sous excel effacer dans un autre fichier excel un module de macro complet ?

    Je m'explique. Depuis une macro je parviens à effacer entièrement du code dans un autre fichier excel avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With Application.Workbooks(Dir(NomFichier))
         With .VBProject.VBComponents("Main").CodeModule
             .DeleteLines 1, .CountOfLines
         End With
    End With
    mais je ne parviens pas à effacer du fichier excel "NomFichier" le module nommé "Main". Ce qui fait que quand je réouvre ce fichier un message m'indique la présence de macros. Cela semble dû à la présence de ce module même s'il est vide car quand je l'efface moi-même je n'ai plus de message à l'ouverture du fichier excel.

    J'espère avoir été clair dans mon explication

    En attendant une réponse merci d'avance.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Pour supprimer un module:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub supprimerUnModule()
        With Workbooks("NomClasseur.xls").VBProject.VBComponents
            .Remove .Item("Module2")
        End With
    End Sub

    bonne soirée
    michel

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Ingénieur en électronique
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Bonjour SilkyRoad,

    J'ai inséré ton bout de code dans ma procédure mais cela ne fonctionne qu'à moitié.

    Voici la procédure (le bout de code rajouté est signalé) :
    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
    Sub SauvegardeTraca()
        Dim CeJour As Variant
        Dim CetteHeure As Variant
        Dim NomFichier As String
     
        CeJour = Date
        CetteHeure = Time
     
        NomFichier = "Traca_" & Day(CeJour) & "_" & Month(CeJour) & "_" & Year(CeJour) & "_"
        NomFichier = NomFichier & Hour(CetteHeure) & "_" & Minute(CetteHeure) & "_" & Second(CetteHeure) & ".xls"
     
        NomFichier = ThisWorkbook.Path & Chr(92) & NomFichier
     
        Application.DisplayAlerts = False
        ThisWorkbook.SaveCopyAs (NomFichier)
     
        Workbooks.Open NomFichier
     
    Dim ob As Object
     
    Set ob = Application.Workbooks(Dir(NomFichier))
     
        With Application.Workbooks(Dir(NomFichier))
     
            With .VBProject.VBComponents("Main").CodeModule
                .DeleteLines 1, .CountOfLines
            End With
     
            With .VBProject.VBComponents("ThisWorkbook").CodeModule
                .DeleteLines 1, .CountOfLines
            End With
     
            With .Worksheets("Recherche_Traca")
                .Delete
            End With
     
           ' *********************
           ' Ici le bout de code rajouté
           ' *********************
            With .VBProject.VBComponents
                .Remove .Item("Main")
                .Remove .Item("DlgRechercheTraca")
            End With
     
        End With
     
        Application.Workbooks(Dir(NomFichier)).Save
        Application.Workbooks(Dir(NomFichier)).Close
     
        Application.DisplayAlerts = True
     
    End Sub
    "DlgRechercheTraca" est un userform et il est effectivement effacé du projet. Par contre pour "Main" je ne parviens toujours pas à l'effacer . Où est-ce que je fais une erreur ??

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Soir Bon,Ton code modifé et testé fonctionne sur mon PC ...
    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
     
    Option Explicit
     
    Sub SauvegardeTraca()
    Dim CeJour As Variant
    Dim CetteHeure As Variant
    Dim NomFichier As String
    Dim ob As Object
     
        CeJour = Date
        CetteHeure = Time
     
        NomFichier = "Traca_" & Day(CeJour) & "_" & Month(CeJour) & "_" & Year(CeJour) & "_"
        NomFichier = NomFichier & Hour(CetteHeure) & "_" & Minute(CetteHeure) & "_" & Second(CetteHeure) & ".xls"
     
        NomFichier = ThisWorkbook.Path & Chr(92) & NomFichier
     
        Application.DisplayAlerts = False
        ThisWorkbook.SaveCopyAs (NomFichier)
     
        Workbooks.Open NomFichier
     
     
        Set ob = Application.Workbooks(Dir(NomFichier))
     
        With Application.Workbooks(Dir(NomFichier))
     
            With .VBProject.VBComponents
                .Remove .Item("Main")
            End With
     
            With .VBProject.VBComponents("ThisWorkbook").CodeModule
                .DeleteLines 1, .CountOfLines
            End With
     
            With .Worksheets("Recherche_Traca")
                .Delete
            End With
     
            With .VBProject.VBComponents
                .Remove .Item("DlgRechercheTraca")
            End With
     
        End With
     
        Application.Workbooks(Dir(NomFichier)).Save
        Application.Workbooks(Dir(NomFichier)).Close
     
        Application.DisplayAlerts = True
     
    End Sub

  5. #5
    En attente de confirmation mail
    Homme Profil pro
    Ingénieur en électronique
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en électronique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Salut,

    Mille excuses pour mon retard dans une réponse.

    J'ai implanté le code donné par kiki29.

    Quand j'exécute en mode debug pas à pas la procédure jusqu'à sa fin, le module "Main" n'est pas effacé du fichier excel

    Par contre toujours en mode debug pas à pas, si j'interrompt le mode debug par exemple à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .VBProject.VBComponents("ThisWorkbook").CodeModule
    alors là le module "Main" est effectivement effacé du fichier.

    En conclusion je n'y comprends rien !! Y-a-t-il une option, un paramètre au niveau excel que je devrais positionner ou alors autre chose ???

    J'espère que quelqu'un pourra me donner une réponse.

    J'attends avec impatience.

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/11/2012, 17h51
  2. [XL-2007] Créer une liste de validation à partir de données contenues dans un autre fichier
    Par familledacp dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/10/2011, 18h03
  3. Réponses: 0
    Dernier message: 28/02/2011, 13h48
  4. [XL-2007] Erreur 1004, recherche d'une cellule dans un autre fichier excel
    Par bodd984 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/08/2010, 18h12
  5. Macro permettant envoi de données dans un autre fichier excel
    Par M8407108 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/11/2007, 11h20

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