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 :

création fichier excel méthode saveas


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut création fichier excel méthode saveas
    Bonjour je crée des fichiers excel, je les alimente et je les sauvegarde.

    Question toute simple faut-il obligatoirement préciser le format de fichier dans l'argument fileformat ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlsClasseur.SaveAs FileName:=CurrentProject.Path & "\" & sNomRepertoire & "\Facture" & CmbMois.Value & Replace(rs!clientniveau3, "*", "étoile")
    Que se passe t-il si on ne le précise pas ?

    Ou alors doit-on spécifier l'extension .xlsx dans l'argument filename ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlsClasseur.SaveAs FileName:=CurrentProject.Path & "\" & sNomRepertoire & "\Facture" & CmbMois.Value & Replace(rs!clientniveau3, "*", "étoile") & ".xlsx"
    quel différence entre spécifier le fileformat et spécifier l'extension dans filename sans le fileformat ?
    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 548
    Points
    24 548
    Par défaut
    Bonjour,

    Même si tu utilises ce code dans ACCESS, il s'agit de VBA Excel.

    Cordialement,

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    bonjour loufab, ok c'est du vba excel.

    Mais sais-tu quelle différence il y a entre spécifier un fileformat ou pas ?

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    La response est contenue dans la question (SaveAs) :
    E n r e g i s t r e r - s o u s quoi donc ? (pas seulement le nom, le type aussi)

    Le risque est +/- faible et se limite à enregistrer le fichier au format par défaut en cas de création et dans son format d'origine s'il est ouvert.

    Par exemple, imagine que par un processus, tu ouvres un CSV ou un TXT et que via la méthode Add, tu ajoutes un onglet, si peu que DisplayAlerts ait été défini à False, ton onglet contenant les données d'origine sera perdu au profit du nouvel onglet si il est resté actif et tu perdras n'importe comment des données puisque le format texte n'acceptera pas les caractéristiques d'un classeur à proprement parler...

    Donc, il est mieux quelle que soit la situation, de préciser le format de sortie.

    Argy

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 548
    Points
    24 548
    Par défaut
    Suivant ma faible expérience sur le sujet, que tu pourras acquérir en faisant des tests, comme je l'ai fait. Je dirais qu'en l'absence de fileformat il aura le même comportement que si tu fais un Fichier Enregistrer dans Excel.

    Si tu souhaites changer de format c'est là qu'il faut le préciser. L'intêret de cette option est surtout pour avoir un code générique qui s'affranchit des versions.

    Cordialement,

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Bonjour Argyronet,

    merci pour ta réponse.

    Je ne sais pas trop quel valeur spécifier pour le file format, je pense à "xlExcel4Workbook" mais je ne suis pas sûr.

    Je suis sur access et excel 2007.

    Merci beaucoup.

    Loufab, Argyronet dit qu'on peut avoir quelques soucis si on ne précise pas le fileformat. Donc je sais plus trop quoi penser.

    Sais-tu quelques valeurs faut-il spécifier pour Excel 2007 ?

    merci

    Argyronet, je rencontre parfois un beug en manipulant les fichiers excel, c'est peu etre à cause de ce que tu viens de dire sur le fait de ne pas préciser le fileformat? Peux-tu jeter un oeil stp et me dire si ça peut venir de là ?
    http://www.developpez.net/forums/d11...l/#post6135983

    merci beaucoup.

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Fichier = Replace(rs!ClientNiveau3, "*", "étoile")
    MsgBox Fichier
    ThisWorkbook.SaveAs Filename:=CurrentProject.Path & "\Facture\Facture" & Fichier, FileFormat:=xlOpenXMLWorkbook

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    mercatog quelques questions,

    pourquoi passer par la variable fichier pour remplacer le caractère étoile ?

    pourquoi utiliser plutot que ? qu'est ce que ça change ?

    la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileFormat:=xlOpenXMLWorkbook
    c'est pour access 2007 ?

    merci.

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Non non! Oups

    • J'ai passé par la variable Fichier pour tester s'il n' y as pas un caractère interdit (n'y a t il pas un retours chariot invisible??)
    • A la place de thisworkbook, tu mets ta variable xlsclasseur
    • C'était pour donner FileFormat pour le .xlsx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlsClasseur.SaveAs FileName:=CurrentProject.Path & "\" & sNomRepertoire & "\Facture" & CmbMois.Value & Replace(rs!clientniveau3, "*", "étoile"), FileFormat:=xlOpenXMLWorkbook 'ou 51

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par _developpeur_ Voir le message
    Argyronet, je rencontre parfois un beug en manipulant les fichiers excel, c'est peu etre à cause de ce que tu viens de dire sur le fait de ne pas préciser le fileformat? Peux-tu jeter un oeil stp et me dire si ça peut venir de là ?
    http://www.developpez.net/forums/d11...l/#post6135983
    Bon, pour te prouver mes dires, prend Notepad.exe... et créé 4 fichiers avec des lignes à 2-3 colonnes séparées par un ; puis des , sur quelque lignes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dataA;dataB;1234
    dataC;dataD;5678
    dataE;dataF;9101
    dataG;dataH;1121
    dataI;dataJ;3141
    dataK;dataL;5161
    Puis sauve-le sous
    C:\TestXl\Essai1.txt puis sous C:\TestXl\Essai2.txt

    puis remplace les ; par des , et sauve-le sous :
    C:\TestXl\Essai2.csv puis sous C:\TestXl\Essai2.csv
    Tu as donc 4 fichiers 2 txt et 2 csv, ok ?
    Ouvre ton Explorateur sur ce dossier puis ouvre Access et dans un module vierge écris ce bloc :
    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
    Sub TestXL()
    Const PATH = "D:\Documents and Settings\ambrosinojp\Mes documents\Trash\"
    Const CSV1 = "essai1.csv"
    Const TXT1 = "essai1.txt"
    Const CSV2 = "essai2.csv"
    Const TXT2 = "essai2.txt"
     
    Dim XL                                                 As Excel.Application
    Dim WB                                                 As Excel.Workbook
    Dim SH                                                 As Excel.Worksheet
    Dim strFileToOpen(1 To 2)                              As String
    Dim F As Integer
     
     
        Set XL = New Excel.Application
        XL.DisplayAlerts = False
     
        strFileToOpen(1) = PATH & TXT1
        strFileToOpen(2) = PATH & CSV1
        For F = 1 To 2
            Set WB = XL.Workbooks.Open(strFileToOpen(F))
            With WB
                Set SH = .Sheets.Add
                SH.Name = "Oh la belle feuille vierge"
                .SaveAs strFileToOpen(F)
                MsgBox "Dommage, mon fichier " & vbCrLf & strFileToOpen(F) & vbCrLf & " est vierge maintenant !"
                .Close False
            End With
        Next
     
        MsgBox "Maintenant avec le format :"
        strFileToOpen(1) = PATH & TXT2
        strFileToOpen(2) = PATH & CSV2
        For F = 1 To 2
            Set WB = XL.Workbooks.Open(strFileToOpen(F))
            With WB
                Set SH = .Sheets.Add
                With SH
                    .Name = "Oh la belle feuille vierge"
                    .Cells(1, 1) = "On garde les données des 2 feuilles."
                End With
                .SaveAs PATH & "essai_format_" & F & ".xls", xlNormal
                .Close False
            End With
        Next
        Set WB = Nothing
        Set XL = Nothing
    End Sub
    Constate par toi même...
    Argy

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Merci Argyronet pour ce petit exemple, effectivement sans le format spécifié on perd les données des fichiers...

    Bon je vais le préciser à chaque fois, mais petite question, je dois utiliser le fileformat xlOpenXMLWorkbook ou xlNormal ? Je suis en 2007.

    Autre question, si on précise le fileformat, on est également obligé de préciser l'extension .xls ou .xlsx dans le nom du fichier ?

    merci

  12. #12
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    L'enregistreur de macros est là pour te guider.

    F1 sur SaveAs to donnera la liste complète.

  13. #13
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par _developpeur_ Voir le message
    Autre question, si on précise le fileformat, on est également obligé de préciser l'extension .xls ou .xlsx dans le nom du fichier ?
    Tout dépend à qui est destiné ton projet...
    Tu choisis le format en fonction des versions Excel des utilisateurs.
    Si tous sont équipés de 2007 et ultérieur alors tu prends le format par défaut.
    Si tu as un doute, mieux vaut prendre le mode de compatibilité avec un classique XLS (au format 97/2003). Bien qu'il existe un convertisseur pour les utilisateurs, il n'est pas forcément installé sur les postes.

    Pour le mode OpenXML, c'est autre chose. Regarde si cela te concerne.

    Argy

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    merci Argyronet, effectivement c'est 2007 et ultérieur. Donc ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlsClasseur.SaveAs FileName:=CurrentProject.Path & "\" & sNomRepertoire & "\Facture" & CmbMois.Value & Replace(rs!clientniveau3, "*", "étoile") & ".xlsx", FileFormat:=xlWorkbookDefault

Discussions similaires

  1. Création fichier Excel depuis DataSet avec OleDb
    Par djidane39 dans le forum C#
    Réponses: 5
    Dernier message: 23/10/2009, 22h44
  2. création fichier Excel à partir d'une application WPF
    Par modafine dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 01/08/2008, 08h53
  3. [WD10] Création fichier Excel et Word
    Par fabpeden dans le forum WinDev
    Réponses: 6
    Dernier message: 02/05/2008, 16h26
  4. Création fichier excel retourné dans le navigateur
    Par progamer54 dans le forum JSF
    Réponses: 4
    Dernier message: 27/03/2007, 11h50
  5. [VBA-E]Création fichier EXCEL et détection cellule vide
    Par benoue dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 24/02/2006, 17h22

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