Ouvrir un fichier excel

Résolu
timane56 Messages postés 7 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 janvier 2012 - 19 janv. 2012 à 21:41
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 22 janv. 2012 à 10:13
Bonjour

Je débute en VBS et je voudrais écrire un petit programme.

J'ai un fichier excel nommé test1 sous c:\essai

Mon programme serait:

ouvrir mon fichier excel test1 et se positionner en cellule a1 de la feuil1
et que s'il est déjà ouvert (en icône dans la barre des tâches par exemple)
il puisse activer la feuil1 et se positionner en cellule a1

en résumé, je voudrais travaillé dans un fichier excel
l'ouvrir s'il ne l'est pas
et l'activer s'il l'est

Pas facile de décrire ce que l'on veut
Merci de votre aide
Cordialement

19 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
20 janv. 2012 à 09:26
 Bonjour à tous,

Exemple pour tester si un fichier Excel est ouvert
Option Explicit
Const MyFile = "d:\MyFile.xls" 
Const ForReading 1, ForWriting 2, ForAppending = 8
Const TristateUseDefault -2, TristateTrue -1, TristateFalse = 0

Dim objFso, objFile 

Set objFso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next    
Set objFile = objFso.OpenTextFile(MyFile, ForAppending, TristateFalse)

If Err.Number <> 0 Then 
   Msgbox "Le fichier est déjà ouvert"&vbCrLf& Err.Number &vbCrLf& _
           Err.Source &vbCrLf& Err.Description : Err.Clear
 Else
   objFile.Close
   MsgBox "Le fichier n'est pas ouvert"
   Dim xlApp, xlBook, xlSheet

   Set xlApp = CreateObject("Excel.Application")
   Set xlBook = xlApp.WorkBooks.Open(MyFile)
   Set xlSheet = xlBook.Sheets("Feuil1")
   xlApp.DisplayAlerts = False
   xlApp.Application.Visible=True 
   MsgBox "Le fichier " & MyFile & " est ouvert"
   xlApp.Quit
   Set xlSheet = Nothing
   Set xlApp = Nothing
   Set xlBook = Nothing
End If
Set objFile = Nothing
Set objFso = Nothing


jean-marc
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 janv. 2012 à 13:23
je ne comprends vraiment pas le lien que l'on pourrait faire entre tes ??????? (là où ils sont) et l'utilisation de OpenTextFile, qui n'affiche rien !
or, tu dis :
lui dire qu'il me l'affiche en plein écran

qu'il t'affiche quoi, en plein écran ?
et plus grave encore à mon sens : si pas d'erreurs, alors il ne ferme pas le fichier ouvert (for appending) pour le traiter ? ===>> bizarre !
Et de toutes manières : quel rapport, alors, entre ces instructions dans l'ouverture d'un fichier texte (pour y faire quoi ?) et le sujet ouvert (ouvrir un fichier excel) ? ===>> totalement incompréhensible !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 janv. 2012 à 14:44
Non !
1) je ne t'écrirai pas ce code (et ce d'autant que nous t'avons dit et redit comment l'écrire et que, de surcroît, c'est ce que tu as déjà fait !!!!!... c'est déjà dans ton code !!!)
il ne te reste plus (mais ce sera maintenant à tes connaissances en VBA/Excel qu'il te faudra faire appel !)
2) le fait que tu sois débutant ne t'affranchit absolument par de la réflexion
3) ton ouverture d'un fichier texte n'a dans cette affaire absolument rien à voir avec celle d'un fichier excel (tu peux tout supprimer de ce que tu as écrit de ceci :
Set objFile = objFso.OpenTextFile(test1, ForAppending, TristateFalse)

If Err.Number <> 0 Then

?????????

Else
objFile.Close


Enfin quoi ! tu as maintenant un classeur ouvert. Ca y est ! il est représenté par l'objet xlBook.
Tu y as une feuille nommée Feuil1 représentée par l'objet xlsheet
et tu dois travailler sur ces deux objets, à l'aide d'instructions VBA !
Tu veux afficher cette feuille en plein écran ? c'est une instruction VBA en non VBS !
Tu sais quoi ? Ce que je n'aime surtout pas, c'est que l'on "écrive des choses" sans même savoir dans quel but, ni leur sens !
Je te souhaite bonne chance, mais surtout : bonne utilisation de tes neurones.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
19 janv. 2012 à 22:46
Bonjour,

