Ajout de texte à une listbox

Résolu/Fermé
CatBat Messages postés 13 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 8 août 2014 - 7 juil. 2014 à 05:48
CatBat Messages postés 13 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 8 août 2014 - 8 juil. 2014 à 09:46
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

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
7 juil. 2014 à 06:51
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
0
CatBat Messages postés 13 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 8 août 2014
7 juil. 2014 à 07:01
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.
0
CatBat Messages postés 13 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 8 août 2014
7 juil. 2014 à 08:46
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 ?
0
CatBat Messages postés 13 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 8 août 2014
8 juil. 2014 à 06:26
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 !
0
CatBat Messages postés 13 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 8 août 2014
8 juil. 2014 à 09:46
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.
0