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 :

mémorisation d'une Listbox


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut mémorisation d'une Listbox
    Bonjour,

    voilà, je voudrais pourvoir "stocker" une Listbox entière dans une variable, pour pouvoir ensuite l'appeler plus tard dans une procédure. Est-ce possible ? (la listbox contient 2 colonnes).

    Est-il ossible de faire ceci ou alors faut-il "mémoriser" chaque entrée de la listbox pour pouvoir la recontruire ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Par défaut
    Bonjour,

    je dirais "Why not" dans un anglais impeccable : utilse un tableau à deux dimensions à mon avis

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    MmmmMmouiuiii ?

    Concrètement, puis-je stocker la List Box dans une variable et y faire appel ensuite ? du genre Listbox1 = Variable1 et ensuite l'appeler ? il faut pas spécifier qui est quoi ? parceque là, ca plante

    En gros j'ai une procédure qui génère une Listbox à la fin, avec 1 certain ordre dans les lignes. Cette procédure doit débuter par la lecture de la Listbox générée juste avant (en gros la Listbox 2 et générée en partant de la Listbox 1).

    je voudrais stocker cette Listbox dans une sorte de "variable"

  4. #4
    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
    Phase enregistrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim strTemp as string
    Dim iPnt as Integer
    strTemp=""
    For iPnt=0 to List1.ListCount-1
      strTemp= stTemp & List1.List(iPnt) & VbCrLf
    Next
    Phase Reconstitution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Tble as Variant
    Tble=Split(strTemp,VbCrLf)
    List1.Clear
    For iPnt=0 to Ubound(Tble)-1
     List1.Additem Tble(ipnt)
    Next

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    merci pour cette réponse Delbeke, mais pourrais tu me l'expliquer rapidement ? J'avoue être débutant en progra et j'ai beaucoup de mal (belle métaphore...) à comprendre ce que fait ta procédure.

    Merci encore pour ta patience

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Pourquoi donc! Il suffit de la 'pousser' directement en paramètre de ta procédure. Si tu veux en envoyer une copie plutôt que la procédure modifie ta listbox, tu spécifie 'ByVal' dans la définition de ta procédure. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub maProcédure(ByVal maListe As ListBox)
        ' le code de ma procédure
    End Sub
    Parcontre, si tu veux que ta ListBox soit modifiée via ta procédure, soit tu ne mets rien devant le nom de ton paramètre, soit tu mets 'ByRef' qui a le mérite d'être clair. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub maProcédure(maListe As ListBox)
        ' le code de ma procédure
    End Sub
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub maProcédure(ByRef maListe As ListBox)
        ' le code de ma procédure
    End Sub

  7. #7
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Tout à fais zazaraignée, c'est ce qu'on appel le passage de paramètre "par valeur" et le passage "par adresse".
    Petite explication pour Zimzimut :
    En gros lorsque ta liste s'appel ListBox1, ceci est une variable (ou plutot un pointeur qui pointe sur une zone mémoire). Donc tu peux créer un autre pointeur et lui demander de pointer au même endroit (passage par adresse = ByRef ou rien du tout). Le passage par valeur (ByVal) signifie que l'on ne fait passer que la valeur de la variable, on en fait donc une copie (nouvelle zone memoire avec un nouveau pointeur, il sagit donc d'une variable diférente), et lorsque l'on modifie la copie, l'originale ne bouge pas.
    J'espère avoir été clair dans mes explications
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  8. #8
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    Le brouillard se lèce mais il reste encore quelques gros nuages :p

    Voici le code de ma procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Ordrechapitres(Fichier As TextBox, testX As Object, nombre As String)
    Listchoix.ColumnWidths = 160 & ";" & 0
    If testX = True Then
        Listchoix.AddItem Fichier.Text
        Listchoix.List(Listchoix.ListCount - 1, 1) = nombre
    Else: For i = 0 To Listchoix.ListCount - 1
            If Listchoix.List(i, 1) = nombre Then
            a = i
            End If
          Next i
          Listchoix.RemoveItem (a)
    End If
    End Sub
    Cette procédure est "appelée" par une autre procédure (celle qui définit les valeurs des tests). Le résultat final est le remplissage de la Listchoix chaque fois qu'on vient cocher un des tests. Le truc qui m'interesse est de pouvoir "enregistrer" la Listchoix une fois qu'elle est générée, et, lorsque je relance la macro (il s'agot d'une macro sous Word), le programme va lire l'ancienne Listchoix et me la re-affiche telle quelle.

    Couic ! :p

  9. #9
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut
    Citation Envoyé par Zimzimut
    (belle métaphore...)
    Pléonasme plutôt ?
    ___________________________________________
    Bonjour,

    Tu pourrais aussi(comme toujours j'ai des idées "non communes"... mais bon "un clavier Azerty en vaut deux" ... ) stocker les élements de ta listbox dans une table access par exemple et de ce fait tu pourrais y acceder facilement...

    Cordialement

  10. #10
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    Humm il me semble qu'un pléonasme est une "redite", alors qu'une métaphore est l'ajout d'une nuance sur un état réel, non ? (j'ai beaucoup de mal = je suis complètement perdu ^^) Enfin bon ...

    Je suis preneur de toute idée, j'avoue que là je patauge ! Le stockage dans une table access se fait-il facilement ? jamais vu, jamais fait !


    PS : j'adore le " 1 clavier Azerty en vaut 2"

  11. #11
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut
    Citation Envoyé par Zimzimut
    Humm il me semble qu'un pléonasme est une "redite"
    Pour moi un débutant qui à du mal... on est carément dans le pléonasme
    Citation Envoyé par Zimzimut
    une métaphore est l'ajout d'une nuance sur un état réel
    Euphémisme...

    __________________________________

    Citation Envoyé par Zimzimut
    Le stockage dans une table access se fait-il facilement ?
    Disons que plus facilement c'est difficle !!
    Pour se faire il faut utiliser un ADODC. C'est un control que tu place sur ta feuille(qui est invisble souvent... ADODC1.Visible=False) et qui fait une liaison directe avec une base de données.

    Lorsque tu le pose il faut faire un clic droit dessus -> propriétés...

    Enfin je pourrais te détailler son fonctionnement mais je vais plutôt t'orienter vers ce tutoriel prévus à cet effet...
    tutoriel"]Pour la connexion:[/URL]
    La partie t'inteersasnt étant la "2.1 Connexion à une base de données Access sans DSN"
    Pour l'exploitation:
    Ne soit pas effrayé par le code, il est en fait facile à comprendre si tu y vas ligne par ligne...

    Cordialement

  12. #12
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    Alors alors ^^

    Pour les solutions de Zaza et autres, le problème est que je dois déclarer la list en tant que variable de document, et là, BV aime pas du tout (problème de format entre autre).

    Pour la Praline : c'est le matin, j'ai rarement les yeux en face des trous et souvent le cerveau endormi, donc je m'auto-excuse la confusion métaphore/euphémisme/pléonasme :p

    Sinon, pour la solution avec Access, le problème est que la macro que je dois faire doit être la plus light possible en ce qui concerne l'utilisation de logiciels annexes. En gros, il faut qu'une personne ayant seulement Word puisse l'utiliser. Oui, je sais, je suis chiant, mais mon cahier des charges est vraiment, vraiment, très pénible :p C'est pas ma faute!!

  13. #13
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut
    hihi et là où tu vas sauter de joie c'est que tu peux utiliser une base de données Access avec la méthode que je t'ai donnée sans avoir avoir Access...

    Le seul "hic" c'est que tu ne pourra consulter cette base de données que si tu le fait à travers VB(dans un datagrid...)...

    Mais sinon ca marche...
    avec une connexion ODBC...

  14. #14
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    je l'aurai un jour, je l'aurai...

  15. #15
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut
    loooooool

  16. #16
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Citation Envoyé par Zimzimut
    Concrètement, puis-je stocker la List Box dans une variable et y faire appel ensuite ?
    Une variable tableau?

  17. #17
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    Oui, une variable qui serait ma Listbox avec toutes les infos contenues à l'intérieur !

  18. #18
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    mais, c'est que ca fonctionne ! merci les gens

  19. #19
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut
    Attends !!! Par pas comme ça !!!

    C'est quoi qui marche ?! Fait péter le code si il n'est déjà pas là(auquel cas précise où il se trouve...) et n'oublie pas de tagger la discussion comme étant si ce n'est déjà pas fait


    Bonne continuation

  20. #20
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Par défaut
    MaieuUu !

    Pour la solution, j'ai complètement contourné le problème en modifiant ma procédure... Oui je sais, c'est lache, mais au moins, j'arrive presque à comprendre ce que j'ai écrit ^^

    Dernier truc pour que ce code là fonctionne : j'ai posé une nouvelle question sur le forum (listing des sous-dossier d'un dossier), et ca marchera impec !

    je posterai le code à la suite de ceci quand il sera pil poil tout beau tout chaud ! et j'avais déjà mis le tag "résolu" !


+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [C#]Sauvegarde d'une selection multiple d'une listbox?
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2004, 17h16
  2. [struts] mémorisation d'une checkbox avec cookie
    Par rocco dans le forum Struts 1
    Réponses: 3
    Dernier message: 22/04/2004, 12h39
  3. Réponses: 3
    Dernier message: 25/03/2004, 11h35
  4. [debutant][servlet]erreur causée par une listBox
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/03/2004, 10h53
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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