Regardes peut être ce lien :
http://www.activexperts.com/activmonitor/windowsmanagement/scripts/msoffice/excel/

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
timane56 Messages postés 7 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 janvier 2012
20 janv. 2012 à 07:05
Bonjour

Merci pour le lien qui me sera utile ultérieurement
Mais malheureusement, je n'ai pas trouvé réponse à mon problème

Je ne pense pas que cela soit un programme bien compliqué, mais mon manque de connaissance en VBS me bloque dans ma conception

Si une personne peut m'aider, elle sera la bienvenue

Encore merci

Cordialement
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2012 à 08:26
Bonjour,

ce que tu veux faire s'appelle piloter Excel par un script VBS

CETTE LECTURE t'en fera connaître le principe.

Une fois au "poste de pilotage", ce seront tes connaissances en VBA/Excel qui devront être utilisées (applicables à chaque objet ainsi créé, que tu pilotes) et plus (ou presque) VBS


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2012 à 08:39
Une petite précision, par ailleurs.
Si un classeur est déjà ouvert, il figure dans la collection WorkBooks. Il n'y figure pas si non ouvert.
(mais ceci, c'est de la connaissance VBA/Excel et non de la connaissance VBS, hein ...)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
timane56 Messages postés 7 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 janvier 2012
20 janv. 2012 à 08:43
Bonjour

Pour être plus clair, si une personne pouvait m'écrire ce script, cela m'aiderait à comprendre le principe du pilotage excel via VBScript

Ainsi je pourrais espérer continuer à progresser dans ce dommaine

Cordialement
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2012 à 08:55
oh !

le principe t'as été montré ! deux fois !

Le reste n'est dépendant que de tes connaissances en VBA/Excel !
Quelles sont tes connaissances en VBA/Excel, donc, avant de parler de "pilotage" de VBA/Excel ?
Montre le code que tu écrirais depuis le classeur lui-même, hors pilotage. Et on verra alors...




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2012 à 08:59
Et je viens de voir qu'en plus, le lien que t'a montré NHenry, touche précisément à une cellule !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
20 janv. 2012 à 09:19
Bonjour,
Je crois que notre ami ne sait pas créer un fichier VBS.
Tu ouvres Notepad, tu copies dedans le code du lien que t'as donné UCFOUTU en changeant le chemin de ton fichier Excel

Option Explicit
'On Error Resume Next
Dim objExcel : Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = true
objExcel.Workbooks.Open "c:\temp\test.xls"'à modifier
objExcel.ActiveWindow.DisplayGridlines = False
'objExcel.Quit


Ensuite tu enregistres ton fichier en choisissant: Tous les fichiers [*.*]
et saisissant par ex: Monfichier.vbs
Là tu auras créé ton fichier vbs
@+Le Pivert
0
timane56 Messages postés 7 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 janvier 2012
21 janv. 2012 à 11:49
Bonjour JMO

Enfin quelqu'un de compréhensible envers un novice comme moi !!!

Merci pour le temps passé

Cdlt
0
timane56 Messages postés 7 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 janvier 2012
21 janv. 2012 à 13:07
Bonjour

Grâce à vous, j'ai pu réaliser un script qui marche bien, mais j'ai encore un petit souci

A la place des points d'interrogations du script je voudrais lui dire qu'il me l'affiche en plein écran. Est-ce possible?

Pour résumer
Je veux ouvrir le fichier excel essai1
Et s'il est déjà ouvert mais réduit dans la barre des tâches, qu'il me le mette en plein écran.

Merci de votre compréhension sur le fait que je ne suis pas fortiche en VBS !!!

Cordialement

Voici le script créé avec votre aide

Const test1 = "C:\Documents and Settings\Xportable\Bureau\essai1.xls"
Const ForReading 1, ForWriting 2, ForAppending = 8
Const TristateUseDefault -2, TristateTrue -1, TristateFalse = 0

Dim objFso, objFile
Dim xlApp, xlBook, xlSheet

Set objFso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next
Set objFile = objFso.OpenTextFile(test1, ForAppending, TristateFalse)

If Err.Number <> 0 Then

?????????

Else
objFile.Close

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.WorkBooks.Open(test1)
Set xlSheet = xlBook.Sheets("Feuil1")
xlApp.Application.Visible=True

End If
0
timane56 Messages postés 7 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 janvier 2012
21 janv. 2012 à 14:26
Bonjour

J'ai bien précisé que j'étais nul en VBS
Et aussi mentionné ce que je voulais faire dans le pavé ci-dessous
Pour résumer
Je veux ouvrir le fichier excel essai1
Et s'il est déjà ouvert mais réduit dans la barre des tâches, qu'il me le mette en plein écran.

Maintenant, puisque tu as l'air d'être balaise en la matière, peux-tu m'écrire en VBS ce que je veux faire

à savoir

ouvrir un fichier excel donné (exemple "C:\test\essai1.xls")
avec la condition que s'il est déjà ouvert et minimisé dans la barre des tâches, il l'affiche en plein écran

C'est tout
Rien de plus simple pour toi, non !

merci de l'aide

Cordialement
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 janv. 2012 à 14:57
En enregistrant une macro quand tu minimises et tu rétablies ta fenêtre tu obtiens ceci:

Application.WindowState = xlMinimized
Application.WindowState = xlMaximized

avec ces 2 lignes de code tu as ta solution. Il s'agit de l'adapter.
Dans les post précédents tu as aussi la solution!!!!!!!!!!!!
@+Le Pivert
0
timane56 Messages postés 7 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 janvier 2012
21 janv. 2012 à 17:18
Bonjour

Je n'aime pas la polémique mais je ne trouve pas ta réponse très sympathique.

Je me suis peut-être mal expliquer dans mon sujet
J'ai pris un fichier excel comme j'aurais pu prendre une autre application comme par exemple la calculatrice ou bien le bloc-notes
Donc VBA ne m'est pas utile

Ce que je voudrais me parait simple, mais peut-être compliqué, voir impossible !!!
Mes incompétence en VBS ne me permettent pas de juger.

Je répète mon sujet pour ceux qui pourraient m'aider (sauf pour ucfoutu ça va de soi...)

En VBS, je voudrais ouvrir un fichier(excel, word, etc... par exemple) ou une application (calculatrice, bloc-note,... ou autre)
MAIS que si elle est déjà en icône (dans la barre des tâches), vbs ne m'en ouvre pas une autre
mais bien celle d'origine ET en PLEIN ECRAN

Merci beaucoup à tous ceux qui voudront bien prendre soin d'un vieil homme comme moi qui essaye de se lancer dans la programmation

Cordialement
0
TGV6773 Messages postés 1 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 21 janvier 2012
21 janv. 2012 à 17:19
Bonjour,

Excusez-moi de vous interrompre mais je suis dans la même problématique que timane56.

En fait j'ai bien lu le post de timane56, et je recherche la même chose.

Pour résumer, c'est simple, je veux via un script VBS lancer une application (prenons l'exemple d'un fichier texte "post-it.txt") mais si celui-ci est déjà lancé, je souhaite le mettre en premier plan (en gros simuler un clic pour que je voie l'application).

