Creer un fichier Excel avec VB6

Résolu
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 2 août 2010 - 14 mai 2008 à 20:50
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 2 août 2010 - 15 mai 2008 à 16:39
Bonjour,

Je sais qu avec la commande Workbooks.Open Filename:="C:\Documents\toto.xls", j ouvre un fichier deja existant avec VB6 mais  j aimerais pouvoir creer mon propore fichier  Excel.
Savez vous comment faire?

Merci

14 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 mai 2008 à 22:48
...

NewXlFile

.Close False 'ferme le fichier sans aucun message d'alerte meme si il n'a pas ete sauvé



ExcelAppli.Quit 'ferme excel
Set

NewXlFile = Nothing 'vide la variable objet


Set 

ExcelAppli

= Nothing


'vide la variable objet



pour les 2 dernieres lignes il est recommender de les avoirs en VB6, ne me demande pas pourquoi je ne suis pas un expert VB6 Par contre je te le deconseil en VBA. Le VBA n'aime pas du tout ca a tel point que la plus part du temps cela tue excel sans aucun message d'erreur.
Pas glop !

A+
3
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
14 mai 2008 à 23:05
mets le nom de ton fichier text dans une variable
et utilise cette variable pour enregistrer ton fichier excel
un truc du genre
toto = "c:\ monprog\test.sin"
NewXlFile.SaveAs  left(toto, len(toto)-3) & "xls"

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 mai 2008 à 23:31
...

pour preciser un peut, CommonDialog1.FileName renvois le nom  du fichier avec son extension donc en ecrivant :

NewXlFile.SaveAs FileName = CommonDialog1.FileName, FileFormat:=xlNormal

c'est comme si tu faisais :

NewXlFile.SaveAs FileName = c:\temp\test.sin.xls

donc comme te la expliqué pile_poil il te faut extraire le nom sans l'extension .sin

NomFichier = CommonDialog1.FileName
NomFichier = Left(NomFichier, Instr(NomFichier, ".") -1)  'instr renvoi la position du point
NewXlFile.SaveAs Filename:=
NomFichier,  FileFormat:=xlNormal

pile_poil :
FileFormat:=xlNormal permet d'attribuer directement l'extension par defaut d'excel (.xls) donc je propose une autre solution mais la tienne marche aussi

A+
3
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
14 mai 2008 à 23:32
len(toto) te donne le nombre de caractères de la variable toto
donc left(toto, len(toto)-3) & "xls"  prend la partie gauche de totode toute la longeur moins trois lettres (en l'occurence sin) et ajoute "xls " donc dans l'exemple que je te donnais
"c:\ monprog\test.sin" est transformé en "c:\ monprog\test.xls"

mais tu aurais pu pour savoir ce que voulait dire "len" mettre ton curseur sur ce mot dans VB6 et appuyer sur F1  pour avoir l'aide en ligne et donc toutes les explication

en réponse à ta deuxieme question :
quel est ton code pour ouvrir ton fichier *.sin ?
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 mai 2008 à 21:23
Salut,

Ton probleme est un probleme excel, VB6 ou les deux ?

Pour excel uniquement :

Workbooks.Add

Pour excel depuis VB6

Dim
ExcelAppli As Object, NewXlFile As Object

Set ExcelAppli = CreateObject("Excel.Application")
Set
NewXlFile =
ExcelAppli.Workbooks.add

NewXlFile.SaveAs Filename:="c:\temp\Momnouveaufichier", FileFormat:=xlNormal

NewXlFile
.Close False

ExcelAppli.Quit
Set
NewXlFile = Nothing

Set 
ExcelAppli
= Nothing

A+
1
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 2 août 2010
14 mai 2008 à 22:26
C est effectivement pour Excel depuis VB6. Et je dois dire que ce que tu m as dit fonctionne
Merci.

Juste une autre question a quoi sert les lignes suivantes ?
NewXlFile
.Close False

ExcelAppli.Quit
Set
NewXlFile = Nothing

Set 
ExcelAppli
= Nothing
0
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 2 août 2010
14 mai 2008 à 22:53
Encore une autre question :

Pour etre clair, dans mon programme, j ouvre un fichier (par exemple test.sin), ensuite je créeun fichier Excel que je rempli avec des valeurs provenant de test.sin (ce que j ai pu faire grace à ton aide) mais je souhaiterai que ce fichier Excel prenne le meme nom et le meme emplacement que test.sin à l exception pres que son extension sera .xls (test.xls).
J ai essayé d utiliser CommonDialog1.FileName pour nommer mon fichier Excel puisque CommonDialog1.FileName est le nom du fichier selectionné lorsque je demande à mon programme d ouvrir un fichier mais je n y arrive pas. J ai ecrit
NewXlFile.SaveAs FileName = CommonDialog1.FileName, FileFormat:=xlNormal mais ca ne fonctionne pas.

Pourrais tu m aider s il te plait?
0
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 2 août 2010
14 mai 2008 à 23:23
Euh je saisis pas trop le len(toto)-3... peux tu expliciter un peu?

En outre j ai pris test.sin comme exemple, en realite je dois etre capable de creer ce fichier excel (avec le meme nom et le meme emplacement) pour n importe quel fichier dont l extension est .sin. Or si je suis ta methode, je devrai à chaque fois revenir dans le code... C est pour ca que je tentais quelque chose avec CommonDialog1.FileName mais en vain...
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
14 mai 2008 à 23:40
bigfish tu as raison de le souligner !
mais pour moi il y a longtemps, et ayant appris tout seul a programmer VB6,  je ne connaissais pas fileformat et avais trouvé cette astuce  et l'habitude aidant ..... je l'ai gardée !

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 mai 2008 à 23:51
...

d'autant que xlNormal n'est peut etre qu'une option d'excel et n'existe pas dans VB6 mais vu que je suis pas vraiment un "VB6ste"

Aller, il ce fait tard et je doit aller chercher ma fille a la creche (il n'est que 16h50 ici) donc vous ne me reverez pas avant demain

A+
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 08:32
Salut,
Il est possible d'avoir toute les Constantes Excel.
Il suffit d'ajouter la référence Microsoft Excel X.X Object Library

Cela permet même d'avoir l'intellisense pour tout les objets Excel et ca ce n'est pas négligeable je trouve.

@+: Ju£i?n
Pensez: Réponse acceptée
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
15 mai 2008 à 09:18
salut jrivet !
le probleme d'ajouter le reférence c'est le X.X car quand tu installes ton .exe  sur une machine qui n'a pas la même version d'excel tu te retrouves avec une erreur

par contre c'est vrai qu'au moment du dévellopement l'intellisense est pratique

 il est donc intéressant de travailler en liaison tardive  de se passer des constantes Excel ( ou d'utiliser leurs correspondances numériques si elles existent) et de supprimer la référence  au moment de la création de l'exe de façon à rendre ton programme compatible avec toutes les versions excel

A moins qu'il existe un solution plus élégante que je ne connaitrais point !

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 09:20
Re,
Oui effectivement [auteur/PILEPOIL/1026968.aspx pile_poil ]il est bon de le préciser.

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 2 août 2010
15 mai 2008 à 16:39
Merci beaucoup pour tous ces commentaires enrichissants !

Juste un detail, ca fait deux mois que j ai beau appuyer sur F1 et j ai toujours un magnifique message d erreur et pas d aide en ligne...
0
Rejoignez-nous