Gerard6969
Messages postés8Date d'inscriptionmercredi 30 août 2006StatutMembreDernière intervention17 avril 2008
-
25 sept. 2006 à 10:53
Gerard6969
Messages postés8Date d'inscriptionmercredi 30 août 2006StatutMembreDernière intervention17 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
'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
Gerard6969
Messages postés8Date d'inscriptionmercredi 30 août 2006StatutMembreDernière intervention17 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 ?