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
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 entte
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
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 ...