> 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
65,99 €Kit de 16 Go (2 x 8 Go) de mémoire DDR4 Crucial Ballistix 3200 MHz à 65,99 €
Valable jusqu'au 18 Septembre

Cdiscount fait une promotion sur le kit de 16 Go (2x8 Go) de mémoire DDR4 Crucial Ballistix 3200 MHz CL16 qui passe à 65,99 € avec le code promo SEPT. On le trouve ailleurs à plus de 85 €. Une très bonne affaire !


> Voir l'offre
29,99 €Radio réveil Lenovo Smart Clock Essential avec assistant Google à 29,99 €
Valable jusqu'au 18 Septembre

Boulanger via Rakuten fait une promotion sur le radio réveil Lenovo Smart Clock Essential avec assistant Google qui passe à 29,99 € au lieu de 59 €. Avec son large affichage extrêmement visible, vous pouvez consulter l’heure depuis l’autre bout de la pièce. Parlez à Google pour lui poser des questions, écouter de la musique, définir votre heure de réveil, contrôler vos appareils domestiques intelligents et bien plus encore. Cette horloge intelligente est là pour vous aider à être plus productif et à gagner du temps. Elle dispose également d’une veilleuse, d’un haut-parleur et de microphones intégrés.

Notez que si vous n'avez jamais commandé sur Rakuten, cette offre de parrainage vous permettra de déduire 10 € de votre commande. Le radio réveil ne vous reviendrait alors qu'à 19,99 € !


> Voir l'offre
79,99 €Alimentation modulaire Corsair RM650 80+ Gold à 79,99 €
Valable jusqu'au 18 Septembre

Cdiscount propose actuellement l'alimentation modulaire Corsair RM650 à 79,99 €. Cette alimentation de 650W est certifiée 80+ Gold et est garantie 10 ans. Entièrement modulaire, vous pourrez brancher uniquement les câbles (fournis) dont vous avez besoin. On la trouve ailleurs à partir de 100 €. 


> 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