IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Problème d'ouverture du fichier excel avec VBS


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Problème d'ouverture du fichier excel avec VBS
    Chers amis,
    Voici le code que j'utilise pour ouvrir mun fichier excel avec un clic sur bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Dim objExcelApp
    Dim FileName, AppName
    Dim msg
    Dim ExcelObj
    Dim ExcelWb
    Dim Found
     
    	FileName = "D:\Mon ficher.xls"
    	AppName = "Microsoft Excel"
     
    	Set ExcelObj = CreateObject("Excel.Application")
     
    	Set ExcelObj = GetObject(, "Excel.Application")
     
    	On Error Goto 0
     
    	For Each ExcelWb In ExcelObj.Workbooks
    		'MsgBox excelwb.Name
    		If ExcelWb.Name = "Mon ficher.xls" Then
    			Found = True
    			MsgBox "Mon ficher.xls already opened, switching to excel..."
    			Exit For
    		End If
    	Next
     
    	If Not found Then
    		Set ExcelWb = ExcelObj.Workbooks.Open(FileName)
    	End If
     
    	ExcelObj.Visible = True
     
    Exit Sub
    Lorsque le fichier est déjà ouvert le message apparait, mais en cliquant sur ok du message, le fichier ne s'ouvre pas sur l'écran.
    Il reste clignoté sur la barre de tâche.
    Quelqu'un peut m'aider à résoudre se problème?

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Salut;

    Deux choses à considérer :
    1 - Pourquoi écrire:
    Set ExcelObj = CreateObject("Excel.Application")
    Set ExcelObj = GetObject(, "Excel.Application")
    Tu crées l'instance de Excel puis tu demandes qu'on la cherche. Si l'ordre était l'inverse(avec une condition If ....Then), ça se comprend mieux ; ou plus simplement, supprime la 2ème ligne.

    2 - La dernière ligne de ton code :
    Exit Sub
    Où se trouve l'entête de cette procédure ?
    En supprimant cette ligne, tout marche correctement.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci, pour ta réaction.
    Le code Set ExcelObj = GetObject(, "Excel.Application") me permet d'ouvrir "Mon ficher.xls" , s'il était déjà ouvert.
    Sans ça, je n'ai pas le MsgBox "Mon ficher.xls already opened, switching to excel..." et j'ouvre une copie de "Mon fichier.xls"

    Avec mon script, "Mon ficher.xls" s'ouvre sans problème s'il était fermé.
    Mais s'il était ouvert, le MsgBox "Mon ficher.xls already opened, switching to excel..." s'affiche, mais en cliquant sur ok, Mon ficher.xls" ne se met pas en avant plan sur écran.

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Salut;

    Je n'ai donc pas bien saisi la question !

    Dans ce cas la solution devient toute simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Dim objExcelApp
    Dim FileName, AppName
    Dim msg
    Dim ExcelObj
    Dim ExcelWb
    Dim Found
     
    	FileName = "C:\MODELE.XLS"
    	AppName = "Microsoft Excel"
    	
    	Set ExcelObj = CreateObject("Excel.Application")
    	
    	Set ExcelObj = GetObject(, "Excel.Application")
    	
    	On Error Goto 0
    	
    	For Each ExcelWb In ExcelObj.Workbooks
    		'MsgBox excelwb.Name
    		If ExcelWb.Name = "MODELE.XLS" Then
    			Found = True
    			MsgBox "MODELE.XLS already opened, switching to excel..."
    			ExcelObj.Visible = True
    			Exit For
    		End If
    	Next
    	
    	If Not found Then
    		Set ExcelWb = ExcelObj.Workbooks.Open(FileName)
    	        ExcelObj.Visible = True
            End If
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Salut,
    J'avais déjà essayé cette proposition mais, pas de solution.
    Si, je veux utiliser setforeground. Comment je peux procéder?
    Merci

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Salut;

    Pour "setforeground", je ne vois pas comment faire.

    Mais pour le code "corrigé", il doit y avoir quelque chose d'autre qui cloche car sur ma machine ça marche sans problème.

    Essaie d'exécuter juste ce bout de code sur un fichier(comme Modele.xls).
    Et si ça marche, il te faut revoir en détails tout ton code.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Salut,
    J'ai recopié exactement ton code, mais il n'y a pas de changement.
    "MODELE.XLS" ne s'ouvre tjrs pas en avant plan après le clic sur le msgBox.
    Cherchons encore.

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Chers amis,
    Jusque là je n’ai pas une solution à ce problème.
    Quelqu’un a une solution pour moi ?
    Merci

  9. #9
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Bonjour;

    Étant donné que cela marche sur mes machines(XP Home XP3 et XP Pro SP2), je ne vois trop d'où le problème pourrait venir.

    Si tu testes le code en mode sans échec ? ça peut donner une idée non !

    Il se pourrait aussi que(si je ne me trompe pas) ça soit lié au paramétrage de l'installation de MS Office.

    Une autre suggestion : Si tu as VB6 installé, teste le même code sous cet IDE(chose que j'ai testé avec succès).
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Voici le code que j'ai utilisé pour contourner le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Dim objExcelApp
                 Dim FileName, AppName
    	Dim ExcelObj
                 Dim ExcelWb
                 Dim Found
                 Dim FileName
     
     
                 FileName = "D:\Mon ficher.xls"
    	AppName = "Microsoft Excel"
    	Set ExcelObj = CreateObject("Excel.Application")
    	Set ExcelObj = GetObject(, "Excel.Application")
     
    	On Error Goto 0	
    	For Each ExcelWb In ExcelObj.Workbooks		
    	Found = True
                 ExcelWb.Save
                 ExcelWb.Close
                 ExcelObj.Quit
     
    	Exit For
    	End If
    	Next
     
    	If Not found Then
    		Set ExcelWb = ExcelObj.Workbooks.Open(FileName)
    	End If
     
     
    	ExcelObj.Visible = True
    A la place du MsgBox, je ferme tout ficher excel ouvert.
    Est-il possible de fermé seulement les fichers ouvert en arrière plan et laissé celui ouvert en avant plan?

  11. #11
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Not ExcelObj.Visible then ExcelObj.Quit
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Fermer fichier ouvert en arrière plan
    J'ai essayé ceci, mais le fichier ouvert en arrière-plan ne se ferme toujours pas.

    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Option Explicit
    Function action
     
        Dim objExcelApp
        Dim FileName, AppName
        Dim ExcelObj
        Dim ExcelWb
        Dim Found
     
     
    	AppName = "Microsoft Excel"
     
    	Set ExcelObj = CreateObject("Excel.Application")
     
    	Set ExcelObj = GetObject(, "Excel.Application")
     
    	On Error Goto 0
     
    	For Each ExcelWb In ExcelObj.Workbooks
                If Not ExcelObj.Visible then 	
                Found = True
                ExcelWb.Save
                ExcelWb.Close
                ExcelObj.Quit                         
    	    Exit For
    	    End If
     
    	Next	
     
    End Function

Discussions similaires

  1. problème d'ouverture de fichier Excel avec Matlab
    Par Lize50 dans le forum MATLAB
    Réponses: 4
    Dernier message: 19/05/2010, 16h18
  2. Réponses: 3
    Dernier message: 05/02/2010, 16h09
  3. problème d'ouverture du fichier excel
    Par nadiaflamingenierie dans le forum Langage
    Réponses: 1
    Dernier message: 21/04/2008, 19h48
  4. Réponses: 6
    Dernier message: 12/04/2007, 14h22
  5. Ouverture de fichier Excel avec macros
    Par Mathusalem dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/06/2006, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo