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 :

retour boucle si variable vide


Sujet :

VBScript

  1. #1
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut retour boucle si variable vide
    Bonjour, j'ai un script pour selectionner un répertoire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Const BIF_EDITBOX = &H10 
    Const BIF_NEWDIALOGSTYLE = &H40 
    Set sa = CreateObject("Shell.Application") 
    Set Folder = sa.BrowseForFolder(0, "My Computer:", BIF_EDITBOX Or BIF_NEWDIALOGSTYLE) 
    BrowseAndCreate = Folder.items.Item.Path
    Je voudrai que si l'utlisateur ne selectionne pas de répertoire la fenêtre se réouvre, j'ai essayer comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sub boucle1
     
    Const BIF_EDITBOX = &H10 
    Const BIF_NEWDIALOGSTYLE = &H40 
    Set sa = CreateObject("Shell.Application") 
    Set Folder = sa.BrowseForFolder(0, "My Computer:", BIF_EDITBOX Or BIF_NEWDIALOGSTYLE) 
    if Folder.items.Item.Path = "" then boucle1 
     
    BrowseAndCreate = Folder.items.Item.Path 
     
    end sub
    mais ca ne fonctionne pas, sauriez vous m'aider ?

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    passe ton sub en function qui renvois le path.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    je ne comprend pas

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par koKoTis Voir le message
    je ne comprend pas
    Bah plutot qu'utiliser un sub fait une fonction. Celle-ci te permet de renvoyer une valeur à la fin de son exécution.
    renvois le path comme valeur.

    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Folder.items.Item.Path = "" then boucle1 
     
    BrowseAndCreate = Folder.items.Item.Path
    Deviendra un truc comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Folder.items.Item.Path = "" then
     
    BrowseAndCreate = boucle1
    et tu finis la fonction par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boucle1 = BrowseAndCreate
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    je ne sais pas ou placer les ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Const BIF_EDITBOX = &H10 
    Const BIF_NEWDIALOGSTYLE = &H40 
    Set sa = CreateObject("Shell.Application") 
    Set Folder = sa.BrowseForFolder(0, "My Computer:", BIF_EDITBOX Or BIF_NEWDIALOGSTYLE) 
    BrowseAndCreate = Folder.items.Item.Path 
     
    if Folder.items.Item.Path = "" then
     
    BrowseAndCreate = boucle1
     
    boucle1 = BrowseAndCreate

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set sa = CreateObject("Shell.Application")
    Function boucle1 (sa)
       Const BIF_EDITBOX = &H10 
       Const BIF_NEWDIALOGSTYLE = &H40  
       Set Folder = sa.BrowseForFolder(0, "My Computer:", BIF_EDITBOX Or BIF_NEWDIALOGSTYLE) 
       If Folder.items.Item.Path = "" Then
          BrowseAndCreate = boucle1 (sa)
       End If
       boucle1 = BrowseAndCreate 
    End Function
    ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    comme ca le script ne fait rien du tout

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    heu oui faut appeler la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim retour
    Set sa = CreateObject("Shell.Application")
    retour = boucle1(sa)
    wscript.echo retour
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    ca ne fonctionne pas:
    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
    dim retour
    Set sa = CreateObject("Shell.Application")
    retour = boucle1(sa)
    wscript.echo retour
     
    Set sa = CreateObject("Shell.Application")
    Function boucle1 (sa)
       Const BIF_EDITBOX = &H10 
       Const BIF_NEWDIALOGSTYLE = &H40  
       Set Folder = sa.BrowseForFolder(0, "My Computer:", BIF_EDITBOX Or BIF_NEWDIALOGSTYLE) 
       If Folder.items.Item.Path = "" Then
          BrowseAndCreate = boucle1 (sa)
       End If
       boucle1 = BrowseAndCreate 
    End Function

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bon grâce à notre bel ami (je sais suis pas drôle), j'ai trouvé comment faire ce que tu souhaites :
    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
    dim retour
    Set sa = CreateObject("Shell.Application")
    retour = boucle1(sa)
    wscript.echo retour
     
    Function boucle1 (sa)
    	Dim Folder
    	Const BIF_EDITBOX = &H10 
    	Const BIF_NEWDIALOGSTYLE = &H40  
    	Set Folder = sa.BrowseForFolder(0, "My Computer:", BIF_EDITBOX Or BIF_NEWDIALOGSTYLE)
    	If not IsValue(Folder) Then
    		BrowseAndCreate = boucle1 (sa)
    	Else
    		BrowseAndCreate = Folder.items.Item.Path
    	End If
    	boucle1 = BrowseAndCreate
    End Function
     
    Function IsValue(obj)
    	Dim tmp
    	On Error Resume Next
    	tmp = " " & obj
    	If Err <> 0 Then
    		IsValue = False
    	Else
    		IsValue = True
    	End If
    	On Error GoTo 0
    End Function
    Je ne suis pas fan de sa fonction IsValue, mais s'il a fait ainsi il est possible que je me casse les dents en tentant de faire autrement.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  11. #11
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    ben alor merci a notre bel ami, est a toi aussi

    c'est parfait

  12. #12
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    saurait tu faire la même chose avec ce code je n'y arrive pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set objDialog = CreateObject("SafrcFileDlg.FileOpen") 
    objDialog.OpenFileOpenDlg 
    wscript.echo objDialog.FileName

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

Discussions similaires

  1. Boucle avec chaine vide : je comprends pas
    Par Zapan dans le forum Langage
    Réponses: 8
    Dernier message: 14/02/2007, 17h27
  2. Faire une boucle avec des variables vides ?
    Par byloute dans le forum Linux
    Réponses: 5
    Dernier message: 23/02/2006, 09h33
  3. Réponses: 4
    Dernier message: 16/02/2006, 10h40
  4. Variable vide?
    Par LordBob dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/02/2006, 16h23
  5. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07

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