|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Maxime Inscription : janvier 2011 Messages : 7 ![]() |
Bonjour a tous!,
je suis en train de développer un petit outil sous Access pour le boulot et je rencontre un problème à l'éxécution de la macro suivante. Pour résumer ce code me sert à filtrer les données de mon formulaire (en mode tabulaire) selon 3 items: "ZTC" / "Année" / "Mois" que l'utilisateur pourra spécifier dans 3 listes déroulantes. Pour "ZTC" et "Année" le filtre s'éxécute sans aucun problème, cependant dès que je spécifie un mois à filtrer la macro bug et s'arrête sur la dernière ligne avec le message : erreur 2001 opération annulée pourtant f me renvoie bien f = "Mois = "Avril"" ________________________________ Code :
J'ai lu sur d'autres forum que ce genre d'erreur provenait d'une incompatibilité entre un format de donnée "texte" et un format "numérique" cependant la valeur de l'item Mois est écrit en toute lettre et provient d'un calcul de type Mois : Monthname(Mois(Date saisie dans une table)) Quelqu'un a t'il déja rencontré cet erreur ? Merci de votre aide... The masked Duck |
||
|
|
00
|
|
|
#2 | |
|
Candidat au titre de Membre du Club
![]() Gabriel Freitas Inscription : décembre 2010 Messages : 30 ![]() |
Citation:
Je ne suis pas un professionnel, mais de ce que je sais, je te conseille de faire bien attention à l'utilisation des guillemets et des apostrophes. En effet (du moins pour l'affichage en tout cas ), un guillemet double sert à l'affichage d'un guillemet simple. Cependant, je ne sais pas comment les guillemets doubles sont gérés hors affichage (pour un filtre par exemple Je te recommande vivement d'utiliser des apostrophes pour le texte de ton filtre, et les guillemets pour ta chaine entière exemple Code :
f = "Année = '" & Me.Modifiable14 & "'" |
|
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Pierre ANTOINEInscription : février 2008 Messages : 650 ![]() |
Bonjour
Il est fort possible que le problème soit lié à une mauvaise utilisation des guillemets. Leur remplacement par des apostrophes (quotes) n'est pas satisfaisant, car on ne peut pas gérer la présence d'apostrophe dans les chaîne de caractère. AUssi, la solution qui me semble la plus clair (mais peut-être un peu lourd) c'est l'utilisation de chr(34) pour inclure des guillemets. Conclusion : Tous les éléments fixes de ma chaîne de caractères doivent être entourés de guillemets que je mets en dure : c'est ce qui permet qu'il s'agit d'éléments fixes. Dans le cas où des guillemets doivent être intégrés à la chaîne, en particulier pour gérer les variable string, je code par chr(34) Code :
crit = "Nom like " & chr(34) & me.txtNom & chr(34) Dernière chose : ne pas hésiter à afficher la chaîne créée dans la fenêtre d'exécution (par un debug.print), et la récupérer dans une requête pour voir si tout va bien. Pierre |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Maxime Inscription : janvier 2011 Messages : 7 ![]() |
Hello et merci Pierre et Gibra pour vos réponses
En replacant : Code :
f = "Mois = """ & Me.Modifiable16 & """" Code :
f = "Mois = " & Chr(34) & Me.Modifiable16 & Chr(34) J'obtient la même erreur. f me renvoie la valeur "avril" alors que mois est avril (sans guillemet) idem avec la solution de gibra, f me renvoie 'avril' en remplacant par A l'éxécution de la macro Access me demande la valeur de avril... Avez vous une idée? Dois-je faire en sorte que la valeur de Mois soit "avril" en mettant des guillement ou des chr(34) dans ma requete de calcul? Merci de votre aide. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Pierre ANTOINEInscription : février 2008 Messages : 650 ![]() |
Bonjour
Attention ! Pour les critère comportant du texte, le signe encadrant est certes le double quote (geuillemet chr(34)) mais l'opérateur n'est pas le égal(=) mais "like". Essayez ceci : Code :
f = "Mois like" & Chr(34) & Me.Modifiable16 & Chr(34) |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Maxime Inscription : janvier 2011 Messages : 7 ![]() |
cela donne f = "Mois like "avril""
J'ai ajouté une ligne MsgBox (f & " " & Mois.value) qui me revoie Mois like "avril" avril Mais la macro ne fonctionne pas : Erreur 2001... |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Maxime Inscription : janvier 2011 Messages : 7 ![]() |
Ce qui m'étonne le plus c'est que le premier filtre fonctionne très bien
Code :
f = "ZTC" & " = """ & Me.Modifiable8 & """" Le filtre s'éxécute sans problème, idem avec le filtre sur l'année... Je pense réellement que le problème est ailleurs... |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Pierre ANTOINEInscription : février 2008 Messages : 650 ![]() |
Re
Après relecture de tout le poste, pourriez vous nous indiquer quelle est le contenu du contrôle Modifiable8, ainsi que le nombre de colonne, leur taille, et le numéro de la colonne liée. Question annexe : avez-vous bien essayez le filtre uniquement sur le mois? merci d'avance. Pierre |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Maxime Inscription : janvier 2011 Messages : 7 ![]() |
hi,
______________________________ Modifiable8 : (choix de la ZTC) - 1 colonne - contenu : SELECT [qry_gains/entité].ZTC FROM [qry_gains/entité] GROUP BY [qry_gains/entité].ZTC; - colonne liée : 1 ______________________________ Modifiable14 : (choix de l'année) - 1 colonne - Contenu : SELECT [qry_gains/entité].Année FROM [qry_gains/entité] GROUP BY [qry_gains/entité].Année; - colonne liée : 1 _______________________________ Modifiable16 : (choix du mois) - 1 colonne - Contenu : SELECT [qry_gains/entité].Mois FROM [qry_gains/entité] GROUP BY [qry_gains/entité].Mois; - colonne liée : 1 Pour la question annexe oui, en effet si je fait un filtre uniquement sur le mois ou si je fait un mix en spécifiant un mois, la macro bug... Souhaitez vous que j'upload une version simplifiée de mon fichier? |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Maxime Inscription : janvier 2011 Messages : 7 ![]() |
Je le met quand même au cas ou...
|
|
|
00
|
|
|
#11 | ||||
|
Membre Expert
![]() Pierre ANTOINEInscription : février 2008 Messages : 650 ![]() |
Bonjour;
Je ne comprends pas pourquoi ça ne fonctionne pas avec le libellé des mois. Pour ma part j'ai un peu changé deux ou trois trucs, et maintenant cela fonctionne. Pour la requête "qry_gains/entité", ajouter un champ : Code :
(Month(tb_etudes![date de solde (si DIS/DRIA])) AS MoisNbre Code :
Modifier le code du filtre pour le controle Modifiable16: Code :
PS : essayer de mieux nommer vos contrôle. Modifiable8, Modifiable16, ce n'est pas de tout explicite, donc source de confusion, et de perte de temps. PPS : dans votre code, pour raison de clarté, essayer de faire des décalage. Pierre |
||||
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Maxime Inscription : janvier 2011 Messages : 7 ![]() |
Bonjour et merci beaucoup pour cette solution qui me conviens très bien.
![]() Je vais faire un effort sur l'organisation de mes formulaires et de mes macros! (j'ai appris sur le tas et je manque encore d'organisation!) A bientot !! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com