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 :

Ré-exécution d'un script à partir de la 1ère ligne


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 34
    Points : 15
    Points
    15
    Par défaut Ré-exécution d'un script à partir de la 1ère ligne
    Bonjour à tous,

    Dans mon script VBS, j'ai une MsgBox de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Message = MsgBox("Texte".", vbRetryCancel + vbExclamation, "Titre")
    Et je voudrais que, si l'opérateur clique sur "Recommencer" (ie si Message = vbRetry), le script se ré-exécute à partir de la 1ère ligne. Comment faire ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    ça dépend ce que vous voulez faire exactement
    Voici un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Message = MsgBox("Texte",vbRetryCancel+vbExclamation,"Titre")
    If Message = vbRetry Then 
        Call Main()
    Else
        wscript.Quit()
    end if
     
    Sub Main()
        wscript.echo "execution du script a nouveau"
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Merci pour ta réponse hackoofr.

    Mais le but n'est pas d'afficher "execution du script a nouveau", je voudrais que le script stoppe son exécution et se relance automatiquement.

  4. #4
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par zakake Voir le message
    Merci pour ta réponse hackoofr.

    Mais le but n'est pas d'afficher "execution du script a nouveau", je voudrais que le script stoppe son exécution et se relance automatiquement.
    Dans ce cas pouvez-vous nous poster le script en entier ?

  5. #5
    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
    .... je voudrais que le script stoppe son exécution et se relance automatiquement.
    Dans ce cas, il faudrait ajouter une temporisation pour l'arrêt et pour le relancement du script; Wscript restant en cours d'exécution(au risque de charger la mémoire et le CPU)
    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

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Merci pour vos réponses !

    En gros mon script demande à l'opérateur de sélectionner une plage de dates, et selon la plage de dates renseignée, il va vérifier si un certain fichier existe. Et si ce fichier n'existe pas, il avertit l'opérateur qu'il faut relancer le script en changeant la plage de dates. Je voudrais justement automatiser cette dernière action : au lieu d'afficher un message à l'opérateur disant de relancer le script et changer la plage de dates, je veux que le script avertisse l'opérateur via un message et ré-exécute automatiquement le script. L'opérateur sera alors de nouveau dans l'obligation de sélectionner une nouvelle plage de dates.

    Ça donne à peu près ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DateRange = InputBox("Renseignez la plage de dates :", "Plage de dates")
     
    Set System = CreateObject("Scripting.FileSystemObject")
     
    if DateRange <> CurrentWeek then  'CurrentWeek est aussi une plage de dates
    	if not System.FolderExists("chemin d'accès") then
    		Message = MsgBox "Le fichier n'existe pas. Selectionnez une autre plage de dates", vbRetryCancel + vbExclamation, "Fichier inexistant"
    		if Message = vbRetry then
                            ''''Ré-exécuter le script
                    end if         	
    	end if
    end if
    @l_autodidacte :

    Dans ce cas, il faudrait ajouter une temporisation pour l'arrêt et pour le relancement du script; Wscript restant en cours d'exécution(au risque de charger la mémoire et le CPU)
    Peux-tu développer un peu stp ?

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je répond à la question de façon simpliste

    Code vbs : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Msgbox("Relancer le script ?", vbYesNo, "test") = vbYes) Then CreateObject("WScript.Shell").Run(WScript.ScriptFullName)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Merciii ericlm128 !! C'est exactement ce que je cherchais !!

    JEDIT :

    J'ai crié victoire trop vite... :/

    Ce n'est pas exactement ce qu'il me faut puisque le script se relance bien à la 1ère ligne (comme je voulais), mais par contre l'exécution après la ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateObject("WScript.Shell").Run(WScript.ScriptFullName)
    se poursuit aussi !!!!

    Donc en gros j'ai le même script qui est exécuté 2 fois !!

  9. #9
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut
    Citation Envoyé par Aide en ligne pour VBScript
    Quit, méthode
    Force l'arrêt de l'exécution du script à tout moment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Msgbox("Relancer le script ?", vbYesNo, "test") = vbYes) Then CreateObject("WScript.Shell").Run(WScript.ScriptFullName): WScript.Quit
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    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
    Si j'ai bien compris, tu veux quelque chose comme ce
    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
    DateRange = InputBox("Renseignez la plage de dates :", "Plage de dates")
    If DateRange = "" Then Wscript.Quit 0
    CheminFichier = "C:\Temp\Test.txt" ' à modifier
    CurrentWeek = "15/08/2016:20/10/2016" ' un exemple que j'ai utilisé
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set WS = CreateObject("Wscript.Shell")
    ' A la 2ème exécution, il y a un message d'erreur : fichier introuvable => car il est ouvert par Wscript
    ' J'ai donc opté pour un fichier temporaire : tmpName
    tmpName = WS.ExpandEnvironmentStrings("%Temp%") & "\" & fso.GetBaseName(fso.GetTempName) & ".vbs"
    if DateRange <> CurrentWeek then  'CurrentWeek est aussi une plage de dates
        if not fso.FileExists(CheminFichier) then ' de quel fichier s'agit-il ici ?  que contient-il ? on y cherche une date ?....
            Message = MsgBox("Le fichier n'existe pas. Selectionnez une autre plage de dates", vbRetryCancel + vbExclamation, "Fichier inexistant")
            if Message = vbRetry then
                fso.CopyFile Wscript.ScriptFullName, tmpName
                WS.Run tmpName
            end if             
        end if
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 24/08/2012, 16h54
  2. [XL-2007] Exécution d'un script VBS à partir d'une macro
    Par spidey89 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/09/2010, 15h59
  3. Exécuter des commandes/scripts Unix à partir de VBA
    Par pressdell dans le forum Général VBA
    Réponses: 1
    Dernier message: 23/06/2010, 16h14
  4. Réponses: 7
    Dernier message: 12/06/2009, 16h13
  5. Exécution d'un script à partir de code java
    Par ridecat dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2008, 19h09

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