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 :

Sauvegarder un fichier excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Sauvegarder un fichier excel
    Bonjour,

    je suis tout neuf, tout beau en vba (3 jours de formations) et je cherche à sauvegarder via un save as, mon fichier excell en récupérant automatiquement le nom de ma feuille active ou le nom de mon classeur (qui a une extension txt, car il s'agit d'un classeur crée suite à importation d'un fichier txt).

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bonjour DevVBA, bienvenue sur le forum.
    Si le .txt est le classeur actif, teste ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.saveas Chemin & NomFich

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci

    si je comprends bien NomFich est une variable contenant le nom du fichier.

    Ma question reste donc entière comment je l'alimente automatiquement avec le nom actuel de mon classeur ou de ma feuille actif ???

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut
    Le chat qui se mord la queue
    NomFich est le nom sous lequel tu veux sauvegarder ton fichier,
    ActiveWorkbook.name est le nom du classeur actif, mais si tu veux le sauvegarder en save As, c'est que tu veux un autre nom !
    Si tu donnais un exemple, on se comprendrait mieux, et on pourrait te donner l'instruction que tu demandes

    A+

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Activeworkbook est le classeur actif, celui qui est affiché à l'écran
    Thisworkbook est le classeur contenant la macro de copie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Chemin = "D:\xls\"
    NomFich = "NouveauNom.xls"
    ThisWorkbook.saveas Chemin & NomFich
    enregistre le fichier contenant la macro sous le nom NouveauNom.xls dans le dossier chemin.
    SaveAs enregistre un nouveau fichier.
    le fichier NouveauNom remplace à l'écran le fichier qui a servi à le créer.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci j'ai ma réponse

    en fait j'ai un fichier nommé toto.txt que je veux sauvegarder en toto sous format excell

    donc prendre le nom du fichier, lui enlever les 4 derniers caractères et donc faire un save as ou modifier le nom du classeur et faire un save

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, tu dois seulement ajouter l'extension .xls et indiquer le chemin

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    désolé de revenir vers vous, mais je repose mon problème avec mon soucis

    donc j'integre en automatique un fichier txt nommé toto.txt

    du coup excell ouvre automatiquement une feuille nommée toto.txt

    lorsque je récupère son nom (merci ouskel et gorfael) j'ai toto.txt

    si je sauvegarde même en spécifiant sauvegarde au format xls, il me crée un fichier txt.

    l'idéal serait pour moi de pouvoir renommer ma feuille de façon automatique en toto (en gros virer automatiquement .txt de mon nom de feuille).

    Y a t 'il une solution ??

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    J'ai dis une betise ?? ou la réponse est elle trop simple ?? ou impossible

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ajoute FileFormat:=xlNormal à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.saveas Chemin & NomFich, FileFormat:=xlNormal

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci ouskel mais c'est déja le cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'nomfichieR = ActiveWorkbook.Name
       ' nomfichieR = "modulo" & nomfichieR
       ' ActiveWorkbook.SaveAs Filename:= _
            "P:\xxxx\xxxxxx\xxxxx\" & moistraitemenT & "\" & nomfichieR, FileFormat:=xlNormal _
            , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
            CreateBackup:=False
    dans lequel j'ai nomfichieR = toto.txt

    du coup il me crée un fichier nommé modulototo.txt considéré comme du texte et non comme un fichier xls malgré le fileformat.

    J'ai donc besoin d'enlever dans nomfichieR le ".txt" à la fin

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bon. Tu as une solution de repli qui consiste à créer un nouveau classeur, à coller la feuille de ton txt dedans et à enregistrer le nouveau fichier sous son nouveau nom.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        nomfichieR = ActiveWorkbook.Name 'Le nom de ton txt
        NomFeuille = Activesheet.name 'nom de la feuille dans ton txt
        Workbooks.Add 'on ouvre un nouveau fichier
        DoEvents
        Workbooks(nomfichieR).Worksheets(NomFeuille).Copy _
                 Before:=ActiveWorkbook.Sheets(1) 'Collage en première position
        nomfichieR = "modulo" & nomfichieR & ".xls"
        DoEvents
        ActiveWorkbook.SaveAs Filename:= _
           "P:\xxxx\xxxxxx\xxxxx\" & moistraitemenT & "\" & nomfichieR
    Ceci dit, je ne comprends pas pourquoi le code précédent pose un problème. Peut-être est-ce en raison de l'extension (en rouge) (?) je ne vois pas où tu l'ajoutes

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci je testerais ce soir.

    pour information par rapport à ta derniere question, lors du lancement de la macro une box est affiché demandant quel fichier il faut ouvrir. Hors pour ouvrir mon fichier text de départ je suis obligé de saisir le nom complet + extension txt, sinon excell ne le trouve pas.

    du coup, mon classeur reprends automatiquement ce nom.

    Mon problème peut peut etre se contourner également en modifiant le code d'ouverture ??

    ouverture automatique du fichier choisi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Workbooks.OpenText Filename:= _
            "P:\xxxxx\xxxxx\xxxx\" & moistraitemenT & "\" & fichieR, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _
            Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array( _
            3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10 _
            , 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), _
            Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1))
    Mais j'avoue ne pas savoir quel paramètre modifier ici.

    Edit en écrivant j'ai trouvé.

    Merci

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si le séparateur de données est la tabulation, tu peux grandement simplifier ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ChDir "C:\Documents and Settings\bdc.HARDIS\Bureau"
    Workbooks.OpenText Filename:= _
         "P:\xxxxx\xxxxx\xxxx\" & moistraitemenT & "\" & fichieR, _
         Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Tab:=True
    Ensuite... je ne comprends pas mais le dernier code que je t'ai passé règle le problème.
    Quand tu as enregistré le nouveau fichier, tu fermes le txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichieR).close False
    A+

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

Discussions similaires

  1. Sauvegarder un fichier Excel
    Par toutou2000 dans le forum Débuter
    Réponses: 4
    Dernier message: 21/11/2008, 14h08
  2. Réponses: 1
    Dernier message: 03/04/2007, 18h31
  3. sauvegarder un fichier excel
    Par Pitou5464 dans le forum Access
    Réponses: 3
    Dernier message: 28/08/2006, 16h03
  4. Sauvegarder un fichier Excel
    Par jarod_bx dans le forum Access
    Réponses: 4
    Dernier message: 29/05/2006, 13h40
  5. pb de sauvegarde de fichier excel
    Par sharpeye dans le forum Access
    Réponses: 7
    Dernier message: 25/11/2005, 16h20

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