Vérifier si un fichier excel est ouvert BOEG

Résolu
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012 - 12 oct. 2008 à 22:37
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012 - 13 oct. 2008 à 17:33
Bonjour tout le monde:

Voilà mon petit souci:

Afin de mettre un jour une feuille excel interne à mon programme VBA. J'ai fourni à la secrétaire du service la feuille correspondante afin qu'elle puisse m'envoyer la mise à jour de la base. Mon code est le suivant:

Sub CHARGEFORMULDESTI()
Application.Dialogs(xlDialogOpen).Show CStr("FORMULAIRES DESTINATAIRES")

Dim i As Integer
For i = 1 To Workbooks.Count
If Workbooks(i).Name = "FORMULAIRES DESTINATAIRES.xls" Then
MsgBox ("Le ficher est valide, la mise à jour sera effective")

    Cells.Select
    Selection.Copy
    ActiveWindow.WindowState = xlMinimized
    Sheets("FORMULAIRES DESTINATAIRES").Select
    Cells.Select
    ActiveSheet.Paste
    Application.Run "FEUILLEDITSELECT"
    Application.Run "enregistre"
    Application.DisplayAlerts = False
    Workbooks("FORMULAIRES DESTINATAIRES.xls").Close
    Application.DisplayAlerts = True

Else
MsgBox ("Le fichier choisi n'est pas celui demandé. Veuillez chercher le classeur FORMULAIRES DESTINATAIRES.")
End If

Next i
End Sub

Seulement voilà,
Si je n'ouvre pas le classeur en question je n'ais que le message "Le fichier choisi n'est pas celui demandé. Veuillez chercher le classeur FORMULAIRES DESTINATAIRES." ce qui est logique...
Alors que si j'ouvre  le fichier qui s'ouvre bien j'ai le message "Le fichier choisi n'est pas celui demandé. Veuillez chercher le classeur FORMULAIRES DESTINATAIRES." qui apparait suivi enfin du message "Le ficher est valide, la mise à jour sera effective" et des actions qui suivent correctement

Pourquoi ce boeg, normalement je ne devrais voir que le message: "Le ficher est valide, la mise à jour sera effective"suivi des actions.

J'ai tenté aussi de temporiser ma macro en laissant un peu de temps au classeur de s'ouvrir avec:
Application.OnTime Now + TimeValue("00:00:05")
mais sans succés

Merci beaucoup pour le coup de main

3 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
13 oct. 2008 à 07:39
bonjour
ce n'est pas un bug.
en effet dans un premier temps tu as un fichier excel  ouvert donc ton message  qui te dit fichier non conforme
puis tu ouvres un deuxieme fichier
quand tu fais le test à nouveau
il voit d'abord le fichier non conforme  puis seulement ensuite le bon fichier d'où l'apparition des deux messages
pour confirmer cette raison fais l'essai (en l'état) avec deux fichiers ouverts avant le bon et tu aura deux fois le message mauvais fichier avant d'avoir le message fichier correct

donc :
Sub CHARGEFORMULDESTI()
Application.Dialogs(xlDialogOpen).Show CStr("FORMULAIRES DESTINATAIRES")

Dim i As Integer
dim varControl as boolean
varcontrol = false
For i = 1 To Workbooks.Count
If Workbooks(i).Name = "FORMULAIRES DESTINATAIRES.xls" Then
MsgBox ("Le ficher est valide, la mise à jour sera effective")
    varControl = True
    Cells.Select
    Selection.Copy
    ActiveWindow.WindowState = xlMinimized
    Sheets("FORMULAIRES DESTINATAIRES").Select
    Cells.Select
    ActiveSheet.Paste
    Application.Run "FEUILLEDITSELECT"
    Application.Run "enregistre"
    Application.DisplayAlerts = False
    Workbooks("FORMULAIRES DESTINATAIRES.xls").Close
    Application.DisplayAlerts = True

Else
      MsgBox ("Le fichier choisi n'est pas celui demandé. Veuillez chercher le classeur FORMULAIRES       DESTINATAIRES.")

End If

Next i
 if varControl = false then
MsgBox ("Le fichier choisi n'est pas celui demandé. Veuillez chercher le classeur FORMULAIRES DESTINATAIRES.")
End Sub

ainsi le message mauvais fichier n'apparaitra qu'en fin de boucle si le bon fichier n'est pas ouvert

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
3
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
13 oct. 2008 à 07:42
oups !!! en rouge ce qu'il faut supprimer et en bleu ce qu'il faut ajouter

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012
13 oct. 2008 à 17:33
Impeccable, juste à ajouter le End If  avant End sub pour refermer les conditions.


Ca roule impec, effectivement ta raison était bien la bonne.


 


Merci beaucoup à toi.
0
Rejoignez-nous