Ajout de texte à une listbox [Résolu/Fermé]

Signaler
Messages postés
13
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
8 août 2014
-
Messages postés
13
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
8 août 2014
-
Bonjour,

Je développe en ce moment un outil de recherche dans une base de données cadastrales. J'effectue une recherche de parcelle à partir du numéro de commune, section et parcelle dans une table de 167000 lignes, sur 162 champs de parcelles (rien que ça). Afin de simplifier la recherche, j'ai concaténé ces 162 champs en un seul. J'ai une requête qui m'obtient bien le résultat souhaité, résultats qui s'affichent dans des textbox créées avec l'assistant de formulaire.

Je souhaite ensuite utiliser ce résultat pour le re-séparer en numéros de parcelles distincts (tous constitués de la même façon : AA0000) à afficher dans une liste déroulante pour le rendre plus lisible. (une liste de 162 parcelles AA0000AA0000AA0000, etc. est peu lisible, et je dois être très user friendly)

J'ai tenté le code suivant (qui marche dans un exemple basique fait à côté mais pas dans mon cas) :

For i = 1 To Len(Form_Recherche_Resultat.Txtb_Num_Parc_Total.Value) Step 6
Num_Parc_Total = Mid(Form_Recherche_Resultat.Txtb_Num_Parc_Total.Value, i, 6)
Total = Num_Parc_Total & ";"
Listd_Parc_M.RowSourceType = "value list"
Listd_Parc_M.AddItem (Total)
Next i

Je dois également récupérer la ligne précédente ou suivante de la table cadastrale en fonction du type de parcelle. Là aussi, j'ai une requête qui fonctionne (test sur le type et recherche du numéro précédent ou suivant grâce à la clef primaire) mais ne parviens pas à récupérer le résultat (qui subira la même transformation que le résultat de la requête précédente).

Pouvez vous m'aider ?

4 réponses

Messages postés
16376
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
25 janvier 2021
3 119
Bonjour
Quel logiciel: Excel, Access .....?
Vb, VBa, vbxxxx, vb.net .....?

Le mieux serait lorsque tu exécute ta concaténation de séparer les parcelles par un espace (ce serait déjà + lisible)

tu aurais alors
AA0000 AA0000 AA0000 etc.
T_parcel=split(talisteconcaténée," ")

ensuite pour talistbox
for cptr=0 to Ubound(T_parcel)-1
talistbox.additem T_parcel(cptr)

next
Messages postés
13
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
8 août 2014

Merci pour cette réponse rapide !

Ah, pardon pour le logiciel, j'utilise Access 2003 et VBA.

Je vais essayer ça, je te tiens au courant.
Messages postés
13
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
8 août 2014

J'ai essayé de reconcaténer mes 162 champs avec un séparateur, mais il semblerait que ce soit une opération trop lourde pour l'ordinateur dont je dispose.
Je vais réessayer ce soir depuis mon ordinateur personnel, mais je doute que le résultat soit satisfaisant.

Y a-t-il une autre solution possible ?
Messages postés
13
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
8 août 2014

En utilisant un ordinateur puissant, et avec beaucoup de patience, je suis parvenue à reconcaténer ma base de données. C'est une opération lourde qui devra être reproduite par la suite (mises à jours successives de la base de données) et ce serait bien d'avoir une solution un peu moins gourmande. Si quelqu'un a une idée...

Sinon, pour l'application du code, tout s'est très bien passé ensuite et ça fonctionne. =) Merci !
Messages postés
13
Date d'inscription
lundi 7 juillet 2014
Statut
Membre
Dernière intervention
8 août 2014

Après plusieurs tests, on préfèrera :

for cptr=0 to Ubound(T_parcel)
talistbox.additem T_parcel(cptr)
next

Sinon, on omet un enregistrement.