> 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
Smartphone robuste FOSSiBOT F101 Pro (HD+, 8 Go RAM, 128 Go stockage, second écran économe, batterie 10600 mAh, 4G, Android 13) à 124,99 €
124,99 € 150 € -17% @Geekbuying

Geekbuying fait une promotion sur le smartphone robuste FOSSiBOT F101 qui passe à 124,99 € avec le code NNNFRF1P au lieu de 150 €.

Il possède un écran 5.45 pouces HD+ IPS (1440x720 pixels), un processeur MediaTek MT8788 8 coeurs, 8 Go de RAM, 128 Go de stockage extensible par MicroSD, le WiFi, le bluetooth, le NFC, le GPS, un emplacement SIM 4G, une batterie grande capacité charge rapide de 10 600 mAh. Un APN 24 MP Samsung + 5 MP Macro + 8 MP frontal est intégré.

Un second écran tactile sur le dos du téléphone vous permet d'accéder aux informations importantes pour une consommation d'énergie minime : heure, prise de vue, enregistrement vidéo, boussole, accepter/refuser des appels, lecture de la musique, ... 

Le tout tourne sous Android 13. Il est étanche IP68 et résiste à l'eau, à la poussière et résiste aux choc et aux températures extrêmes. 


Voir le bon plan
Kit de 16 Go (2 x 8 Go) de mémoire DDR4 PNY XLR8 RGB 3200 MHz à 40,90 €
40,90 € 65 € -37% @RueDuCommerce

RueDuCommerce fait une promotion sur le kit de 16 Go (2x8 Go) de mémoire DDR4 PNY XLR8 RGB 3200 MHz CL16 qui passe à 40,90 € alors qu'on le trouve ailleurs à plus de 65 €.


Voir le bon plan
Carte graphique Sapphire Pulse AMD Radeon RX 6600 Pulse 8 Go à 169,99 €
169,99 € 209 € -19% @Cdiscount

Cdiscount fait une promotion sur la carte graphique Sapphire Pulse AMD Radeon RX 6600 Pulse 8 Go qui passe à 169,99 € une fois ajoutée au panier au lieu de 209 € ailleurs.

Basée sur l'architecture AMD RDNA 2 et prenant en charge le ray tracing, la carte graphique Sapphire PULSE Radeon RX 6600 8GB vous propose de jouer dans les meilleures conditions avec des graphismes sublimes et une fluidité remarquable. C'est la carte graphique idéale pour jouer en Full HD. Avec 1792 processeurs de flux, des fréquences élevées et 8 Go de VRAM GDDR6, la carte graphique gaming AMD Radeon RX 6600 est conçue pour profiter au mieux des meilleurs Jeux PC, tout simplement.


Voir le bon plan
Jeu PC Assassin's Creed Syndicate gratuit
Gratuit @Cdiscount

Ubisoft offre jusqu'à 6 Décembre à 14h le jeu PC Assassin's Creed Syndicate qui se déroule à Londres en 1868, durant La Révolution Industrielle. Le jeu est à télécharger sur la plateforme Uplay. Une fois le jeu ajouté à votre compte, il sera à vous à vie. 


Voir le bon plan
PC portable 15,6 pouces Ninkear A15 Plus (Full HD, AMD Ryzen 7 5700U, 32 Go RAM, SSD 1 To, Windows 11, Qwerty) à 509 €
509 € 525 € -3% @Geekbuying

GeekBuying fait une promotion sur l'ordinateur portable 15.6 pouces Ninkear A15 Plus qui passe à 509 € avec le code promo 8BMGGEGA au lieu de 623 €. Ce portable est plutôt bien équipé puisqu'il possède un écran 15.6 pouces Full HD (1920x1080) IPS, un processeur AMD Ryzen 7 5700U (8 coeurs), 32 Go de RAM DDR4, un SSD NVMe de 1 To, un chip graphique Vega 8, un pavé numérique, un lecteur d'empreintes digitales, le WiFi 5, le Bluetooth 4.2, une Webcam, 2 ports USB 3.0, un lecteur MicroSD, un port HDMI et un port USB C. Le tout tourne sous Windows 11. La batterie de 9000 mAh autorise une autonomie de 8 heures environ.

Attention, le clavier est ici en Qwerty. Vous pouvez le laisser tel quel et utiliser cette astuce pour saisir des accents. Vous pouvez aussi poser des stickers sur les touches et configurer Windows pour utiliser le clavier comme un clavier Azerty.

Une bonne affaire pour un PC portable performant en bureautique, multimédia, Internet et pour les jeux occasionnels.


Voir le bon plan
Tablette 10.1 pouces TECLAST P40HD (8 coeurs, FHD, 8 Go RAM, 128 Go, 4G) à 129,99 €
129,99 € 189,99 € -32% @Amazon

Amazon fait une promotion sur la tablette 10.1 pouces TECLAST T40 Pro qui passe à 129,99 €. On la trouve habituellement à 189,99 €. Cette tablette possède un processeur octo core, 8 Go de RAM, 128 Go de stockage extensibles par MicroSD, un écran FHD IPS (1920x1200) et tourne sous Android 13 en français. Le WiFi, le bluetooth et le GPS sont également de la partie. Il possède même un emplacement SIM pour utiliser la 4G en mobilité.


Voir le bon plan

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