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 feuille sans changer le nom du classeur ouvert


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Points : 35
    Points
    35
    Par défaut Enregistrer une feuille sans changer le nom du classeur ouvert
    Bonjour à toutes et tous,

    je sais c'est pas clair, ce qui ne facilite pas la recherche dans la FAQ !

    Voici mon bout de code concernant l'enregistrement d'une feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Enregistre le fichier excel
        Application.DisplayAlerts = False 'désactive les alertes Excel
     
        ActiveSheet.SaveAs Filename:=Fichier & ".xls" 'enregistre le fichier
     
        Application.DisplayAlerts = True  'active les alertes Excel
     
        MsgBox "Le fichier a été créé ici : " & Chr(13) & Fichier _
        & Chr(13) & "Vous avez ainsi la possibilité de le modifier/compléter."
    Le classeur actuellement ouvert se nomme "Test_6.xlm".
    Le fichier qui sera créé par la macro se nommera "xyz.xls" (xls pour des raisons de compatibilité).
    Une fois le fichier "xyz.xls" créé, il est automatiquement ouvert et remplace "Test_6.xlm", ce que je ne désire à aucun prix, puisque l'utilisateur voudra éventuellement continuer à utiliser l'application VBA liée au classeur "Test_6.xlm".

    J'espère avoir été compréhensible.

    Comment résoudre ce problème ?

    Merci d'avance de toute aide.

    Cordialement

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Je pense que ce que tu cherches c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.SaveAs Filename:=ThisWorkbook.Path & "\xyz.xls"
    Attention, il me semble que suivant la version d'Excel il n'y a pas forcément besoin du "\" avant xyz.xls.
    Regarde à quoi est égal ThisWorkbook.Path & "\xyz.xls" avec un MsgBox pour voir si c'est ok, sinon dis nous ce que ça renvoie.

    A+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Bonjour pticool,

    quelle réactivité! Merci pour la piste, mais ce n'est pas ça.

    ActiveSheet.SaveAs Filename:=ThisWorkbook.Path & "\xyz.xls"
    nous renvoie
    C:\Users\Pascal-PC\xyz.xls

    et le classeur actif devient "xyz.xls" !

    Cela ne résout donc pas le problème.

    Je détaille un peu mieux la marche du programme.

    L'enregistrement est déclenché par un bouton. Le nom du fichier (obligatoire) est entré dans une InputBox.
    Ensuite, le programme demande où le fichier doit être enregistré.

    Voici le code complet de la procédure.

    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
    'Demander où sauvegarder
        Dim Fichier As String
    
        Dim objShell, objFolder, Chemin As String
    
        Set objShell = CreateObject("Shell.Application")
    
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisisser un répertoire", &H1&)
    
        On Error Resume Next
       Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
         
        On Error GoTo 0
        
       Fichier = Chemin & "\" & Act
    
    'Préparer le document pdf en format paysage
       ActiveSheet.PageSetup.Orientation = xlLandscape
    
    'Enregistre le fichier excel
        Application.DisplayAlerts = False 'désactive les alertes Excel
        
        ActiveSheet.SaveAs Filename:=Fichier & ".xls" 'enregistre le fichier
        
        Application.DisplayAlerts = True  'active les alertes Excel
        
        MsgBox "Le fichier a été créé ici : " & Chr(13) & Fichier _
        & Chr(13) & "Vous avez ainsi la possibilité de le modifier/compléter."
    
        
    'Enregistre la lettre en .PDF
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier _
        & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    
        MsgBox "Le PDF a été créé ici : " & Chr(13) & Fichier
               
    'Effacer contenu feuille "Liste"
    Mais je ne pense pas que cela change quelque chose. Sitôt l'enregistrement du "xyz.xls" effectué, ce classeur est ouvert à la place du "...xlsm" ouvert. Ce qui perturbera un utilisateur non averti, c-à-d la majorité du public visé.

    Désolé.

    Amicalement

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    Oh ok, je crois que j'avais rien compris :p

    Si je comprends mieux, tu as le fichier Test_6.xlm qui lance une macro qui va créer une nouvelle feuille que tu veux enregistrer dans un nouveau fichier à l'endroit indiqué par l'utilisateur.
    Je viens de faire le test et en effet le second fichier remplace le premier. Je n'ai pas de solution directe pour ça. Perso j'aurai directement créé un nouveau Workbook et non un Worksheet dans lequel j'aurai fait mes modif et que j'aurai enregistrer à la fin pour éviter le problème mais ça implique de modifier pas mal de chose dans ton code je suppose (mais pas sur).

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je crois que ce que tu cherches, c'est la méthode SaveCopyAs de l'objet Workbook.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    Ah oui en effet, ta solution marche et est bien plus rapide à mettre en place Menhir

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Salut,

    chapeau bas, c'est exactement ça. Mais comment vous faites ?

    Merci, grâce à vous, j'ai moins peur de poser des questions idiotes émanant d'un ....
    Va vraiment falloir que je surmonte mon handicap, mais ma devise étant "Aide-toi, Dieu t'aidera....".

    Cordialement

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par nounours1952 Voir le message
    Mais comment vous faites ?
    En lisant l'aide VBA.
    Par exemple, la liste des membres de l'objet Workbook.
    C'est très instructif.

    Citation Envoyé par nounours1952 Voir le message
    ma devise étant "Aide-toi, Dieu t'aidera....".
    Moi, ma devise c'est "Aide-toi et l'aide VBA t'aidera"

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

Discussions similaires

  1. [XL-2010] Copier une feuille sans son nom ?
    Par byloute dans le forum Excel
    Réponses: 6
    Dernier message: 14/02/2012, 13h26
  2. enregistrer une figure sans changer sa taille
    Par youmarva dans le forum Images
    Réponses: 10
    Dernier message: 02/04/2010, 16h52
  3. [VBA-E] imprimer une feuille sans connaitre le nom
    Par srame dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/04/2007, 09h02
  4. [VBA-E]Récuperer le nom d'une feuille sans le N°
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 11h33
  5. [EXCEL] copier une feuille sans changer les liaisons
    Par DidRocks dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/09/2005, 13h29

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