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
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    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 105
    Points : 16 627
    Points
    16 627
    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

  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
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 385
    Points : 249
    Points
    249
    Par défaut
    Bonjour
    bizarre les quotes situées après les "or"!

  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
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 385
    Points : 249
    Points
    249
    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".

  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
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 385
    Points : 249
    Points
    249
    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.

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    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

  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