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 :

Trouver une valeur dans un tableau


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Trouver une valeur dans un tableau
    Bonjour a tous !

    Voilà je suis débutante en VBS et je cherche comment chercher une valeur dans un tableau ... si il trouve on affiche 1 sinon zéro ...
    Mon exemple: je dois chercher dans l'observateur d'évenement si une erreur existe ...
    Pour ne pas afficher a chaque fois 0 ou 1 (sinon on en fini plus), j'ai mis ses valeurs dans un tableau et je veux que si il trouve un 1 dans le tableau ça lui dit qu'il a trouver ... (j'espere que vous avez tous compris mon français xD)

    Voilà mon code :
    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
     
    Set objWMIServices = GetObject _
    ("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
     
    Set objWMIObjectSet = objWMIServices.ExecQuery _
    ("Select * from Win32_NTLogEvent Where LogFile='Application'")
     
    dim  tablo(20)
     
     
    source_choisie="Microsoft-Windows-Folder Redirection"
    erreur_choisie=510
                  i=1
     
    For Each objWMIObject In objWMIObjectSet
     
                      lasource = objWMIObject.SourceName
                       lerreur = objWMIObject.EventCode
     
            If (erreur_choisie = lerreur) and (source_choisie = lasource) Then
             tablo(i)="1"
             Else
             tablo(i)="0"
            End if
     
            wscript.echo tablo(i)
     
      i=i+1
    Next
    Merci d'avance pour votre aide

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Bonjour,

    Essayes ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cpt = 0
    For i = 0 to Ubound(tablo)
       If tablo(i)="1" Then
         Msgbox("Trouvé")
         cpt = cpt + 1
       End If
    Next
    MsgBox(cpt)
    C'est basique mais ça devrait fonctionner.
    cpt te permet de compter combien de fois "1" est présent dans le tableau.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci Voilà mon code final :

    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
     
    Set objWMIServices = GetObject _
    ("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
     
    Set objWMIObjectSet = objWMIServices.ExecQuery _
    ("Select * from Win32_NTLogEvent Where LogFile='Application'")
     
    source_choisie="Outlook"
    erreur_choisie=45
     
    evenement=0
     
            For Each objWMIObject In objWMIObjectSet
     
                      lasource = objWMIObject.SourceName
                       lerreur = objWMIObject.EventCode
     
                    If (erreur_choisie = lerreur) and (source_choisie = lasource) Then
                            trouve="1"
                            Exit For
                     End if
     
            Next
     
       If trouve="1" Then
         Msgbox("Trouvé")
       else
            Msgbox("Non trouvé")
       End If
    Tout ça, ça marche...

    Le seul dernier petit problème, c'est que des fois la source que l'observateur d'évenement affiche, n'est pas exactement la meme que celle du système

    Ex :
    Source affiché : LoadPerf
    Source réelle : Microsoft-LoadPerf

    (et ce n'est pas toujours "Microsoft-" ...)

    Donc ma question est :
    est ce qu'on peut trouver en vbscript une partie d'un mot ?
    si l'utilisateur entre "LoadPerf", il faut que ça lui trouve "Microsoft-LoadPerf"

  4. #4
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Si je comprends bien, tu communiques avec un utilisateur via une InputBox ou autre et tu souhaites que s'il écrit LoadPerf toi tu es Microsoft-LoadPerf.

    C'est cela ?

    Pour réaliser ceci, utilises ta variable de récupération de saisie utilisateur.
    Pour l'exemple, je l'appelle Remplacement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Remplacement="LoadPerf" Then
    	Remplacement="Microsoft-LoadPerf"
    End If
    Si je n'ai pas compris ta requête, sois plus précise

    EDIT : Je pense que tu souhaites plutôt cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set objRegex = new RegExp
    objRegex.Pattern = "(.w*)*LoadPerf$"
    objRegex.IgnoreCase = True
    A tester, cela permet de retrouver un mot contenant LoadPerf à la fin. Au début, Il peut y avoir n'importe quoi.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Si je comprends bien, tu communiques avec un utilisateur via une InputBox ou autre et tu souhaites que s'il écrit LoadPerf toi tu es Microsoft-LoadPerf.

    Oui tu as bien compris sauf que le problème c'est que "LoadPerf" n'était qu"un simple exemple ... Donc le code avec le if, je pense qu'il est peut approprié, car des sources d'évenement, il y en a beaucoup !

    Ensuite pour le deuxième code que tu m'a passé ça a l'air bien mais
    si ce n'est pas LoadPerf quest ce que ça donne ? Utilisation d'une variable ?
    et si tu veux LoadPerf au milieu par exemple ?
    et pour finir est ce que tu peux m'expliquer en gros ses lignes de code car je ne comprend pas trop ...

    En tout cas merci pour ton aide c'est super sympa

  6. #6
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Bonjour,

    Vu que LoadPerf était un exemple,il est bien sûr possible de faire la recherche avec une variable que tu auras spécifier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set objRegex = new RegExp
    objRegex.Pattern = "(.w*)*LoadPerf$"
    objRegex.IgnoreCase = True
    Ces lignes de code déclarent une expression régulière (première ligne), spécifient le motif à rechercher (2ème ligne) et ignorent la casse (utilisation des majuscules : 3eme ligne).

    Pour spécifier une variable, il faut modifier le motif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objRegex.Pattern = "(.w*)*"&TaVariable&"$"
    Ici, tu as donc une variable nommée pour l'exemple TaVariable.

    Pour faire une recherche avec ceci, il faut chercher les correspondances.
    Deux solutions s'offrent à toi :
    - objRegex.Test(parametre) qui renvoit un booléen (true ou false : true si correspondance)
    - objRegex.Execute(parametre) qui renvoit un tableau si les correspondances sont multiples (exemple avec le motif précédent : correspondance avec Microsoft-LoadPerf et Applicationloadperf par exemple)
    Avec cette méthode, tu dois récupérer toutes les correspondances avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set correspondances = objRegex.Execute(parametre)
    For Each correspondance in correspondances  
    Msgbox correspondance.Value, 0, "Found Match"
    Next
    Ensuite, pour TaVariable au milieu, hum, je dirais ceci pour le motif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objRegex.Pattern = "(.w*)*"&TaVariable&"(.w*)*"
    A tester

    La variable parametre doit être une chaîne de caractères (string) et correspond dans ton cas à la variable contenant la saisie de l'utilisateur.

    En espérant que cela sois plus clair pour toi

Discussions similaires

  1. [Toutes versions] Trouver l'adresse d'une valeur dans un tableau
    Par accarien dans le forum Excel
    Réponses: 3
    Dernier message: 12/08/2015, 14h50
  2. Réponses: 2
    Dernier message: 17/12/2012, 17h42
  3. Réponses: 2
    Dernier message: 18/11/2012, 11h25
  4. Comment trouver une valeur dans un tableau ?
    Par wizou44 dans le forum Excel
    Réponses: 20
    Dernier message: 29/08/2008, 10h57
  5. Réponses: 21
    Dernier message: 28/02/2006, 15h23

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