Exporter une feuille Excel

Gerard6969 Messages postés 8 Date d'inscription mercredi 30 août 2006 Statut Membre Dernière intervention 17 avril 2008 - 25 sept. 2006 à 10:53
Gerard6969 Messages postés 8 Date d'inscription mercredi 30 août 2006 Statut Membre Dernière intervention 17 avril 2008 - 25 sept. 2006 à 12:21
 

Bonjour tout le monde,



 

Voilà, j’ai une application VB qui à été développé via le
module Visual basic d’Excel (Excel 2003 soit la version 11). Dans cette application
j’ai une feuille d’excel (Un devis) que je voudrais exporter/enregistrer dans un
fichier excel. Pour permettre a mes clients de modifier ce devis si ils veulent
rajouter des références ou autre. Dans cette feuille Excel il y a bien sur des formules,
des objets graphiques, des colonnes qui ont des tailles différentes.



 

Je voudrais donc exporter cette feuille avec ça mise en
pages, ces objets graphies et avec ses valeurs (Donc je ne veux pas conserver
les formules mais uniquement les valeurs).



 



Ce qu’il faut s’avoir c’est que dans cette Application
Visual Basic – Exel, il ne peut pas y avoir d’autre classeur Excel dans la même
session (J’ai du mettre en place quelque que ligne de code pour permettre a mon
application de s’exécuter seul dans une session unique d’Excel pour des raisons
pratiques). Il est donc impossible de faire un simple copié collé de la feuille
Excel en question, entre deux classeurs, puisqu’il n’y a aucun lien possible
entre mon classeur Excel ou tourne mon application et éventuellement un autre classeur
que l’on aurait ouvert pour copier la feuille Excel (ces deux classeurs ne
pourront jamais être dans la même session).



 



J’ai des solutions mais qui me semble être plus du
bidouillage que qu’elle que chose de propre. Je fais donc appel a vos lumières si
vous avez des améliorations voir des méthodes différentes celles-ci sont le
bienvenues



 

Sub Sav_Devis()


Dim ExcelVersion As Integer


Dim ApplicationVersion As Integer


ExcelVersion = Val("10.0")


ApplicationVersion = Val(Application.Version)


Windows("Outil de sélection
V2.0c-en.xls").Activate


'je nettoie la feuille tampon qui va recevoir une copie de
la feuille devis que je veux exporter


Sheets("TempSheet").Select


ActiveSheet.Shapes.SelectAll


Selection.Delete


ActiveSheet.Cells.Clear


Worksheets("TempSheet").Columns.ColumnWidth =
Worksheets("TempSheet").StandardWidth



 




'Je copie la la feuille devis


Sheets("DEVIS+FORMULAIRE
TI").Range("A1:J66").Copy


La feuille de destination


Sheets("TempSheet").Select


Range("a1").Select



 




'Je test la version excel du client car la méthode paste
special fonctionne differement celon la version d'excel


If ApplicationVersion > ExcelVersion Then


Selection.PasteSpecial Paste:=xlPasteColumnWidths,
Operation:=xlNone, SkipBlanks:=False, Transpose:=False


Else


Selection.PasteSpecial Paste:=8, Operation:=xlNone,
SkipBlanks:=False, Transpose:=False


End If


'Je colle dans le feuille tampon


Sheets("TempSheet").Paste Range("A1")



 




'Je copie cette feuille tampon pour pouvoir l'exporter


Sheets("TempSheet").Copy


'J'utilise la methode Save'as qui me permettra de choisir le
nom du nouveau classeur excel qui contiendra ma feuille devis


Application.Dialogs(xlDialogSaveAs).Show


'Je ferme ce nouveau classeur


ActiveWorkbook.Close


'Je retourne sur mon application


Windows("Outil de sélection
V2.0c-en.xls").Activate


End Sub



 




J’avais pensé à une autre méthode : Imprimer dans un
fichier


J’ai testé mais le fichier que j’obtiens en sortie je ne
sais pas avec quoi l’ouvrir, donc ça ne me parait pas être une  méthode mais je vous la mets quand même ça
peut donner des idées



 





    A) in Excel 97 :



 





   
Sub prinTofile()






    Dim fileName As String






    fileName = "MyPint.prn"






 







    ChDrive "C"






    ChDir "C:\My Documents"






    If Dir(curdir & "" &
fileName) <> "" Then kill curdir & "" &
fileName






 
   SendKeys
fileName & "{enter}"






   
thisworkbook.Worksheets("Sheet1").PrintOut PrintToFile:=True






    End Sub






 







    B) in Excel 2000 :






    Time to switch over to Excel2000 where you
can specify the filename as follows :






    thisworkbook.Worksheets("Sheet1").PrintOut
PrintToFile:=True, Prtofilename:="C:\MyTest.prn"






 







 







 







 

1 réponse

Gerard6969 Messages postés 8 Date d'inscription mercredi 30 août 2006 Statut Membre Dernière intervention 17 avril 2008
25 sept. 2006 à 12:21
Il manquait les lignes de codes pour copier uniquement les valeurs je la rajoute et j ai condenser un peu le code pour que sa soit peut être un peu plus compréhensible pour vous...

Sub Save()
Dim ExcelVersion As Integer
Dim ApplicationVersion As Integer
Sheets("TempSheet").Select
ActiveSheet.Shapes.SelectAll
Selection.Delete
ActiveSheet.Cells.Clear
Sheets("CHART-OFFER").Range("A1:H63").Copy
Sheets("Tempsheet").Range("A1").Select
If ApplicationVersion > ExcelVersion Then
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Else
Selection.PasteSpecial Paste:=8, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
Sheets("TempSheet").Paste Range("A1")
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("TempSheet").Copy
Application.Dialogs(xlDialogSaveAs).Show
End sub

Alors personne a une idée pour faire la même chose que ce code mais qui soit plus fiable ?
0
Rejoignez-nous