> 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 participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
29,99 €Casque sans fil Sony WH-CH500 Bluetooth à 29,99 €
Valable jusqu'au 03 Août

Cdiscount fait une vente flash sur le casque sans fil Sony WH-CH500 Bluetooth qui passe à 29,99 € alors qu'on le trouve ailleurs à plus de 60 €. Ce casque sans fil rechargeable (via micro USB) offre jusqu'à 20h d'autonomie.


> Voir l'offre
299,99 €Ecran PC 27 pouces Gigabyte M27Q (QHD, IPS, 0.5 ms, 170 Hz) à 299,99 €
Valable jusqu'au 03 Août

RueDuCommerce fait une promotion sur l'écran PC 27 pouces Gigabyte M27Q qui passe à 299,99 € au lieu de 399 €. Cet écran possède une dalle 27 pouces QHD (2560x1440) à 0.5 ms et à 170 Hz (FreeSync Premium et Adaptive Sync). Son pied est réglable en hauteur et en inclinaison.


> Voir l'offre
7,73 €Ventilateur Be quiet! SILENT WINGS 2 120mm PWM à 7,73 €
Valable jusqu'au 01 Août

Amazon fait une promotion sur le ventilateur Be quiet! SILENT WINGS 2 120 mm PWM qui passe à 7,73 € alors qu'on le trouve à 15 € habituellement. Ce ventilateur parvient à l'équilibre parfait entre refroidissement et silence avec un maximum de 20.2dB(A) et remplit toutes les conditions pour être le choix idéal pour les ventirads, les boîtiers de PC et les radiateurs.

Notez qu'Amazon indique une disponiblité sous 1 à 2 mois mais cela est généralement beaucoup plus rapide.


> 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