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 :

Saveas et remettre l'ancien fichier à l'écran [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 438
    Par défaut Saveas et remettre l'ancien fichier à l'écran
    Bonjour,
    Dans une macro, je veux sauver un fichier avec des macros en un fichier sans macro avec un nouveau nom.
    Puis remettre l'ancien fichier sur l'écran et fermer le nouveau fichier sauvé.
    La commande saveas remplace le nouveau fichier mais une fois sauvé, je ne veux pas de ce fichier à l'écran.

    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
     
    Sub MiseAZéro()
    '
        Rep = MsgBox("Attention vous aller supprimer toutes les données de la feuille bilan.", vbYesNo + vbCritical, "ATTENTION")
        If Rep = vbNo Then GoTo fin
        ' On sauvegarde le fichier macros
        ActiveWorkbook.Save
        chemin = ActiveWorkbook.Path
        nom_fichier = ActiveWorkbook.Name
        an = Date
        an = Right(Str(an), 2)
        noms = "Sauvegarde année 20" & an
     
        With Sauve_annuelle
            .Répertoire = chemin
            .nom = noms
            .OKButton.SetFocus
            .Show
        End With
     
    Rem ANNULE
    If Sauve_annuelle.Tag = "ANNULER" Then
        StatusBar = "Abondon"
        GoTo fin
    End If
        noms = Sauve_annuelle.nom
        nomsauve = chemin + "\" + noms
        '+ ".xlsx"
        Application.DisplayAlerts = False
        ActiveWorkbook.CheckCompatibility = False
     
    'On sauvegarde au format sans macros
        ActiveWorkbook.SaveAs Filename:=nomsauve, FileFormat:=51, CreateBackup:=False
        Application.DisplayAlerts = True
     
    'On est obligé d'ouvrir le fichier renommé    
        Application.Workbooks.Open nom_fichier
        nomsauve = chemin + "\" + noms + ".xlsx"
     
    'Et là, je ne sais plus fermer mon fichier xlsx
     
     
    ' Workbooks(nomsauve).Worksheets("Données").Activate
    '    Windows(nomsauve).Activate
    '    Workbooks(nomsauve).Close
     
    'Cette partie supprime une partie de mon fichier original
        Sheets("Bilan").Select
        Range("A2:J5000").Select
        Selection.ClearContents
        Selection.Clear
        Sheets("Données").Select
        ActiveWorkbook.Save
    fin:
     
    End Sub
    Merci d'avance de votre aide.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    afin de ne pas modifier le fichier contenant le code, commencer par la méthode SaveCopyAs

    ___________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre éclairé Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 438
    Par défaut
    Merci Marc, c'est bien cela, mais je ne peux pas ré-ouvrir le fichier renommé, je lui ai changé l'extension de fichier macro en xlsx.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Normal car comme c'est une copie, il faut évidemment ne pas changer l'extension !

    Une fois la copie créée, l'ouvrir puis SaveAs au format désiré puis fermer et supprimer la copie via Kill,   salut Bill !

    _________________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  5. #5
    Membre éclairé Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 438
    Par défaut
    Merci beaucoup Marc, c'est parfait.
    Je passe en résolu

    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
     
        Rep = MsgBox("Attention vous aller supprimer toutes les données de la feuille bilan.", vbYesNo + vbCritical, "ATTENTION")
        If Rep = vbNo Then GoTo fin
        ActiveWorkbook.Save
        chemin = ActiveWorkbook.Path
        nom_fichier = ActiveWorkbook.Name
        an = Date
        an = Right(Str(an), 2)
        noms = "Sauvegarde année 20" & an
     
        With Sauve_annuelle
            .Répertoire = chemin
            .nom = noms
            .OKButton.SetFocus
            .Show
        End With
     
    Rem ANNULE
    If Sauve_annuelle.Tag = "ANNULER" Then
        StatusBar = "Abondon"
        GoTo fin
    End If
        noms = Sauve_annuelle.nom
        nomsauve = chemin + "\" + noms + ".xlsm"
     
    'On sauvegarde au format avec macros
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveCopyAs Filename:=nomsauve
     
     
    'Une fois la copie créée, l'ouvrir puis SaveAs au format désiré puis fermer et supprimer la copie via Kill
        Application.Workbooks.Open nomsauve
        nomsauve = chemin + "\" + noms + ".xlsm"
        ActiveWorkbook.SaveAs Filename:=noms, FileFormat:=51, CreateBackup:=False
     
    'Supprimer l'onglet feuille données et supprimer les boutons
        Worksheets("Données").Delete
        ActiveSheet.Buttons.Delete
     
    'Sauvegarde et fermeture
        Workbooks(noms + ".xlsx").Close savechanges:=True
        Kill nomsauve
        Application.DisplayAlerts = True
     
    'On modifie la feuille de travail.
        Sheets("Bilan").Select
        Range("A2:J5000").Select
        Selection.ClearContents
        Selection.Clear
        Sheets("Données").Select
        ActiveWorkbook.Save
    fin:
    End Sub

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Remarques :

    • Comme ton étiquette Fin en ligne n°52 se trouve juste avant End Sub,
       remplacer les Goto Fin des lignes n°3 & 21 par Exit Sub, la ligne 52 devenant inutile …

    • La ligne n°33 ne sert à rien car en doublon de la ligne n°24 !

    • La ligne n°34 sauvegarde le classeur au nouveau format mais ensuite ses données sont modifiées
       avant une nouvelle sauvegarde lors de sa fermeture en ligne n°41 :  autant ne sauvegarder qu'une fois
       en déplaçant cette ligne 34 juste avant la ligne 41 …

    • La ligne n°48 est inutile vu la ligne n°49 !

    • Les lignes n°46 à 49 peuvent - doivent ! - être réduite en une seule ligne de code car
       un bon code n'a pas besoin de ces affreux ralentisseurs Select & Activate pour accéder aux cellules
       en respectant juste le modèle objet d'Excel à savoir Classeur.Feuille.Plage.Méthode …

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

Discussions similaires

  1. supprimer les 6 plus ancien fichier
    Par popofpopof dans le forum VBScript
    Réponses: 15
    Dernier message: 16/11/2007, 11h05
  2. Suppression automatique d'anciens fichiers
    Par verdurand dans le forum Windows XP
    Réponses: 8
    Dernier message: 13/03/2007, 23h47
  3. [ofstream] ouvrir et supprimer ancien fichier
    Par ZaaN dans le forum SL & STL
    Réponses: 1
    Dernier message: 21/12/2006, 17h09
  4. Réponses: 6
    Dernier message: 11/05/2006, 14h20

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