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 :

SaveCopyAs mais sans les macros ? [XL-2003]


Sujet :

Macros et VBA Excel

  1. #21
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par antonysansh Voir le message
    Le code posté ici

    Supprime tous les modules du classeur actif. Ce n'est pas acceptable comme solution ?
    Si, peut-être, mais il y a ce problème de vbcomponent (voir plus bas)

    Citation Envoyé par kiki29 Voir le message
    Salut, le fait de pointer ce qui devrait t'intéresser ne te dispense pas de lire l'ensemble depuis le début.
    Oui, oui, tu as raison et c'est ce que j'étais entrain de faire, mais ça m'amène 2 nouvelles questions : si j'ajoute cette référence dans mon appli Excel sur le micro de développement, est-ce ça fonctionnera aussi sur les micros de clients où est-ce qu'il faudra absolument qu'il le fasse aussi et est-ce que ça fonctionnera aussi avec Excel 2010 ?
    Zeb'...

  2. #22
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous

    Voici une idée comme une autre.

    si tu copies tes feuilles de cette manière les macros ne suivent pas
    la macro est dans classeur1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Sheets("Feuil2").Select
        Sheets("Feuil2").Copy After:=Workbooks("Classeur2").Sheets(1)
    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  3. #23
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Ca a fonctionné, mais comme je l'ai dit plus haut, les formules dans les cellules, graphes et dessins sont modifiées comme ça : "='[classeurorigine.xls]QFU'!G42", par exemple
    Zeb'...

  4. #24
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    il y a plusieur chose a determiner d'abords
    ya til des modules (standard et classe)
    y a t il du code dans les modules des feuilles
    pour supprimer les codes et modules il faut verifier que la reference est activé
    au cas ou elle ne serait pas activée l'activer

    plutot que ecrire dans le code array("feuil1","feuil2","feuil3",etc.....)
    je préfère créé un tableau(variable tableau )
    ensuite la ligne de copy sera sheets(tablo).copy
    enfin bref
    je te propose une sub qui fait tout ca toute seule
    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
    Option Explicit
    Sub sauve()
        Dim chemin As String, nom As String
        Dim VBComp As VBComponent, VBComps
        '*****************************************************************************
        'on ajoute la référence si elle n'y est pas (Microsoft visual basic for application extensibility x.y
        On Error Resume Next
        ThisWorkbook.VBProject.References.AddFromFile "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
        Err.Clear
        '******************************************************************************
        chemin = ThisWorkbook.Path & "\"    ' on précise le chemin
        nom = "classeur sans macro.xls"    ' on précise le nom du classeur de destination
        Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Copy    ' on copie les feuilles
        'on vire tout les module et code du nouveau classeur
        With ActiveWorkbook.VBProject
            For Each VBComp In .VBComponents 'on boucle sur tout les modules
     
                Select Case VBComp.Type ' ons electionne le type
                Case 100 'si c'est une feuille
                    With VBComp.CodeModule
                        .DeleteLines 1, .CountOfLines 'on efface les lignes de code
                    End With
                Case Else
                    VBComps.Remove VBComp 'si c'est une autre sorte de module (standard ou classe) on le vire
                End Select
            Next
        End With
        Application.DisplayAlerts = False 'on supprime les  fenetres  d'avertissement
     
        'et voila maintenant on sauve le nouveau classeur
        ActiveWorkbook.SaveAs Filename:=chemin & nom, FileFormat:=xlExcel8, _
                              Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                              CreateBackup:=False
        ActiveWindow.Close 'on ferme le nouveau classeur pour revenir au classeur de base
    'si tu n'a pas besoin de garder le classeur de base ouvert apres avoir enregistré le nouveau classeur
    'tu peut faire
    'Application.quit
    End Sub
    voila

    oopss pardon je t'ai donner le code simple avec array en dur
    prends pluto celui la
    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
    Option Explicit
    Sub sauve()
        Dim chemin As String, nom As String, sh As Worksheet, i As Long
        Dim VBComp As VBComponent, VBComps
        '*****************************************************************************
        'on ajoute la référence si elle n'y est pas (Microsoft visual basic for application extensibility x.y
        On Error Resume Next
        ThisWorkbook.VBProject.References.AddFromFile "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
        Err.Clear
        '******************************************************************************
        chemin = ThisWorkbook.Path & "\"    ' on précise le chemin
        nom = "classeur sans macro.xls"    ' on précise le nom du classeur de destination
    'on créé un tableau des sheets
    ReDim tablo(Sheets.Count)
    For Each sh In Worksheets
    tablo(i) = sh.Name
    i = i + 1
    Next
        Sheets(tablo).Copy    ' on copie les feuilles
        'on vire tout les module et code du nouveau classeur
        With ActiveWorkbook.VBProject
            For Each VBComp In .VBComponents 'on boucle sur tout les modules
     
                Select Case VBComp.Type ' ons electionne le type
                Case 100 'si c'est une feuille
                    With VBComp.CodeModule
                        .DeleteLines 1, .CountOfLines 'on efface les lignes de code
                    End With
                Case Else
                    VBComps.Remove VBComp 'si c'est une autre sorte de module (standard ou classe) on le vire
                End Select
            Next
        End With
        Application.DisplayAlerts = False 'on supprime les  fenetres  d'avertissement
     
        'et voila maintenant on sauve le nouveau classeur
        ActiveWorkbook.SaveAs Filename:=chemin & nom, FileFormat:=xlExcel8, _
                              Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                              CreateBackup:=False
        ActiveWindow.Close 'on ferme le nouveau classeur pour revenir au classeur de base
    'si tu n'a pas besoin de garder le classeur de base ouvert apres avoir enregistré le nouveau classeur
    'tu peut faire
    'Application.quit
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #25
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Ouah, génial, je teste ça le plus rapidement possible.
    Merci beaucoup.

    Est-ce que ça fonctionnera aussi avec Excel 2010 ?
    Zeb'...

  6. #26
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Bon, ben, pas glop.

    J'ai un petit peu modifié la procédure comme ça et ça ne fonctionne pas.
    C'est le début de l'application, il faut donc que le classeur d'origine ne soit absolument pas trouché, c'est pour cela que j'ai utilisé un SaveCopyAs, mais là, les paramètres ne sont plus acceptés.
    Mais si je laisse le SaveAs, le classeur d'origine est renommé et les macros ne sont plus accessibles.
    (J'ai oublié de préciser, que l'application est lancé de manière automatique via une feuille Auto_open)

    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
     
    Sub CopieDuClasseurOriginalSansMacro(P_FichierCible)
        Dim chemin As String, nom As String, sh As Worksheet, i As Long
        Dim VBComp As VBComponent, VBComps
        '*****************************************************************************
        'on ajoute la référence si elle n'y est pas (Microsoft visual basic for application extensibility x.y
        On Error Resume Next
        ThisWorkbook.VBProject.References.AddFromFile "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
        err.Clear
        '******************************************************************************
        chemin = ThisWorkbook.Path & "\"    ' on précise le chemin
        nom = P_FichierCible '"classeur sans macro.xls"    ' on précise le nom du classeur de destination
    'on créé un tableau des sheets
    ReDim tablo(Sheets.Count)
    For Each sh In Worksheets
    tablo(i) = sh.Name
    i = i + 1
    Next
        Sheets(tablo).Copy    ' on copie les feuilles
        'on vire tout les module et code du nouveau classeur
        With ActiveWorkbook.VBProject
            For Each VBComp In .VBComponents 'on boucle sur tout les modules
     
                Select Case VBComp.Type ' ons electionne le type
                Case 100 'si c'est une feuille
                    With VBComp.CodeModule
                        .DeleteLines 1, .CountOfLines 'on efface les lignes de code
                    End With
                Case Else
                    VBComps.Remove VBComp 'si c'est une autre sorte de module (standard ou classe) on le vire
                End Select
            Next
        End With
        Application.DisplayAlerts = False 'on supprime les  fenetres  d'avertissement
     
        'et voila maintenant on sauve le nouveau classeur
    '    ActiveWorkbook.SaveAs Filename:=chemin & nom, FileFormat:=xlExcel8, _
                              Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                              CreateBackup:=False
        ActiveWorkbook.SaveCopyAs Filename:=P_FichierCible, FileFormat:=xlExcel8, _
                              Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                              CreateBackup:=False
    '    ActiveWindow.Close 'on ferme le nouveau classeur pour revenir au classeur de base
    'si tu n'a pas besoin de garder le classeur de base ouvert apres avoir enregistré le nouveau classeur
    'tu peut faire
    'Application.quit
    End Sub
    Au fait, lorsque je mets des points d'arrêt dans cette sub, sur "SaveCopyAs", j'ai un message "Impossible d'entrer en mode arrêt maintenant".
    Zeb'...

  7. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    bon
    j'espere que dans "P_FichierCible" il y a le chemin complet
    sinon ici tu risque d'avoir un soucis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveCopyAs Filename:=P_FichierCible
    si le chemin est complet tu peut supprimer la variable chemin et tout ce qui la concerne du code

    avant de sauver a tu essayé de bloquer la ligne saveas et regarder dans l'editeur vbe si le code et les modules ont bien disparu du classeur créé
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #28
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Oui, oui, dans P_FichierCible, il y a bien le chemin complet avec le nom du fichier, pas de pb de ce côté-là.

    Par contre, comme je le disais dans mon précédent message que j'étais entrain d'éditer : je ne peux pas mettre de point d'arrêt sur la commande SaveAs, j'ai un message "Impossible d'entrer en mode arrêt maintenant".

    Même souci avec SaveCopyAs, ça ne fonctionne pas mieux.

    Par contre, j'ai remarqué que les modules contenant les macros ne sont pas supprimés, mais que les macros situées dans la feuille Auto_open sont bien supprimées.

    Il faut donc que je fasse attention de ne pas sauvegarder le classeur en cours, sinon, aie aie aie...

    Ce qui est bizarre, c'est que je met un point d'arrêt juste avant l'appel de la sub, puis je continue l'exécution et j'ai quand même le message "Impossible d'entrer en mode arrêt maintenant", j'ai le choix sur "Coninuer" ou "Fin" et quand je continue, j'ai "Erreur d'exécution 9 : l'indice n'appartient pas à la sélection".

    Je suis dépassé...

    Est-ce qu'il ne serait pas possible de faire un SaveCopyAs et d'ouvrir le nouveau classeur pour appliquer la procédure de suppression de macro au nouveau classeur ?
    Zeb'...

  9. #29
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    J'ai essayé mettant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActiveWorkbook.SaveCopyAs WFichierCible2
    Workbooks.Open Filename:=WFichierCible2
    juste avant d'exécuter la macro, ça fonctionne presque : le code situé dans la feuille Auto_open est bien supprimé, mais pas les modules.
    Zeb'...

  10. #30
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re for the next!!!!!

    voila celle la c'est la bonne
    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
    Sub sauve_sans_macro()
     
        Dim tablo, chemin As String, nom As String, sh As Worksheet, i As Long
        Dim VBComp As VBComponent, VBComps As Variant
        '*****************************************************************************
        'on ajoute la référence si elle n'y est pas (Microsoft visual basic for application extensibility x.y
        On Error Resume Next
        ThisWorkbook.VBProject.References.AddFromFile "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
        On Error GoTo 0
        '******************************************************************************
        chemin = ThisWorkbook.Path & "\"    ' on précise le chemin
        nom = "classeur sans macro.xls"    ' on précise le nom du classeur de destination
        ActiveWorkbook.SaveCopyAs chemin & nom    'on en fait une copie
        Workbooks.Open chemin & nom    'on ouvre la copie
        With ActiveWorkbook.VBProject
            For Each VBComp In .VBComponents    'on boucle sur tout les modules
                Debug.Print VBComp.Name & "-" & VBComp.Type
                Select Case VBComp.Type    ' on selectionne le type de module
                    'si c'est une feuille
                Case 100: With VBComp.CodeModule: .DeleteLines 1, .CountOfLines: End With    'on efface les lignes de code
                        'si c'est autre chose (module standard ou classe )
                    Case 1, 2,3: .VBComponents.Remove VBComp    'on supprime
                    End Select
                Next
            End With
            Application.DisplayAlerts = False    'on supprime les  fenetres  d'avertissement
            ActiveWorkbook.Save
            ActiveWorkbook.Close    'on ferme le nouveau classeur pour revenir au classeur de base
     
        End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #31
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Et en modifiant les liens externes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveWorkbook.ChangeLink Name:="Nom du fichier original", _
            NewName:="Nom du nouveau fichier", Type:=xlExcelLinks
    MPi²

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    bonjour parmi
    le changement des lien n'est plus utilie en ayant sauvé en copie le fichier integral les liens dans les formules correspondent bien
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #33
    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
    Salut, Post 21 : voir ceci : Early ou Late Binding. Tu as tout intérêt à fonctionner en Late Binding.

  14. #34
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re for the next!!!!!

    voila celle la c'est la bonne
    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
    Sub sauve_sans_macro()
     
        Dim tablo, chemin As String, nom As String, sh As Worksheet, i As Long
        Dim VBComp As VBComponent, VBComps As Variant
        '*****************************************************************************
        'on ajoute la référence si elle n'y est pas (Microsoft visual basic for application extensibility x.y
        On Error Resume Next
        ThisWorkbook.VBProject.References.AddFromFile "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
        On Error GoTo 0
        '******************************************************************************
        chemin = ThisWorkbook.Path & "\"    ' on précise le chemin
        nom = "classeur sans macro.xls"    ' on précise le nom du classeur de destination
        ActiveWorkbook.SaveCopyAs chemin & nom    'on en fait une copie
        Workbooks.Open chemin & nom    'on ouvre la copie
        With ActiveWorkbook.VBProject
            For Each VBComp In .VBComponents    'on boucle sur tout les modules
                Debug.Print VBComp.Name & "-" & VBComp.Type
                Select Case VBComp.Type    ' on selectionne le type de module
                    'si c'est une feuille
                Case 100: With VBComp.CodeModule: .DeleteLines 1, .CountOfLines: End With    'on efface les lignes de code
                        'si c'est autre chose (module standard ou classe )
                    Case 1, 2,3: .VBComponents.Remove VBComp    'on supprime
                    End Select
                Next
            End With
            Application.DisplayAlerts = False    'on supprime les  fenetres  d'avertissement
            ActiveWorkbook.Save
            ActiveWorkbook.Close    'on ferme le nouveau classeur pour revenir au classeur de base
     
        End Sub
    Génial de chez génial.
    Les premiers tests sont concluant.
    Je continu l'intégration de ta procédure dans mes programmes.
    Un grand merci à toi pour ta solution et surtout pour ta patience.
    Une petite question toutefois : est-ce que ça fonctionnera avec Excel 2010 ?

    Citation Envoyé par parmi Voir le message
    Bonjour,

    Et en modifiant les liens externes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveWorkbook.ChangeLink Name:="Nom du fichier original", _
            NewName:="Nom du nouveau fichier", Type:=xlExcelLinks
    Merci, mais je ne testerai pas ta solution par manque de temps car j'ai choisi la solution de la suppression du code.
    Zeb'...

  15. #35
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    bonjour
    oui aucune raison que ca ne fonctionne pas avec 2010 ou 2013
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #36
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 319
    Points : 286
    Points
    286
    Par défaut
    Et bien c'est super, tout à l'air de fonctionner nickel.
    Merci encore.
    Zeb'...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [PPT-2007] Sauvegarder une presentation sans les macros
    Par Akxn0008 dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 08/07/2009, 19h06
  2. [SQL] une date mais sans les jours
    Par cyberps2 dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/06/2008, 16h53
  3. [VBA][Word]Sauvegarder sans les macros
    Par Oui-Oui MB dans le forum VBA Word
    Réponses: 3
    Dernier message: 23/07/2007, 13h29
  4. Enregistrer Un Classeur Sans Les Macros
    Par potters dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/06/2007, 09h48
  5. [c#] tableau comme le datagridview mais sans les data
    Par korben06 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/06/2006, 18h51

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