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 :

Conditions dans une variable boucle if


Sujet :

VBScript

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut Conditions dans une variable boucle if
    Bonjour,

    J'ai ma condition qui est générée automatiquement, suite à la lecture d'un array.

    cond = "toto or titi or tata "

    Je souhaiterais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Name = cond Then
     wscript.echo super
    End If
    Mais ça ne fonctionne pas.

    Mes or ne semblent pas être interprétés ...

    Par contre si je fais un copier/coller ca fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Name =  toto or titi or tata Then
     wscript.echo super
    End If
    Comment faire svp sachant que mes conditions sont générées en passant des paramètres à mon script donc ça peux être variable ?

    cond = "toto "
    cond = "toto or titi"
    cond = "toto or titi or tata or tutu "

    Merci d'avance pour votre aide ...

  2. #2
    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 170
    Points
    17 170
    Par défaut
    Salut

    Peut être se moyen détourné
    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
    Dim Cond As String
    Dim Name As String
     
    Cond = "toto or titi or tata"
    Name = "titi"
     
    If InStr(1, Cond, Name) Then
        MsgBox " super"
        Else
        MsgBox "pas super"
    End If
     
    Name = "tutu"
    If InStr(1, Cond, Name) Then
        MsgBox " super"
        Else
        MsgBox "pas super"
    End If
    A condition que toto, titi et tata soient des valeurs de variables, non pas des noms de variables.

    Sinon, il faut que tu passes ces valeur de paramètre à ton script.
    Là tu pourrais utiliser 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Dim Cond
    Dim Name
     
    Dim Conds()
     
    Cond = "toto Or titi Or tata "
     
    Cond = Trim(Cond)
    Conds = Split(Cond, " ")
     
    Name = "titi"
    If Verif(Name, Conds) = True Then
        MsgBox " super"
        Else
        MsgBox "pas super"
    End If
     
    Name = "tutu"
    If Verif(Name, Conds) = True Then
        MsgBox " super"
        Else
        MsgBox "pas super"
    End If
     
     
    Function Verif(Nom, TblAcomparer)
    Dim T
    For T = 0 To UBound(TblAcomparer)
        If Nom = TblAcomparer(T) Then
            Verif = True
            Exit For
        End If
    Next T
    End Function
    ou j'ai rien compris
    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 ← ← 👈

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    hummmm, merci Francis mais non ca ne va pas aller en fait

    Voici le contexte exact :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BulletinTest = Array("KB1201","KB1202","KB999")
     
    For I = LBound(BulletinTest) to UBound(BulletinTest)
    	BulletinTestFilter = BulletinTestFilter & """" & BulletinTest(I) & """ or ""ListItem.LocalizedDisplayName = "
    Next
    BulletinTestFilter = Left(BulletinTestFilter,Len(BulletinTestFilter)-36) & ""
     
    wscript.echo BulletinTestFilter
    Ce qui va me donner :

    "KB1201" or "ListItem.LocalizedDisplayName = "KB1202" or "ListItem.LocalizedDisplayName = "KB999"
    Maintenant je voudrais integrer ces conditions dans ma boucle :

    Si je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If ListItem.LocalizedDisplayName = BulletinTestFilter Then
     
     'Traitement
     
    End If
    Ca ne fonctionne pas.

    Par contre si je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If ListItem.LocalizedDisplayName = "KB1201" or "ListItem.LocalizedDisplayName = "KB1202" or "ListItem.LocalizedDisplayName = "KB999" Then 
     
     'Traitement
     
    End If
    Ca fonctionne parfaitement.

    Mes "OR " dans BulletinTestFilter ne sont pas interpréts correctement.

    Merci d'avance pour ton aide

  4. #4
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 380
    Points : 247
    Points
    247
    Par défaut
    Bonjour
    bizarre les quotes situées après les "or"!
    Windows 10
    Microsoft Edge (64 bits)
    Google Chrome Version 67.0.3396.99 (Build officiel) (64 bits)

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    oui désolé, erreur de recopie.


    Normalement c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BulletinTestFilter = BulletinTestFilter & """" & BulletinTest(I) & """ or ListItem.LocalizedDisplayName = "
    Ce qui donne donne ca :

    "KB1201" or ListItem.LocalizedDisplayName = "KB1202" or ListItem.LocalizedDisplayName = "KB999"

  6. #6
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 380
    Points : 247
    Points
    247
    Par défaut
    si j'ai bien compris, à ta place je ferai une fonction dans laquelle il y-aurait une boucle à partir du tableau BulletinTest et positionnerais une variable booléenne
    qui indiquerait si on a trouvé ou non correspondance.
    Dans ce cas il n'y aura plus de "or".
    Windows 10
    Microsoft Edge (64 bits)
    Google Chrome Version 67.0.3396.99 (Build officiel) (64 bits)

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    Hum, oui ca fonctionnerait avec un bouleen mais je ne vois pas trop comment faire car mon Array n'a jamais la meme taille :

    Il peut etre :

    BulletinTest = Array("KB1201","KB1202","KB999")

    BulletinTest = Array("KB1201")

    BulletinTest = Array("KB1201","KB1202")

    BulletinTest = Array("KB1201","KB1202","KB999","X","X","X","X","X",)

    Si tu as une méthode je suis preneur

    Merci.

  8. #8
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 380
    Points : 247
    Points
    247
    Par défaut
    voila un bout de code pour faire le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     monbulletin = array(".....",".....", etc)
    dim critere
     
    resultat  =  trouve(monbulletin,critere)
     
    if resultat = true then x="oui" else x="non"
    msgbox "A-t'on trouvé correspondance ? " & x
     
    function trouve(tbl,z)
            for i=0 to ubound(tbl)
                    if  z=tbl(i) then trouve=true : exit for
            next
    end function
    j'ai pas testé, mais c'est dans l'esprit.
    Windows 10
    Microsoft Edge (64 bits)
    Google Chrome Version 67.0.3396.99 (Build officiel) (64 bits)

  9. #9
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    et sinon il y a la fonction Filter()
    télécharger et lire la doc : http://vb.developpez.com/faqvbs/?page=I#vbshelp
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  10. #10
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    Merci beaucoup, je vais tester ca.

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

Discussions similaires

  1. Condition dans une variable
    Par maf dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2013, 11h19
  2. Une condition dans une variable
    Par thebarbarius dans le forum Langage
    Réponses: 13
    Dernier message: 06/12/2010, 18h02
  3. Sommer avec conditions dans une variable
    Par nmicoud dans le forum iReport
    Réponses: 1
    Dernier message: 15/07/2009, 14h34
  4. Condition dans une variable
    Par nicoalafac dans le forum Langage
    Réponses: 5
    Dernier message: 12/03/2007, 14h49
  5. [FLASH MX2004] Deux conditions dans une boucle
    Par pierrot10 dans le forum Flash
    Réponses: 1
    Dernier message: 06/11/2005, 16h31

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