Enregistrement fichier de sortie

Bonjour,

Lorsque j'exécute ma macro, celle-ci ouvre les résultats sur un nouvel onglet de la même feuille excel.

Je souhaiterai que les résultats de la macro s'enregistrent dans un nouveau classeur et qu'il soit enregistré sur mon bureau.

et qu'un message apparaissent avec "fichier disponible" lorsque que le fichier est bien enregistré.

Merci

Bonjour,

Il va falloir drôlement frotter la boule de cristal .... pour deviner la solution qui te conviendrait ...

Tu verras ... qu'aprés avoir posté ton fichier ... tu recevras uen avalanche de propositions ...

Bonjour,

encapsule ta macro avec quelque chose comme ceci :

Sub test()

    ' définitions pour fichier cible
    Dim xl As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet

    ' choix répertoire de stockage
    Dim MonRepertoire
    Dim Repertoire As FileDialog

        Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
        Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire de stockage des fichiers générés"
        Repertoire.Show
        If Repertoire.SelectedItems.Count > 0 Then
            MonRepertoire = Repertoire.SelectedItems(1)
        Else
            Exit Sub
        End If

        ' creation fichier
        Set xl = CreateObject("Excel.Application")
        Set wb = xl.Workbooks.Add  ' On ajoute un classeur
        xl.Visible = True
        Set ws = wb.Worksheets(1)  ' On crée l'objet onglet dans le nouveau classeur créé

