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

VB 6 et antérieur Discussion :

Créer une collection de référence


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Par défaut Créer une collection de référence
    Bonjour,

    J'ai une liste de répertoire dont le nom est connu . J'aimerais savoir si un nom quelconque fait partie de cette liste.

    J'aimerais éviter d'utiliser un select case qui m'obligerait à réécrire la liste des répertoires connus un peu partout.

    J'ai essayé d'utiliser un enum mais à priori cela ne semble pas correspondre à mon besoin.

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Tout depend de ta façon de stocker cette liste en mémoire, et ma boule de cristal est en réparation...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Par défaut
    Justement c'est ce que je cherche : comment stocker cette liste en mémoire pour que je puisse faire des tests d'appartenance dedans.
    L'idée étant de ne pas avoir à parcourir la liste à chaque fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if repertoire in liste_rep then
     ...
    Pour le moment je rentre mes noms de répertoire comme des string mais je suis ouvert aux suggestions

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    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 132
    Par défaut
    Pour créer la liste, fabriquer un fichier txt, que j’ai nommé MesRepertoires il contiendra la liste de répertoire dont le nom est connu.
    C’est a ce moment que l’on est obligé de passer par une boucle, par contre plus tard, au moment du besoin de vérification, pas de bouclage.
    Sur un Form, un TextBox. et 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
    'contiendra tout les non de repertoire connues
    'ce trouvant dans le fichier "MesRepertoires.txt"
    Dim MeLstRep As New Collection
     
    Private Sub Form_Load()
    Dim CheminNomFichier As String
    Dim NumFich As Integer
    Dim T As Integer
    Dim MsgTxt As String 'recuperation global des repertoire depuis le fichier .txt
    Dim TblMsgTxt() As String 'tableau intermediaire
     
    'contenu type du fichier adapté à mon cas perso
    'C:\essais VB6,C:\Dossier pour images divers,A:\FormulsXls,repertoire4,C:\WINNT
    CheminNomFichier = "C:/MesRepertoires.txt" 'a adapter pour ton propre chemin
    NumFich = FreeFile
    'recuperation global
    Open CheminNomFichier For Input As #NumFich
    MsgTxt = Input(FileLen(CheminNomFichier), NumFich)
    Close #NumFich
    If MsgTxt = "" Then
     MsgBox "le fichier est vide", vbCritical
     Unload Me
    End If
    'recuperation detailée
    TblMsgTxt = Split(MsgTxt, ",", , vbTextCompare)
    'remplissage de la collection, boucle OUI, mais une seul fois
    For T = 0 To UBound(TblMsgTxt)
    MeLstRep.Add T, TblMsgTxt(T)
    Next T
    End Sub
     
    Private Sub Text1_KeyPress(KeyAscii As Integer)
    'exemple d'utilisation
    If KeyAscii = 13 Then
     If VerifList(MeLstRep, Text1.Text) Then
      MsgBox Text1.Text & " existe bien dans ma liste, index: " & MeLstRep.Item(Text1.Text)
      Else
      MsgBox Text1.Text & " n'existe pas dans ma liste"
     End If
    End If
    End Sub
    Public Function VerifList(Lst As Collection, RechRep As String) As Boolean
    'recherche sans bouclage de la liste, mais par le .Key de la collection
    On Error Resume Next
    VerifList = Not IsError(Lst.Item(RechRep))
    If Err Then Err.Clear
    End Function
    :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 ← ← 👈

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Par défaut
    Excellent merci beaucoup

    J'ai mis un peu de temps à piger toutes les lignes mais j'ai fini par réussir.
    J'aurais mis un paquet de temps pour penser à utiliser le message d'erreur pour la collection, subtil

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    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 132
    Par défaut
    Citation Envoyé par Remi_Simon Voir le message
    ...
    J'aurais mis un paquet de temps pour penser à utiliser le message d'erreur pour la collection, subtil
    Malheureusement j'aimerai bien me passer de cette subtilité, une gestion d'erreur, quand on peut l'éviter et toujours préférable, mais enfin .... si quelqu'un veut proposer autre chose ...
    :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 ← ← 👈

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

Discussions similaires

  1. Créer une collection dynamique
    Par Lucorah dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 10/05/2010, 09h26
  2. [WSS3]Impossible de créer une collection
    Par viankukai dans le forum SharePoint
    Réponses: 6
    Dernier message: 13/03/2009, 10h28
  3. Comment créer une collection d'objet ?
    Par ced600 dans le forum VBScript
    Réponses: 3
    Dernier message: 11/09/2006, 10h48
  4. Réponses: 3
    Dernier message: 01/08/2006, 08h35
  5. Réponses: 2
    Dernier message: 27/04/2006, 16h50

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