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 :

definir l'index d'un array pour variable


Sujet :

VBScript

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Par défaut definir l'index d'un array pour variable
    Bonjour,

    tous d'abord je ne suis pas un développeur donc pardon pour le code pas très pro que je peux proposer.

    Voici ce que je cherche à faire:
    le but est de parcourir des fichiers textes et d'en extraire des informations suivant une chaine de caractères connue.

    Mais cette chaine de caractères connue peux être à différent endroit suivant les fichiers parcourus.


    Voici mon code pour le moment
    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
     
    'on reccuperes les informations des fichiers textes localisés dans un repertoire
    MYKEYWORD = “ VALUE”
    VARPATH = “BLABLABLA”
     
    CONST FORREADING = 1 
     
    SET OBJFSO = CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT")
     
    OBJSTARTFOLDER = VARPATH
     
    SET OBJFOLDER = OBJFSO.GETFOLDER(OBJSTARTFOLDER)
     
    SET COLFILES = OBJFOLDER.FILES
    ' parcourir tous les fichiers textes
    FOR EACH OBJFILE IN COLFILES
     
    FNAME=LCASE(OBJFILE.NAME)  
    'ouvrir seulement les fichiers comportant MYKEYWORD dans le nom
    IF LEFT(FNAME,6)= MYKEYWORD THEN
     
    STRFILENAME = OBJFILE.NAME
    SET OBJFILE = OBJFSO.OPENTEXTFILE(STRFILENAME, FORREADING)
    'tous les informations du fichiers sont stocké dans une chaine
    STRWORDLIST = OBJFILE.READALL
    OBJFILE.CLOSE
    Ensuite je recherche ma valeur connue apres avoir créer le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     'création d'un tableau avec l'espace comme séparateur
    STRSTARTER = STRWORDLIST
    INTSTARTER = LEN(STRSTARTER)
    FOR I = INTSTARTER TO 2 STEP -1
        STRCHARS = SPACE(I)
        STRSTARTER = REPLACE(STRSTARTER, STRCHARS, " ")
    NEXT
     
    ARRSTARTER = SPLIT(STRSTARTER, " ")
    'affiche la valeur a l'index 18
    WSCRIPT.ECHO ARRSTARTER(18)
    End If
    Next
    Avec ce tableau j'obtiens une valeur mais vu que l'index est statique (18) pour cet exemple, dans un fichier j'obtiens la valeurs souhaité dans un autre ca ne l'est pas.

    Ce que je recherche c'est d'identifier le numéro qui sert d'index à ma valeur de recherche la transformer en variable "a" par exemple.
    Afin que la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSCRIPT.ECHO ARRSTARTER(18)
    devienne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSCRIPT.ECHO ARRSTARTER(a)
    Cela me permettra de ressortir les valeurs atour de celle-ci avec a+1 ou a+... ou a-1 ou a-...

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    La fonction Instr() devrait résoudre ton probléme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Analyse "pour faire un essai","pour"
    Analyse "Le mot recherché peut être a un endroit différent, pour exemple","pour"
    Analyse "pour faire un essai","pas"
     
    public sub Analyse(LeTexte,Rechercher)
    if instr(LeTexte,Rechercher) then
     msgbox "trouvé position :" & instr(LeTexte,Rechercher)
     else
     msgbox "le mot ''" & rechercher & "'' est introuvable dans le texte"
    end if
    end sub
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    La fonction Instr() devrait résoudre ton probléme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Analyse "pour faire un essai","pour"
    Analyse "Le mot recherché peut être a un endroit différent, pour exemple","pour"
    Analyse "pour faire un essai","pas"
     
    public sub Analyse(LeTexte,Rechercher)
    if instr(LeTexte,Rechercher) then
     msgbox "trouvé position :" & instr(LeTexte,Rechercher)
     else
     msgbox "le mot ''" & rechercher & "'' est introuvable dans le texte"
    end if
    end sub
    Citation Envoyé par ProgElecT Voir le message
    La fonction Instr() devrait résoudre ton probléme
    Merci pour l'exemple mais en fait j'ai splitté la chaine en array car ce qui m'importe est ce qu'il y a derrière ma recherche et les informations peuvent avoir des longueur variables.

    Donc c'est plus facile de travailler avec des array plutôt qu'une chaine de caractères?

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Je suis d’accord avec toi, le splitage est plus rapide, mais tu vas perdre du temps à rechercher quel array contient la chaine connue, non ?

    Un dernier exemple, pas forcement fonctionnel pour ton cas, toi seul connais le contenu du texte et les délimiteurs utilisables
    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
    msgbox Analyse1("pour faire un essai","pour")
    msgbox Analyse1("Le mot recherché peut être a un endroit différent, pour exemple","pour")
    msgbox Analyse1("pour faire un essai","pas")
     
    'si un mot connue suit le texte à recuperer
    msgbox Analyse2("pour faire un essai, comme çà, avec une fin connue","pour","connue")
    msgbox Analyse2("Le mot recherché peut être a un autre endroit, encor un exemple différent.","endroit","différent")
    msgbox Analyse2("pour faire un essai","pas","de mot trouvé.")
     
     
    function Analyse1(LeTexte,Rechercher)
    if instr(LeTexte,Rechercher) then
     Analyse1 = mid(LeTexte,(instr(LeTexte,Rechercher)+ len(rechercher)+ 1), len(letexte))
     else
     Analyse1 = ""
    end if
    end function
     
    function Analyse2(LeTexte,Rechercher,TextFin)
    dim Deb, Fin
     
    Deb=instr(LeTexte,Rechercher)
    if Deb <> 0 then
     Deb = Deb + len(rechercher)+ 1
     Fin = instr(DeB,LeTexte,TextFin)
     if Fin <> 0 then
      Analyse2 = mid(LeTexte,DeB, Fin)
      else
      Analyse2 = mid(LeTexte,DeB, len(letexte))
     end if
     else
     Analyse2 = ""
    end if
    end function
    Bonne continuation.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. [XL-2010] Definir l'index d'une combobox comme une variable
    Par TonyRc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2013, 10h55
  2. [PHP 5.3] Récupérer tous les index d'un array dans une variable
    Par BLJ.CHAUVIN dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2011, 16h36
  3. contenu ARRAY dans variable pour passage dans URL
    Par nicomax34 dans le forum Langage
    Réponses: 11
    Dernier message: 23/02/2011, 00h06
  4. Array à valeur variables
    Par klipfel dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/12/2004, 16h22
  5. [SQLClientDataSet] comment definir un index ?
    Par kase74 dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/09/2004, 14h14

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