Obliger d'attendre 15s pour qu'Excel se reveille !

Throna
Messages postés
11
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
6 avril 2007
- 2 avril 2007 à 09:42
Throna
Messages postés
11
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
6 avril 2007
- 6 avril 2007 à 10:28
Bonjour tlm,

Voilà je suis sur un projet qui consiste (en gros) a générer un script python et a stocker des résultats dans Excel. Le problème est que quand je créé le fichier Excel avec VB, il souvre en Read-Only e apres un Close dans mon code je dois attendre environ 15 secondes pour que Excel me mettre un message "Read-Write" or "Cancel" et je dois attendre de cliker sur Read-Wrie pour faire un SaveAs dans le code . Pour le moment je met un vieux Sleep de 15 secondes.

Si quelqu'un sait comment palier à ce problème se serait parfait !

Merci d'avance.

4 réponses

Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
2 avril 2007 à 13:04
pourquoi l'ouvres-tu en ReadOnly ?

peux tu reprendre l'enchainement des actions ? pas tout compris.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Throna
Messages postés
11
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
6 avril 2007

2 avril 2007 à 17:37
Je commence comme ceci pour l'objet Excel :

    inputfile = cd1.FileName
    Open inputfile For Input As 1                   '1 : excel file
   
    Set MyXl = CreateObject("Excel.Application")
    With MyXl
            .Visible = True
            .Workbooks.Open inputfile
    End With

Apres je ferme un premier fichier Excel que je n'ai fait que lire pour generer le second (celui qui pose problème) :

    MyXl.Workbooks(1).Close
    MyXl.DisplayAlerts = False
    MyXl.Quit
   
    cd2.FileName = "Results_" & MyValue & ".xls"
    cd2.Filter = "Excel Files (*.xls)|*.xls"
    cd2.ShowSave
    Open cd2.FileName For Output As #3
   
    ' separate path from Path+filename
    For i = Len(cd2.FileName) To 1 Step -1
      If Mid(cd2.FileName, i, 1) = "" Then     ' look for rightmost \
        xlsheet = Mid(cd2.FileName, i + 1)
        xlsheet = Left(xlsheet, Len(xlsheet) - 4)
        Exit For
      End If
    Next i

    'MyXl.Workbooks(1).Worksheets(xlsheet).Cells(1, 1).Interior.Color = &H80C0FF     -> orange
    'MyXl.Workbooks(1).Worksheets(xlsheet).Cells(1, 1).Interior.Color = &HFFFF80     -> bleu
   
    MyXl.Workbooks.Open (cd2.FileName)
    MyXl.Visible = True

Je met plein de choses dedans et lorsque je fait ceci :

    Close #1

Et bah je dois attendre environ 15 secondes qu Excel me sorte ceci :

(une fenetre avec Read-Write & Cancel de Excel qui dit que le fichier est mtn accessible en écriture je metterai le screen lorsque j'aurai le tps)

Avant de pourvoir faire un .SaveAs(1) dans VB.

Voila le problème. 
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
2 avril 2007 à 17:58
Tu ouvres tes fichiers cd1.filename et cd2.filename pour quoi faire (qu'on ve voist pas dans ton code) et, surtout : sur quel lecteur se trouvent-ils, surtout cd2.filename ?

Cd2.filename est apparemment un fichier xls que tu veux créer par écriture par output ?

on ne voit pas non plus la fermeture de cd2.filename , que tu cherches toutefois à réouvrir par un MyXl.Workbooks.Open (cd2.FileName) alors qu'il est encore sous le joug d''un Open...
Tout celà est bien étrange !
0
Throna
Messages postés
11
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
6 avril 2007

6 avril 2007 à 10:28
Bah c'est parce que je les ouvre via un CommonDialogBox. Et quans je close #3 je ferme le fichier non ? ( Open cd2.FileName For Output As #3).
0