Creer un fichier Excel avec VB6 [Résolu]

cs_Gegeleblond 41 Messages postés lundi 31 mars 2008Date d'inscription 2 août 2010 Dernière intervention - 14 mai 2008 à 20:50 - Dernière réponse : cs_Gegeleblond 41 Messages postés lundi 31 mars 2008Date d'inscription 2 août 2010 Dernière intervention
- 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
Afficher la suite 

14 réponses

Répondre au sujet
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 14 mai 2008 à 21:23
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de bigfish_le vrai
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 14 mai 2008 à 22:48
+3
Utile
...

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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de bigfish_le vrai
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 14 mai 2008 à 23:05
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de pile_poil
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 14 mai 2008 à 23:31
+3
Utile
...

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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de bigfish_le vrai
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 14 mai 2008 à 23:32
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de pile_poil
cs_Gegeleblond 41 Messages postés lundi 31 mars 2008Date d'inscription 2 août 2010 Dernière intervention - 14 mai 2008 à 22:26
0
Utile
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
Commenter la réponse de cs_Gegeleblond
cs_Gegeleblond 41 Messages postés lundi 31 mars 2008Date d'inscription 2 août 2010 Dernière intervention - 14 mai 2008 à 22:53
0
Utile
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?
Commenter la réponse de cs_Gegeleblond
cs_Gegeleblond 41 Messages postés lundi 31 mars 2008Date d'inscription 2 août 2010 Dernière intervention - 14 mai 2008 à 23:23
0
Utile
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...
Commenter la réponse de cs_Gegeleblond
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 14 mai 2008 à 23:40
0
Utile
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
Commenter la réponse de pile_poil
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 14 mai 2008 à 23:51
0
Utile
...

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+
Commenter la réponse de bigfish_le vrai
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 15 mai 2008 à 08:32
0
Utile
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
Commenter la réponse de jrivet
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 15 mai 2008 à 09:18
0
Utile
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
Commenter la réponse de pile_poil
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 15 mai 2008 à 09:20
0
Utile
Re,
Oui effectivement [auteur/PILEPOIL/1026968.aspx pile_poil ]il est bon de le préciser.

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
cs_Gegeleblond 41 Messages postés lundi 31 mars 2008Date d'inscription 2 août 2010 Dernière intervention - 15 mai 2008 à 16:39
0
Utile
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...
Commenter la réponse de cs_Gegeleblond

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.