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 :

Enregistrer une copie sans VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut Enregistrer une copie sans VBA
    Bonjour
    J'enregistre une copie d'un fichier sans macros avec le code bien connu suivant, puis je rouvre le fichier original tout en gardant la copie d'archive ouverte :
    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
    'Première sauvegarde
        ActiveWorkbook.Save
        ActiveWorkbook.SaveAs s
    
        'Suppression des modules et des lignes de code
        Set VBComps = ActiveWorkbook.VBProject.VBComponents
    
        For Each VBComp In VBComps
            Select Case VBComp.Type
            Case 100
                With VBComp.CodeModule
                .DeleteLines 1, .CountOfLines
                End With
            Case Else
                VBComps.Remove VBComp
            End Select
        Next VBComp
    
        ActiveWorkbook.VBProject.References.Remove ActiveWorkbook.VBProject.References("maref")
    
        ActiveWorkbook.Save
        
        Workbooks.Open Filename:=nomRepertoireSource & "\" & nomWindowSource, Local:=True
        Windows(nomWindowSource).Activate
        
        Application.DisplayAlerts = True
    Cependant, il apparaît que ni mon fichier ni sa copie ne sont enregistrés : la ligne de code en gras ne s'exécute tout simplement pas. Conséquence, le fichier d'archive a encore du code (mais pas tout).
    Quelqu'un aurait-il une idée sur la question ?

    Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Tu as quelle version d'Excel ? A partir de 2007, tu peux l'enregistrer sous .xlsx donc, classeur sans macro.

    Hervé.

  3. #3
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    J'ai oublié de préciser : c'est excel 2003. Merci.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Une piste avec le code suivant qui est à aménager car il est issu d'une réponse à une demande d'il y a longtemps. Je joins l'exemple en pièce jointe.
    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
    Sub ExportXLT2XLS()
    Dim W1 As Workbook
    Dim W2 As Workbook
    Dim i&
    Dim Suggere As Variant
    Dim Reponse As Variant
    On Error GoTo Erreur
    Application.ScreenUpdating = False
    '---- Votre classeur instance de xlt ----
    Set W1 = ThisWorkbook
    '---- Classeur cible à enregistrer ----
    Set W2 = Workbooks.Add(xlWBATWorksheet)
    '---- Nom feuille bidon pour éviter conflit ----
    W2.Sheets(1).Name = "_tEmPo_"
    '---- Copie de toutes les feuilles avec leurs ----
    '---- formats et mise en page d'impression    ----
    For i& = 1 To W1.Sheets.Count
        W1.Sheets(i&).Copy after:=W2.Sheets(W2.Sheets.Count)
    Next i&
    '---- Destruction de la feuille bidon ----
    Application.DisplayAlerts = False
    W2.Sheets(1).Delete
    '---- Sauvegarde du classeur cible ----
    Suggere = "A remplacer par votre variable nom"
    Reponse = Application.GetSaveAsFilename( _
        InitialFilename:=Suggere, _
        fileFilter:="Classeur Microsoft Excel (*.xls), *.xls")
    If Reponse <> False Then W2.SaveAs Filename:=Reponse
    '#### LIGNES A OCCULTER SELON VOTRE GRE ####
    '---- Ferme sans sauvegarder votre instance de xlt ----
    W1.Saved = True
    W1.Close
    '###########################################
    '---- Pseudo traitement d'erreur ----
    '---- Si plantage on remet les choses en place ----
    Erreur:
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    End Sub

  5. #5
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Merci, mais j'aimerais bien éviter de faire des copies de feuilles/zones ou autres.
    Il n'y a vraiment pas de solution pour faire un bête enregistrement comme dans mon code ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/07/2008, 16h46
  2. Enregistrer une copie d'un workbook
    Par PiliSql dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2008, 13h44
  3. Réponses: 8
    Dernier message: 30/10/2007, 10h20
  4. Enregistrer une page sans le code html
    Par sanddddy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/07/2007, 11h23
  5. Réponses: 2
    Dernier message: 03/05/2006, 15h33

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