dolsky
Messages postés18Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention28 janvier 2011
-
26 déc. 2008 à 16:09
dolsky
Messages postés18Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention28 janvier 2011
-
30 déc. 2008 à 13:04
Bonjour,
J'ai crée une procédure qui me permet de sauvegarder le contenu d'une listvieux dans un fichier Exel. Je rencontre actuellement deux soucis:
1 la sauvegarde du fichier ne se fait dans le fichier indiqué en utilisant le savedialog. il enregistre par défaut dans mes docuement avec le nom classurX. xls.
Comment forcer m'enregistrement dans l'emplacement choisit et avec le nom affecté
Voici mon programme:
Dim r, retour As Integer
Dim S, FNXLS As String
Dim creobjexcel As Object
Dim classeurxls As Object
Dim feuixls As Object
Dim list As ListViewItem
SaveFileDialog1.Filter = "Fichier excel |*.xls "
S = Application.StartupPath
retour = SaveFileDialog1.ShowDialog
FNXLS = S & SaveFileDialog1.FileName
creobjexcel = CreateObject("Excel.Application")
classeurxls = creobjexcel.Workbooks.Add
feuixls = creobjexcel.worksheets(1)
With feuixls
For i As Integer = 0 To ListView1.Columns.Count - 1
.cells(1, i + 1) = ListView1.Columns(i).Text
feuixls.columns(i + 1).columns = ListView1.Columns(i).Width / 4
Next
Dim lig, col As Integer
For lig = 0 To ListView1.Items.Count - 1
list = ListView1.Items(lig)
For col = 0 To ListView1.Columns.Count - 1
.cells(lig + 3, col + 1) = list.SubItems(col).Text
Next
Next
End With
feuixls.rows(1).font.bold() = True
feuixls.PageSetup.LeftMargin = 0.393700787401575
feuixls.PageSetup.RightMargin = 0.393700787401575
feuixls.PageSetup.TopMargin = 0.393700787401575
feuixls.PageSetup.BottomMargin = 0.393700787401575
feuixls.pagesetup.printgridlines = True ' Afficher le quadrillage sur la feuille
feuixls.PageSetup.CenterHorizontally = True
classeurxls.save()
If retour = 1 Then
End If
End Sub
2emme pro:
l'enregistrement se fait correctement mais dans le fichier XLS les nom de la colone listvieux ne sont pas enregistré. J'ai juste des Numéro.
Ensuite, la façon dont tu obtiens le
chemin pour enregistrer le fichier xls n'est pas correcte.
Je m'explique, tu fais :
S = Application.StartupPath
retour = SaveFileDialog1.ShowDialog
FNXLS = S & SaveFileDialog1.FileName
Je pars dans l'hypothèse que ton programme se trouve dans C:\Program
Files\MonProg\
donc S = C:\Program Files\MonProg\
Ensuite tu affiches SaveFileDialog1, tu récupère le chemin d'accès du fichier
avec SaveFileDialog1.FileName et tu le rajoute à S
Mais imagine que l'utilisateur choisis d'enregistrer le fichier sous D:\test.xls
(et il peut le faire)
En faisant :
FNXLS = S & SaveFileDialog1.FileName
FNXLS sera égal à C:\Program Files\MonProg\D:\test.xls (et là, ton
programme plante quand tu vas essayé d'enregistrer le fichier)
Comme tu veux absolument enregistrer dans le répertoire de l'application il faut
que tu teste si l'utilisateur est bien resté dans celui-ci, si c'est pas le
cas, tu affiches un message pour le prévenir et tu affiches de nouveau
SaveFileDialog1
<hr align="center" size="2" width="100%" />
Pour ton deuxième problème :
quand tu fais :
For i As Integer = 0 To ListView1.Columns.Count - 1
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 27 déc. 2008 à 19:18
Voici le même code que le tien mais amélioré :
<hr size= "2" width="100%" />
Sub
Sauvegarde()
Dim FNXLS As String Dim creobjexcel As Object Dim classeurxls As Object Dim feuixls As Object Dim list As ListViewItem
SaveFileDialog1.Filter = "Fichier excel |*.xls "
' On définit le répertoire qui va s'afficher à l'affichage de
' SaveFileDialog1 (ici, celui de l'application)
SaveFileDialog1.InitialDirectory = My .Application.Info.DirectoryPath
Do ' On teste si l'utilisateur a cliqué sur Annuler
If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then ' Si c'est le cas on annule l'enregistrement en quittant Sauvegarde()
Exit Sub End If
' On teste si l'utilisateur est resté dans le répertoire de l'application
If System.IO.Path.GetDirectoryName(SaveFileDialog1.FileName) <> My.Application.Info.DirectoryPath Then ' On affiche un message si c'est pas le cas
MsgBox("Vous ne pouvez enregistrer que dans le répertoire de l'application")
End If
' On affiche SaveFileDialog1 jusqu'à tant que l'utilisateur choisisse
' d'enregistrer dans le répertoire de l'application
Loop Until System.IO.Path.GetDirectoryName(SaveFileDialog1.FileName) = My .Application.Info.DirectoryPath
FNXLS = SaveFileDialog1.FileName
creobjexcel = CreateObject ( "Excel.Application" )
classeurxls = creobjexcel.Workbooks.Add
feuixls = creobjexcel.worksheets( 1 )
With feuixls
For i As Integer = 0To ListView1.Columns.Count - 1 .cells(1, i + 1) = ListView1.Columns(i).Text
.columns(i + 1 ).ColumnWidth = ListView1.Columns(i).Width / 4 Next
Dim lig, col As Integer
For lig = 0 To ListView1.Items.Count - 1 list = ListView1.Items(lig)
For col = 0 To ListView1.Columns.Count - 1 .cells(lig + 3, col + 1) = list.SubItems(col).Text
Next Next End With
feuixls.rows(1).font.bold() = True
feuixls.PageSetup.LeftMargin = 0.393700787401575 feuixls.PageSetup.RightMargin = 0.393700787401575
feuixls.PageSetup.TopMargin = 0.393700787401575 feuixls.PageSetup.BottomMargin = 0.393700787401575
feuixls.pagesetup.printgridlines = True ' Afficher le quadrillage sur la feuille
feuixls.PageSetup.CenterHorizontally = True
classeurxls.SaveAs(FNXLS)
dolsky
Messages postés18Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention28 janvier 2011 30 déc. 2008 à 13:04
Merci pour ton aide..
J'ai réussi à résoudre mon problème en mettant juste: classeurxls.SaveCopyAs(SaveFileDialog1.FileName)
Pour ta solution, elle est bien sauf que je ne souhaite pas obligé l'utilisateur à enregistrer son fichier dans le répertoire d'application il peut l'enregistrer dans l'emplacement choisit.
Merci une autre fois.
Si tu as des exercices à me fourninr ou un site vers lequel tu peux m'orieneter je serai très reconnaissant...