Du coup, ce n'est pas en VBA mais bien du VBS.

Je cherche en gros un script qui fasse ceci:

set WshShell = createObject("WScript.shell")

If "post-it.txt - Bloc-notes" = dans la barre des taches Then
Selectionner "post-it.txt - Bloc-notes"
Mettre "post-it.txt - Bloc-notes" au premier plan
Else
Wshshell.run "notepad.exe C:\post-it.txt"


Merci
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
22 janv. 2012 à 09:40
Tu avoueras que le titre de ton post ne reflète pas ta demande: Ouvrir un exe
Je pense que si tu avez bien intitulé ton post cette polémique n'aurait pas eu lieu. Et tu aurais eu ta réponse immédiatement.
Voici donc le code, que tu modifieras en fonction de l'exe:

Option Explicit
Dim WshShell
Set WshShell = wscript.CreateObject("WScript.Shell")
 WshShell.Run "Notepad.exe", 1, True

PS tu te trouves vieux qu'est ce que je devrais dire!

Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
22 janv. 2012 à 10:13
Pour répondre à TGV6773 voici le code:

Option Explicit
Dim WshShell, Str_Wegg, chemin 
Set WshShell = wscript.CreateObject("WScript.Shell")
   chemin = "C:\Windows"
    Str_Wegg = "cmd /c " & chemin & "Notepad.exe " & "chemin du fichier.txt"
     WshShell.Run Str_Wegg, 0, True
Set WshShell = Nothing 


@+Le Pivert
0
Rejoignez-nous