|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Administrateur de base de données Inscription : décembre 2011 Messages : 6 ![]() |
Bonjour à tous,
J'ai un problème qui va vous paraitre simple mais je débute sur Access 2010 et n'y connais rien en VBA. Je dois créer un formulaire de requête. J'ai une table "campagne" qui comprend un champs "size" lui même composé de 8 items (size1, size2,..., size8) et d'autres items qui ne sont et ne doivent plus être utilisés. Je souhaite que les utilisateurs puisse sélectionner dans le menu déroulant un ou plusieurs items parmi le 8 valides et que le nombre de lignes répondant à ces critères s'affiche dans une textbox. Pour l'instant, j'arrive uniquement à exécuter et ouvrir une requête à partir de mon formulaire. Pouvez-vous m'aider ? Merci |
|
|
00
|
|
|
#2 |
![]() ![]() Jean BALLATInscription : octobre 2004 Messages : 2 856 ![]() |
![]() Hélas, j'ai pas tout compris. Difficile d'apporter une aide dans ces conditions.
__________________
Jeannot Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., [B]Sources VBA Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Administrateur de base de données Inscription : décembre 2011 Messages : 6 ![]() |
form.png
Exbase.xlsx Bonjour et merci d'avoir pris le temps de me lire. En fait, je dois créer un formulaire pour que les commerciaux de ma société puissent faire des comptages. Avec des exemples peut être que j'arriverai à être plus claire. Je n'arrive pas à insérer mes copies d'écran dans mon message je vous les ai donc mis en pièces jointes. Dans mon formulaire, j'ai une zone de liste à sélection multiple nommée "CompanySize". Les items qui y figurent proviennent du champs "CompanySize" de ma base. En fait, je veux que dans la text box nommée "résultat de votre recherche", s'affiche le nombre de lignes correspondant à "Size1" quand l'utilisateur à sélectionné "Size1" dans la zone de liste (dans ce cas, la réponse sera 3 car il y a 3 entreprises de "Size1" dans ma base source). Si l'utilisateur choisit "Size1"+"Size3" alors le résultat sera 4 dans la text box. J'espère que vous aurez la gentillesse de vous pencher à nouveau su mon problème. Merci d'avance |
|
|
00
|
|
|
#4 | ||
![]() ![]() Jean BALLATInscription : octobre 2004 Messages : 2 856 ![]() |
![]() Le problème est assez complexe. Tu devras, après avoir sélectionné les tailles, extraire les lignes de la table répondant aux tailles sélectionnées et les compter. Une procédure VBA est indispensable. Je te joins un petite base exemple et le détail ci-dessous de la procédure affectée à l'évènement sur click du bouton OK dans le formulaire. Code VBA :
Bon courage et bonne fin d'année
__________________
Jeannot Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., [B]Sources VBA Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
|
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Administrateur de base de données Inscription : décembre 2011 Messages : 6 ![]() |
En effet, J'aurais eu du mal à trouver ça toute seule !
Je vous remercie d'avoir pris le temps de rédiger ce code pour moi. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Administrateur de base de données Inscription : décembre 2011 Messages : 6 ![]() |
Re-Bonjour,
Je vais réparer de suite. Je n'avais pas cliqué sur résolu parce que je n'arrive pas à faire fonctionner votre code. Je pense que cela provient du fait que access est pour moi une interface utilisateurs et que ma BDD est sur un autre serveur sql. Est-ce possible selon vous ? |
|
|
00
|
|
|
#7 |
![]() ![]() Jean BALLATInscription : octobre 2004 Messages : 2 856 ![]() |
![]() Il te faut activer le code. Tu ouvres Access puis dans l’onglet Fichier tu choisis : a. « options » b. Puis « Centre de gestion de la confidentialité » c. Puis cliques sur le bouton « Paramètres du centre de gestion de la confidentialité » d. Tu choisis alors « Emplacements approuvés » e. Dans le bas de la fenêtre, tu cliques sur « Ajouter un emplacement » f. Tu utilises alors le bouton « Parcourir » pour aller rechercher un dossier que tu auras créé et dans lequel se trouve la base que je t'ai envoyée. g. Tu actives également l’option : « les sous-dossiers de cet emplacement sont également approuvés » Lorsque tu ouvriras la base, le code devriendra actif
__________________
Jeannot Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., [B]Sources VBA Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
|
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Administrateur de base de données Inscription : décembre 2011 Messages : 6 ![]() |
Bonjour et bonne année 2012 !
Je n'ai pas eu de problème avec ta base test ou ton code. Cela fonctionne très bien aussi chez moi. Le souci arrive quand je transpose le code en interrogeant ma base de données qui se trouve sur un serveur. Je n'ai modifié que les noms de tes champs et table que j'ai remplacé par les miens. Pour moi, La table "Compagny" = ***baseT-ALL EMAILS for PARTNERS campaigns*** Le champs CompagnySize = CompanySize lstSize reste lstSize. Voici ce que donne mon code Code VBA :
Lorsque je lance ma demande depuis le formulaire, VBA m'affiche "erreur de compilation : attendu : Expression" et me surligne la ligne 1 (Private Sub btnComptage_Click()) et la première étoile du nom de ma table en bleu... J'ai essayer de remplacer les crochets par des parenthèses et là j'ai "erreur de compilation : Attendu: =". J'ai essayé de les enlever et j'ai le message "erreur de compilation : Attendu: fin d'instruction" .... Je me demande s'il n'a pas dû mal à digérer les étoiles avant le nom de ma table. |
||
|
|
00
|
|
|
#9 |
![]() ![]() Jean BALLATInscription : octobre 2004 Messages : 2 856 ![]() |
![]() Je pense qu'il faut que tu revois le nom de ta variable. En effet, un nom doit être évocateur de ce qu'il représente sans pour autant être trop compliqué. Il est souvent composé de 3 parties : sa portée : locale (l_), module (m_), publique (p_) son type : string (str), integer (int), long (lng), ... un nom évocateur de l'objet exemples : l_strSql représente une variable locale de type chaine de caractères qui représente la syntaxe de la requête. l_rsCompagny représente u ne varaible locale de type RecordSet et qui contient le résultat de la requete (C'est vrai que le nom de ma table est Compagny - nettement plus simple que le nom de ta table Je pense qu'en reprenant un nom plus simple tu devrais avoir le bon résultat. Par contre ne perd jamais de vue la construction du nom de tes variables. Toujours utile quand tu relis un ancien développement. Merci pour tes voeux, bonne année à toi et bon développement
__________________
Jeannot Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., [B]Sources VBA Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Administrateur de base de données Inscription : décembre 2011 Messages : 6 ![]() |
Bonjour,
J'ai suivi tes conseils et trouvé une solution ! ![]() Concernant le nom de ma table, elle est plus vieille que moi Encore merci pour ton aide précieuse ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com