× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 Problème Listbox.count dans VBA accessSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Porruak
  Posté le 22/03/2012 @ 09:56 
Aller en bas de la page 
Petit astucien

Bonjour,

J'utilise une macro dans un projet Access 2010 dans laquel je compte le nombre item sélectionner dans une listbox (et accessoirement) je récupère les valeurs. Mais ma macro fonctionne une fois deux (voir moins ). Aprés analyse, le problème viendrais de ce décompte qui est nul quelque soit le nombre d'éléménts sélectionnés dans la listebox.

Pour info, ci dessous le bout de code:

Dim VarLr As Variant tmp_var = Me.txtProjet.ItemsSelected.Count -> Compte nul dans 80% des tentatives For Each VarLr In Me.txtProjet.ItemsSelected -> Procédure qui ne se lance pas si compte nul
If TmpVar_Proj <> "" Then TmpVar_Proj = TmpVar_Proj & " / "
TmpVar_Proj = TmpVar_Proj & Me.txtProjet.Column(2, VarLr)
Next VarLr

Ma question est donc pourquoi le compte ne fonctionne pas à tout les essais et y a t'il un moyen pour que ca fonctionne à chaque fois que je lance la macro ???

Merci pour votre aide

Publicité
Porruak
 Posté le 22/03/2012 à 12:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Y a quelqu'un????

aeronav1
 Posté le 23/03/2012 à 08:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

1.- Si la variable tmp_var est nulle alors qu'il y a des items sélectionnés dans la ListBox, je suis incompétent. Bien vérifier en mettant un espion sur tmp_var.

2.- Pour que la procédure ne crée pas d'erreur, mettre une instruction du genre If tmp_var >0 Then ...(si tmp_var a été déclaré Long ou Integer) quelque part

Je serai incapable d'aller plus loin

Bonne journée

Porruak
 Posté le 23/03/2012 à 08:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

1.- Si la variable tmp_var est nulle alors qu'il y a des items sélectionnés dans la ListBox, je suis incompétent. Bien vérifier en mettant un espion sur tmp_var.

La variable tmp_var est effectivement nulle dans 80% des tentatives alors que des tiems sont sélectionnés dans la ListBox (je précise que dans les 20% des cas où la variable n'est pas nulle je ne change absolument rien au niveau de la ListBox (Aucune action d'aucune sorte)). Avec l'espion, la valeur de la variable est nulle en revanche en éxecution pas à pas je peux vérifier le décompte de mon controle et il n'est pas nulle.

2.- Pour que la procédure ne crée pas d'erreur, mettre une instruction du genre If tmp_var >0 Then ...(si tmp_var a été déclaré Long ou Integer) quelque part

La procédure ne génère pas d'erreur, elle ne permet pas de récupérer les valeurs des items sélectionnés. Où veux tu en venir avec l'expression "If tmp_var > 0 Then" ???

Ci-joint le bloc complet du code que j'utilise (je fais déjà un test pour vérifier si je dois ou non regarder dans la listbox:

If Not (IsNull(Me.txtProjet)) Then
Dim VarLr As Variant
tmp_var = Me.txtProjet.ItemsSelected.Count 'Variable espion
For Each VarLr In Me.txtProjet.ItemsSelected
If TmpVar_Proj <> "" Then TmpVar_Proj = TmpVar_Proj & " / "
TmpVar_Proj = TmpVar_Proj & Me.txtProjet.Column(2, VarLr)
Next VarLr
For i = 1 To tmp_var
If TmpVar_Proj <> "" Then TmpVar_Proj = TmpVar_Proj & " / "
TmpVar_Proj = TmpVar_Proj & Me.txtProjet.Column(2, i)
Next i
If TmpVar_Proj <> "" Then Var_Proj2 = Var_Proj & TmpVar_Proj

End If

aeronav1
 Posté le 23/03/2012 à 17:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

1.- l'os doit se trouver là. C'est d'autant plus curieux que la variable espion peut être nulle alors qu'il y a une sélection.

2.- L'ajout d'un If tmp-var >0 Then... n'était destiné qu'à empêcher une éventuelle erreur, mais comme il ne s'en produit pas...

Ma science est épuisée, navré de pas pouvoir être utile.

Porruak
 Posté le 26/03/2012 à 09:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Après analyse et de multiple recherche, j'ai pu identifier plus précisément le problème.
Lorsque je lance la macro et que par l'intermédiaire d'une pause je vais fouiner dans les variables locales pour rechercher la valeur du décompte de ma listbox, comme par magie la procédure se met à jour et fonctionne parfaitement.

De plus, j'ai ajouté un test dont le code est le suivant :


Dim Item_txtprojet As Object
Set Item_txtprojet = Me.Controls.Item(90)

Cette procédure m'a permis de constater que lorsque le décompte est à zéro, l'item(90) sélectionné ne correspond pas à celui qu'il aurait du sélectionner. Je m'explique, mon formulaire est composé d'une fenêtre dans laquelle il y a plusieurs onglets (un onglet principal dans lequel je vais chercher plusieurs informations, un onglet à partir duquel je lance ma procédure et collecte des données, un onglet dans lequel je vais chercher des informations mais que je n'affiche pas à tout les coups plus d'autres onglets que je n'affiche pas et où je ne fais rien vis à vis de cette procédure).
Donc, pour en revenir au test précédent, il apparait que l'item(90) que ma procédure sélectionne est bien txtprojet mais dans un onglet que je n'ai pas affiché et dans lequel il n'existe pas . C'est à dire qu'il pointe dans le vide .
Je pense que le problème doit se situer par la.

Porruak
 Posté le 26/03/2012 à 15:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Trouver la solution avec du setfocus

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
59,90 €Kit de 16 Go (2 x 8 Go) de mémoire DDR4 Crucial Ballistix Sport LT 3000 MHz à 59,90 €
Valable jusqu'au 14 Août

Amazon fait une promotion sur le kit de 16 Go (2x8 Go) de mémoire DDR4 Crucial Ballistix Sport LT 3000 MT/s CL16 qui passe à 59,99 € livré gratuitement.


> Voir l'offre
16,99 €Carte mémoire SDXC SanDisk Extreme 64 Go à 16,99 €
Valable jusqu'au 09 Août

Amazon fait une promotion sur la carte mémoire SDXC SanDisk Extreme 64 Go à 16,99 €. Cette carte mémoire est certifiée classe 10 U3 et autorise des débits de 70 Mo/s en capture et 150 Mo/s en transfert.


> Voir l'offre
9,99 €Adaptateur Bluetooth USB TP-Link UB400 à 9,99 €
Valable jusqu'au 13 Août

Amazon fait une promotion sur l'adaptateur Bluetooth USB TP-Link UB400 qui passe à 9,99 €. Cet adaptateur à brancher sur un port USB va vous permettre d'ajouter le bluetooth à votre ordinateur et d'utiliser ensuite sans fil vos périphériques bluetooth : souris, clavier, casque, manette, téléphone, ...


> Voir l'offre

Sujets relatifs
Access Probleme de critere dans une requete croisé
Access:probleme controle dans Formulaire(RESOLU)
Copier/Coller dans Access
[ACCESS SQL + champ ne peut être dans WHERE ou HAVING]
[Image dans formulaire ACCESS 2010]
problème de filtre dans Excel 2010
Problème copier/coller une page Web dans word.
Probleme de chiffre dans cellule
Problème d'intégration de Internet Download Manager dans Firefox
Problème d'intégration de Internet Download Manager dans Firefox
Plus de sujets relatifs à Problème Listbox.count dans VBA access
 > Tous les forums > Forum Bureautique