> 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
89,99 €Amazon Fire TV Cube à 89,99 €
Valable jusqu'au 25 Septembre

Amazon fait une belle promotion sur son Fire TV Cube qui passe à 89,99 € au lieu de 119,99 €. Fire TV Cube est l'appareil Fire TV le plus rapide et le plus puissant (4K ultra HD, 6 coeurs, 16 Go, Ethernet, Dolby Atmos) : il vous livre une expérience d'utilisation fluide et rapide pour profiter de vos films et séries préférés (Netflix, Prime Video, Disney+, Molotov, YouTube). Fire TV Cube vous permet de poser la télécommande et de vous plonger dans vos films et séries préférés en utilisant uniquement le son de votre voix. Vous pouvez aussi demander à Alexa de régler le volume ou de couper le son de votre TV ou barre de son compatible. 


> Voir l'offre
84,99 €SSD Samsung 870 QVO 1 To à 84,99 €
Valable jusqu'au 23 Septembre

Amazon fait une promotion sur le SSD Samsung 870 QVO 1 To qui passe à 84,99 € au lieu de 100 €. Ce SSD offre des vitesses de 560 Mo/s en lecture et 530 Mo/s en écriture. Il est garanti 3 ans.


> Voir l'offre
130 €Carte cadeau bonifiée Cdiscount de 150 € pour 130 € avec le code CKDO20
Valable jusqu'au 25 Septembre

Cdiscountr propose une carte cadeau d'un montant de 150 € pour 130 € seulement avec le code CKDO20. Cette carte sera utilisable du 24 septembre au 31 octobre prochain.


> 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