Encore une question sur VB/Excel

Signaler
Messages postés
12
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
29 juin 2004
-
Messages postés
12
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
29 juin 2004
-
Voila, mon probleme est le suivant. J'ai créer un modele excel que je remplie grace à VB. Une fois le fichier rempli, je souhaiterai demandé à l'utilisateur s'il souhaite ouvrir le fichier qui vient d'etre générer. Seulement, il n'y a que le contour d'excel qui s'ouvre (comme un vieux bug d'affichage). Suite à cela, j'ai essayer d'ouvrir le fichier via l'explorateur, en ayant pris soin de faire
Excel.Application.ActiveWorkbook.Close (False)
Excel.Application.Quit

dans mon application. Le problème, c'est que le fichier excel n'est pas ouvrable tant que l'utilisateur ne quitte pas le programme (c genant). Et j'ai remarqué que dans les processus, un excel.exe trainait encore alors qu'il est correctement fermé puisque plus accessible en débugage.
Je suis à cours d'idée pour remédier au problème.
Quelqu'un aurait-il une solution ???
Merci d'avance

4 réponses

Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

le mieux est que tu donne le code de l'ouverture d'excel

bonne prog
liquide
Messages postés
12
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
29 juin 2004

Aussitot dit aussitot fais !

Excel.Application.Workbooks.Open "" & PARAM(18, 1) & "sample1.xls"
Excel.Application.Visible = False
Excel.Application.Sheets("Feuil1").Select
Excel.Application.Sheets("Feuil1").Name = nom

Range("poste1").Select
ActiveCell.Offset(0, 0).FormulaR1C1 = TB_EXCEL(1, 1) 'libelle poste

For i = 1 To nb_poste
ActiveCell.Offset(i, 1).FormulaR1C1 = TB_EXCEL(i + 1, 4) 'montant poste
ActiveCell.Offset(i, 2).FormulaR1C1 = TB_EXCEL(i + 1, 4) / total 'pourcentage poste
ActiveCell.Offset(i + 1, 0).FormulaR1C1 = TB_EXCEL(i + 2, 1) 'libelle poste
Next i

ActiveCell.Offset(i, 0).FormulaR1C1 = "Totaux"
ActiveCell.Offset(i, 1).FormulaR1C1 = total
ActiveCell.Offset(i, 2).FormulaR1C1 = "1"
End If
nom_fichier = "" & PARAM(1, 1) & "Excel" & Format(Now(), "dd_mm_yy") & Left(nom, 3) & Format(Now(), "hhnn") & ".xls"
'Enregistrement du fichier excel créé
Excel.Application.ActiveWorkbook.SaveAs nom_fichier
'Fermeture du modele excel
Excel.Application.ActiveWorkbook.Close (False)
'Fermeture d'excel
Excel.Application.Quit

Screen.MousePointer = vbDefault
msg = "Le fichier excel a été placé sur " & Chr(13) & nom_fichier '& Chr(13) & "Voulez-vous l'ouvrir ?"
MsgBox msg, vbInformation, "Traitement terminé"
' If MsgBox(msg, vbInformation + vbYesNo, "Traitement terminé") = vbYes Then
' excel.Application.Workbooks.Open (nom_fichier)
' excel.Application.Visible = True
' End If

J'espère que c déchifrable !
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

salut,
j'ai jeté un coup d'oeil, et je n'ai pas eu spécialement de pb, ce que je peux dire c'est que l'application excel ne se faire quand la MSGBOX est validé, pas avant.

pour valider le test j'ai quand meme dû ajouter la référence excel. et ajouter 2 lignes supplémentaires.

je te donne ce que j'ai en plus, mais en tout état de cause elle se ferme bien, alors peut etre que le pb vient du code que je n'ai pas pu tester.

Dim Excel As New Excel.Application
Set Excel = CreateObject("Excel.application")
Excel.Application.Workbooks.Open App.Path & "\sample1.xls"
Excel.Application.Visible = True
Excel.Application.Sheets("Feuil1").Select
Excel.Application.Sheets("Feuil1").Name = "nom"

'Range("poste1").Select
'ActiveCell.Offset(0, 0).FormulaR1C1 = TB_EXCEL(1, 1) 'libelle poste

'For i = 1 To nb_poste
'ActiveCell.Offset(i, 1).FormulaR1C1 = TB_EXCEL(i + 1, 4) 'montant poste
'ActiveCell.Offset(i, 2).FormulaR1C1 = TB_EXCEL(i + 1, 4) / total 'pourcentage poste
'ActiveCell.Offset(i + 1, 0).FormulaR1C1 = TB_EXCEL(i + 2, 1) 'libelle poste
'Next i

'ActiveCell.Offset(i, 0).FormulaR1C1 = "Totaux"
'ActiveCell.Offset(i, 1).FormulaR1C1 = total
'ActiveCell.Offset(i, 2).FormulaR1C1 = "1"
'End If
'nom_fichier = "" & PARAM(1, 1) & "Excel" & Format(Now(), "dd_mm_yy") & Left(nom, 3) & Format(Now(), "hhnn") & ".xls"
'Enregistrement du fichier excel créé
'Excel.Application.ActiveWorkbook.SaveAs nom_fichier
'Fermeture du modele excel
Excel.Application.ActiveWorkbook.Close (False)
'Fermeture d'excel
Excel.Application.Quit

Screen.MousePointer = vbDefault
msg = "Le fichier excel a été placé sur " & Chr(13) & nom_fichier '& Chr(13) & "Voulez-vous l'ouvrir ?"
MsgBox msg, vbInformation, "Traitement terminé"
' If MsgBox(msg, vbInformation + vbYesNo, "Traitement terminé") = vbYes Then
' excel.Application.Workbooks.Open (nom_fichier)
' excel.Application.Visible = True
' End If

liquide
Messages postés
12
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
29 juin 2004

Ok merci liquide. Je ne pe pas tester een ce moment mais des que je pe jte tien o courant pour te dire si ca marche.
Merci beaucoup.