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 :

[VBA Excel] export/sauvegarde d'une feuille excel .csv


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut [VBA Excel] export/sauvegarde d'une feuille excel .csv
    Bonjour à tout le monde,

    J'ai une petite question, enfin deux

    1 - J'ai un bouton sur une feuille (1) et j'aimerais qu'il propose d'exporter la feuille (5) au format .csv avec la fenêtre enregistrer sous Windows standard; Comment procéder ?

    2 - Quand on exporte une partie d'un fichier Excel en .csv par exemple
    Si je veux faire un bouton pour sauvegarder le fichier Excel, celui-ci s'enregistre en monfichier.csv (monfichier est différent du nom d'origine du fichier Excel, ici c'est ES-v01.0.xls); comment faire un save qui permet de toujours écraser sous le nom de fichier Ecel ouvert à l'origine?

    Cordialement,

    Paloma
    Cordialement,
    Paloma



    Pensez au

  2. #2
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut Un bout de code
    Bonjour,

    N’ayant pas beaucoup de réponse voir pas du tout ces temps-ci
    Je propose de vous donner un code que j'ai élaboré hier soir.

    et une vidéo pour comprendre un peu le comportement :

    http://patrick.dubernet.free.fr/Swf/...erator.avi.SWF
    Bon j'ai pas eu le temps de faire un code flash pour faire du pseudo streaming donc il faut être patient ou être chez free

    Bon il ne répond pas encore aux question que je me pose mais bon c'est un début.

    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
    ' Export the document in cvs file format
    ' Macro recorded 28/10/2006 by Patrick DUBERNET
    '
    Public Sub ExportCsv()
     
                Dim LigneIn As String
                Dim LigneExcel As Integer
     
                ' récupération du nombre de fichier à traiter et le nombre de filtres -------
                Call countInFiles
     
                LigneExcel = 2
     
                'Inscrire le contenu d'une feuille Excel dans une autre ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
     
                LigneIn = Sheets("Result").Cells(LigneExcel, 3)
     
                If LigneIn = "" Then
                        MsgBox " Not Data transfered, the entry list is empty ! ", vbCritical, "Caution"
                        Exit Sub
                    Else
                End If
     
                For LigneExcel = 2 To frmGenerator.nbrEntries
     
                Sheets("Export.csv").Cells(LigneExcel - 1, 1) = Sheets("Result").Cells(LigneExcel, 1)
                Sheets("Export.csv").Cells(LigneExcel - 1, 2) = CStr(";")
                Sheets("Export.csv").Cells(LigneExcel - 1, 3) = Sheets("Result").Cells(LigneExcel, 3)
     
                Next LigneExcel
     
    'export le fichier
    Sheets("Export.csv").Activate
     
    ActiveWorkbook.SaveAs Filename:=Sheets("Memory").Cells(2, 4) & "\referenceFile.csv", FileFormat:=xlCSV, CreateBackup:=False
     
    Sheets("Reference File GENERATOR").Activate
     
    MsgBox "save document under CSV format(referenceFile.csv)", vbExclamation, "Export information message"
    End Sub
    Alors si quelqu'un peut m'aider et répondre à mes questions, ce serait sympa.


    Bien à vous,
    Paloma
    Cordialement,
    Paloma



    Pensez au

  3. #3
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut
    Sinon j'ai modifié mon code mais là il ne fonctionne pas et il est sans message d'erreur ....

    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
    ' Export the document in cvs file format
    ' Macro recorded 28/10/2006 by Patrick DUBERNET
    '
    Public Sub ExportCsv()
     
                Dim LigneIn As String
                Dim LigneExcel As Integer
     
                ' récupération du nombre de fichier à traiter et le nombre de filtres -------
                Call countInFiles
     
                LigneExcel = 2
     
                'Inscrire le contenu d'une feuille Excel dans une autre ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
     
                LigneIn = Sheets("Result").Cells(LigneExcel, 3)
     
                If LigneIn = "" Then
                        MsgBox " Not Data transfered, the entry list is empty ! ", vbCritical, "Caution"
                        Exit Sub
                    Else
                End If
     
                For LigneExcel = 2 To frmGenerator.nbrEntries
     
                Sheets("Export.csv").Cells(LigneExcel - 1, 1) = Sheets("Result").Cells(LigneExcel, 1)
                Sheets("Export.csv").Cells(LigneExcel - 1, 2) = CStr(";")
                Sheets("Export.csv").Cells(LigneExcel - 1, 3) = Sheets("Result").Cells(LigneExcel, 3)
     
                Next LigneExcel
     
    'export le fichier
    'Sheets("Export.csv").Activate
    '
    'ActiveWorkbook.SaveAs Filename:=Sheets("Memory").Cells(2, 4) & "\referenceFile.csv", FileFormat:=xlCSV, CreateBackup:=False
    '
    'Sheets("Reference File GENERATOR").Activate
     
                Dim CSVFile As New OLEObject
                On Error Resume Next
                With CSVFile
                .ExportRange = Sheets("Export.csv").Cells
                .Export CSVFileName:=ThisWorkbook.Path & "\referenceFile.csv"
                If Err <> 0 Then MsgBox "Cannot export" & ThisWorkbook.Path & "\referenceFile.csv"
                End With
     
    MsgBox "save document under CSV format(referenceFile.csv)", vbExclamation, "Export information message"
    End Sub
    Je ne sais pas pourquoi?
    Cordialement,
    Paloma



    Pensez au

  4. #4
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut
    Bon ok je laisse tombé mais juste une question juste une

    Voilà j'ai modifié mon code :

    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
    ' Export the document in cvs file format
    ' Macro recorded 28/10/2006 by Patrick DUBERNET
    '
    Public Sub ExportCsv()
     
                Dim LigneIn As String
                Dim LigneExcel As Integer
     
                ' récupération du nombre de fichier à traiter et le nombre de filtres -------
                Call countInFiles 
     
                LigneExcel = 2
     
                'Inscrire le contenu d'une feuille Excel dans une autre ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
     
                LigneIn = Sheets("Result").Cells(LigneExcel, 3)
     
                If LigneIn = "" Then
                        MsgBox " Not Data transfered, the entry list is empty ! ", vbCritical, "Caution"
                        Exit Sub
                    Else
                End If
     
                For LigneExcel = 2 To frmGenerator.nbrEntries
     
                Sheets("referenceFile").Cells(LigneExcel - 1, 1) = Sheets("Result").Cells(LigneExcel, 1)
                Sheets("referenceFile").Cells(LigneExcel - 1, 2) = Sheets("Result").Cells(LigneExcel, 3)
     
                Next LigneExcel
     
    'export le fichier 
     
    Sheets("referenceFile").SaveAs Filename:=Sheets("Memory").Cells(2, 4) & "\referenceFile.csv", FileFormat:=xlCSV, CreateBackup:=False 
     
    MsgBox "save document under CSV format(referenceFile.csv)", vbExclamation, "Export information message"
    End Sub
    Mais comment faire pour que le fichier ouvert reste le nom de fichier Excel ouvert et non pas le nom de fichier sauvegardé ici ES-01.xls devient referenceFile.csv ce qui est normal puisque que je fais un "save as" de la dernière feuille mais comment y remédier?

    Cordialement,
    Paloma
    Cordialement,
    Paloma



    Pensez au

  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
    Regarde La réponse que j'ai donnée peut peut-être t'intéresser. Mais lis les commentaires, ils te renseigneront sur les raisons de la solution retenue
    A+

  6. #6
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut
    Bonjour ouskel'n'or et d'abord merci.

    Effectivement, j'ai suivi ce post en parrallèle du mien et ta solution est interressante.

    Mais je t'avoue qu'il ne me reste qu'un tout petit truc à faire maintentant.

    C'est facile, j'ai tout simplement conservé le nom de mon fichier dans une cellule de ma feuille Memory donc je vais juste créer un bouton pour sauvegarder sous le bon nom mon fichier Excel

    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
    ' Export the document in csv file format
    ' Macro recorded 28/10/2006 by Patrick DUBERNET
    '
    Public Sub ExportCsv()
     
                Dim LigneIn As String
                Dim LigneExcel As Integer
     
                ' récupération du nombre de fichier à traiter et le nombre de filtres -------
                Call countInFiles
     
                LigneExcel = 2
     
                'Inscrire le contenu d'une feuille Excel dans une autre ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
     
                LigneIn = Sheets("Result").Cells(LigneExcel, 3)
     
                If LigneIn = "" Then
                        MsgBox " Not Data transfered, the entry list is empty ! ", vbCritical, "Caution"
                        Exit Sub
                    Else
                End If
     
                For LigneExcel = 2 To frmGenerator.nbrEntries
     
                Sheets("referenceFile").Cells(LigneExcel - 1, 1) = Sheets("Result").Cells(LigneExcel, 1)
                Sheets("referenceFile").Cells(LigneExcel - 1, 2) = Sheets("Result").Cells(LigneExcel, 3)
     
                Next LigneExcel
     
    Sheets("Memory").Cells(2, 5) = ActiveWorkbook.FullName
    'exporte le fichier ------------------------------------------------------------------------
     
    Sheets("referenceFile").SaveAs Filename:=Sheets("Memory").Cells(2, 4) & "\referenceFile.csv", FileFormat:=xlCSV, CreateBackup:=False
     
    'sauvegarde le fichier excel tel quel -----------------------------------------------------
     
    ActiveWorkbook.SaveAs Filename:=Sheets("Memory").Cells(2, 5), FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
    MsgBox "save document under CSV format(referenceFile.csv)", vbExclamation, "Export information message"
    End Sub
    Merci et à bientôt !
    Paloma
    Cordialement,
    Paloma



    Pensez au

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

Discussions similaires

  1. Tester la présence d'une feuille Excel
    Par repié dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/03/2019, 13h50
  2. Excel/Vba insérer les données d'une feuille excel dans le corps d'un email
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2011, 12h02
  3. [XL-2007] sauvegarde d'une feuille excel sous format pdf
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/02/2011, 19h20
  4. [VBA-E]copier et renommer une feuille excel
    Par la-breche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 13h49
  5. [VBA-E] controle pour afficher une feuille excel
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/02/2006, 11h17

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