Encore une question sur VB/Excel

virginie1575 Messages postés 12 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 29 juin 2004 - 29 juin 2004 à 13:21
virginie1575 Messages postés 12 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 29 juin 2004 - 30 juin 2004 à 19:36
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

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
29 juin 2004 à 14:02
le mieux est que tu donne le code de l'ouverture d'excel

bonne prog
liquide
0
virginie1575 Messages postés 12 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 29 juin 2004
29 juin 2004 à 14:06
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 !
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
29 juin 2004 à 21:15
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
0
virginie1575 Messages postés 12 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 29 juin 2004
30 juin 2004 à 19:36
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.
0
Rejoignez-nous