'ici le traitement

        ' sauvegared du fichier
        wb.SaveAs (MonRepertoire & "\" & "le_nom_du_fichier")
        xl.Quit

    MsgBox "Ecriture terminée !"

End Sub

Hello James ! zut, j'ai déjà déclenché l'avalanche !!

Je joins mon fichier test

5primes.xlsm (48.90 Ko)

Bonjour,

Voici une piste :

Sub Enregistrer()

    Dim Classeur As Workbook
    Dim Dossier As String
    Dim Fichier As String

    Dossier = Environ("UserProfile") & "\desktop" 'dossier "Bureau"
    Fichier = "Mon Classeur.xlsx" 'nom du classeur, adapter le nom...

    Set Classeur = Workbooks.Add
    '...ici, le code qui ajoute les valeurs dans le nouveau classeur
    '...utilises la variable Classeur pour être sûr d'inscrire dans le bon classeur
    '...

    'enregistrement du classeur sur le bureau
    Classeur.SaveAs Dossier & "\" & Fichier

    If Dir(Dossier & "\" & Fichier) <> "" Then MsgBox "Fichier disponible !"

End Sub

Utilises la variable "Classeur" pour être sûr que le code qui va inscrire les valeurs le fasse dans le bon et non dans le classeur actif !

Si jamais vous y arrivez avec mon fichier je suis preneuse

Graziella a écrit :

Je joins mon fichier test

@james007

@theze

@steelson

Graziella a écrit :

Si jamais vous y arrivez avec mon fichier je suis preneuse

Bonjour,

le programme te demandera où enregistrer ton fichier

change aussi le nom dans la macro

Sub aargh()

    ' définitions pour fichier cible
    Dim xl As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet

    Dim ici
    Set ici = ThisWorkbook

    ' choix répertoire de stockage
    Dim MonRepertoire
    Dim Repertoire As FileDialog

        Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
        Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire de stockage des fichiers générés"
        Repertoire.Show
        If Repertoire.SelectedItems.Count > 0 Then
            MonRepertoire = Repertoire.SelectedItems(1)
        Else
            Exit Sub
        End If

        ' creation fichier
        Set xl = CreateObject("Excel.Application")
        Set wb = xl.Workbooks.Add  ' On ajoute un classeur
        xl.Visible = True
        Set ws = wb.Worksheets(1)  ' On crée l'objet onglet dans le nouveau classeur créé
        ici.Activate

'============
    ws.Name = "sortie"
    'ligne entte
    ws.Cells(1, 1) = "matricule"
    ws.Cells(1, 2) = "code importation"
    ws.Cells(1, 3) = "code prime"
    ws.Cells(1, 4) = "prime"
    With Sheets("SAINT PIERRE")    ' feuille source contenant les primes
       i = 5    ' pointeur de ligne sur primes
       k = 1    ' pointeur de ligne sur ws
       While .Cells(i, 1) <> ""    ' tant qu'il y a des matricules
           For j = 5 To 6    ' colonne E et F
               If .Cells(i, j) <> 0 Then
                    k = k + 1    'incrŽmente pointeur de ligne de ws
                   'on copie les donnŽes dans diffŽrentes colonnes
                   ws.Cells(k, 1) = .Cells(i, 1)    ' matricule
                   ws.Cells(k, 2) = 255    ' code importation
                   ws.Cells(k, 3) = .Cells(4, j)    ' code prime
                   ws.Cells(k, 4) = .Cells(i, j)    'prime
               End If
            Next j
            i = i + 1    ' incrŽmente pointeur de ligne sur primes
       Wend
    End With
'=============

        ' sauvegared du fichier
        wb.SaveAs (MonRepertoire & "\" & "le_nom_du_fichier")
        xl.Quit

    MsgBox "Ecriture terminée !"

End Sub
8primes-v1.xlsm (23.94 Ko)

Bonjour,

Avec enregistrement sur le bureau de façon automatique (je n'ai pas modifier le principe de fonctionnement de ton code) :

Sub Enregistrer()

    Dim Cl_Sortie As Workbook
    Dim Cl_Source As Workbook
    Dim Fe_Sortie As Worksheet
    Dim Fe_Source As Worksheet
    Dim Dossier As String
    Dim Fichier As String
    Dim I As Integer
    Dim K As Integer

    Dossier = Environ("UserProfile") & "\desktop" 'dossier "Bureau"
    Fichier = "Classeur sortie.xlsx" 'nom du classeur, adapter le nom...

    Set Cl_Source = ThisWorkbook
    Set Fe_Source = Cl_Source.Worksheets("SAINT PIERRE")

    Set Cl_Sortie = Workbooks.Add
    Set Fe_Sortie = Cl_Sortie.Worksheets(1)

    With Fe_Sortie

        .Name = "sortie"
        .Cells(1, 1) = "Matricule"
        .Cells(1, 2) = "Code importation"
        .Cells(1, 3) = "Code prime"
        .Cells(1, 4) = "Valeur"

    End With

    With Fe_Source   ' feuille source contenant les primes

        I = 5    ' pointeur de ligne sur primes
        K = 1    ' pointeur de ligne sur ws

        While .Cells(I, 1) <> ""    ' tant qu'il y a des matricules
            For j = 6 To 8    ' colonne F, G et H
                If .Cells(I, j) <> 0 Then
                    K = K + 1    'incrémente pointeur de ligne de ws
                    'on copie les données dans différentes colonnes
                    Fe_Sortie.Cells(K, 1) = .Cells(I, 1)    ' matricule
                    Fe_Sortie.Cells(K, 2) = 255    ' code importation
                    Fe_Sortie.Cells(K, 3) = .Cells(4, j)    ' code prime
                    Fe_Sortie.Cells(K, 4) = .Cells(I, j)    'valeur
               End If
            Next j
            I = I + 1    ' incrémente pointeur de ligne sur primes
       Wend

    End With

    'enregistrement du classeur sur le bureau
    Cl_Sortie.SaveAs Dossier & "\" & Fichier

    Cl_Sortie.Close False '<--- fermeture du classeur (supprimer si il doit rester ouvert)

    If Dir(Dossier & "\" & Fichier) <> "" Then MsgBox "Fichier disponible !"

End Sub

Bonjour,

J'ai farfouillé un peu le forum pour voir si je trouverais pas ce que je cherche. Ce sujet s'en approche le plus.

Dans l'idée, j'ai un fichier excel ("C\users\elec\desktop\Dimensionnement.xlsm"), lorsque son utilisation est terminé, je retrouve sur une feuille ("validation") les informations que je veux extraire (validation!B2:C40).

Ces résultats doivent par le biais d'un bouton ( forme dans une feuille à laquelle j'affecterai la macro) ouvrir un nouveau fichier:

Ce fichier de sortie doit être nommé par: "validation!B2"

Doit être enregistré sous: "C\users\elec\desktop\chantier"

Puis fermé

Le fichier source ne doit pas être fermé

Le fichier source peut être réutilisé (c 'est pas impossible) avec le même nom de chantier se trouvant en "validation!B2", est il possible que celui ci se nomme chantier "validation!B2 1", "validation!B2 2", "validation!B2 3", la syntaxe du nom du fichier de sorti a peu d'importance, faut juste pas écraser.

Pour info je bricole un peu le vba, mais on va dire 5%, juste bon a reprendre des codes existants ou enregistré par le bias d'excel et de les modifier un peu a ma sauce, mais la...

Merci

AlainB

Bonjour,

Toujours délicat ... de se greffer sur un ancien sujet ...

Tu as intérêt à démarrer ton propre sujet ...

Rechercher des sujets similaires à "enregistrement fichier sortie"