|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
Bonjour,
Pour avancer dans ma base de données j'aurai aimé savoir comment créer une boucle en VBA ? et tester la valeur de mes champs. Lorsque je lance la compil le script bloque à select Case (sur ligne en jaune). Je voudrais parcourir mes champs de C52 à C1 et envoyer une valeur dans un champs nomé variation 1 ou 2 ou 3 (voir ci-dessous) merci de votre aide Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Quel est le message d'erreur du compilateur ?
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
Message : Erreur d'execution 3164 le champ ne peut être mis à jour
(Voulez-vous la pièce jointe ? ) |
|
|
00
|
|
|
#4 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Non merci pour la pièce jointe.
Peux tu confirmer que c'est sur la ligne 3 que l'erreur se produit car je ne vois pas de cause évidente à cela. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
10
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
Je viens de relancer actuellement quand j'inscris par exemple la valeur "CC" dans le champ C2 de mon formulaire la ligne VBA --> Me("variation") = 2 et en jaune
Message : Erreur d'execution 3164 le champ ne peut être mis à jour |
|
|
00
|
|
|
#6 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
OK, cela a plus de sens.
Peux-tu modifier le champ [variation] à la main, c-à-d sans passer par le code, dans ton formulaire ? Si non, peux-tu le modifier à la main dans la table ou la requête qui alliemente ton formulaire ? A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
Dans mon
1-/ Peux-tu modifier le champ [variation] à la main, c-à-d sans passer par le code, dans ton formulaire ? -->J'ai essayé de le modifier on ne peut pas il reste figée 2-/ Si non, peux-tu le modifier à la main dans la table ou la requête qui alliemente ton formulaire ? --> Dans ma table pas modifiable, par contre comme je disais ma requête est modifiable mais limité de C52 à C49 mais pas jusqu'a C1 c pour cela que je voudrais passer en VBA pour faire la boucle de C52à C1 voici ma requête limité Code :
Variation: PremVrai([C52]="RAS";"1";[C52]="CC";"2";[C52]="X";"3";[C51]="RAS";"1";[C51]="CC";"2";[C51]="X";"3";[C50]="RAS";"1";[C50]="CC";"2";[C50]="X";"3";[C49]="RAS";"1";[C49]="CC";"2";[C49]="X";"3") |
|
|
00
|
|
|
#8 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Si tu ne peux pas le modifier à la main dans la source de données à priori tu ne pourras pas le modifier par du code.
Est-ce que Variation est dans une table quelque part ou sert-il seulement à l'affichage ? S'il sert seulement à l'affichage on doit pouvoir faire le travail dans la requête qui allimente le formulaire. Dans cette idée, as-tu une clef primaire qui te permettes d'identifier de manière unique tes enregistrements ? Si il est dans une table on peut essayer d'aller modifier la table mais cela n'est pas forcément possible. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
10
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
OK Merci
1-/ Variation sert seulement à l'affichage c'est le but. 2-/ Oui c'est exactement cela sert seulement à l'affichage on doit pouvoir faire le travail dans la requête qui allimente le formulaire. OUI j'ai une clef primaire qui te permettes d'identifier de manière unique les enregistrements ? je vous écoutes comment faire ? |
|
|
00
|
|
|
#10 | ||||
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
Bonjour,
Effectivement on doit pouvoir faire le travail dans la requête qui allimente le formulaire. Comment simplifier la 2 ème requête SQL pour la faire fonctionner ? Pour cela 2 requêtes : 1-/ Celle qui fonctionne très bien de C52 à C49: Code :
Code :
|
||||
|
|
00
|
|
|
#11 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
La solution qui me parait la plus facile serait de créer une table temporaire et de calculer la valeur des différents champs et de Variation par VBA.
On peut pas faire une boucle sur les champs dans du SQL il faut donner la liste exhaustive. Le code pourrait ressembler à cela : Je suppose que TaTableResultat a les mêmes champs que la tables source + Variation Code :
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||
|
|
20
|
|
|
#12 |
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
Bonjour j'ai un message
Membre de methode ou de données introuvable le compilateur bloque à .Execute Code :
Application.Execute ("Delete * from TaTableResultat") 'Vide la table résultat |
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Fabrice CONSTANSIngénieur développement logiciels Inscription : avril 2005 Messages : 7 085 ![]() |
Bonjour,
"Membre de methode ou de données introuvable" Le message est clair. Execute ne fait pas parti d'Application. Le premier reflexe que tu dois avoir c'est de cliquer sur Aide lorsque tu as un message. C'est formateur. Ensuite tu fais F1 sur le mot qui pose problème, dans ce cas il s'agit de la méthode Execute (c'est en toutes lettres dans le message). L'aide t'indiquera que cette méthode ne fait pas parti d'Application mais de Database (du moins dans ton cas). C'est pour cela qu'un copier/coller n'est jamais formateur, il te donne souvent une ligne de conduite générale au plus une trame de départ. Il ne doit jamais être pris comme la solution toute faite. Ce forum n'a pas cette vocation. Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste MsGraph et VBA - 1e Partie 2e partie Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010 Complément :Générateur de msgbox Visitez mon Blog Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine |
|
10
|
|
|
#14 | |||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Citation:
Je vais tacher de te revenir avec la bonne syntaxe au pire tu peux mettre : Code :
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|||
|
|
00
|
|
|
#15 | ||||
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
Bonjour,
Le résultat fonctionne dans le champ variation= 1 ou 2 ou 3 de C52à C49 mais pas jusqu'à C1 Code :
Comment faire pour que cela fonctionne les champs de C52 à C1 Le script bloque à select Case (sur ligne en jaune). Je n'arrive pas à avoir le résultat dans le champ varition pour les cas de C52 à C48 Je voudrais parcourir mes champs de C52 à C1 et envoyer une valeur dans un champs nomé variation 1 ou 2 ou 3 (voir ci-dessous) merci de votre aide Code :
|
||||
|
|
00
|
|
|
#16 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Ton dernier post ressemble furrieusement au premier, tu n'as pas essayé le code que j'ai posté ?
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#17 |
|
Futur Membre du Club
![]() Inscription : janvier 2008 Messages : 304 ![]() |
Bonjour,
J'ai essayé le code du dernier post mais cela fonctionne pas. Pouvez vous essayé de votre côté avec la pièce jointe ? car j 'ai suivi à la lettre mais marche pas je ne sait ou sa bloque |
|
|
00
|
|
|
#18 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Je vais jetter un oeil ce soir.
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#19 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
OK voici un code qui fonctionne avec la BD que tu as postée.
Dans tes données, la colonne C1 ne contient ni "RAS", ni "CC", ni "X" donc il ne se passe rien. C'est peut-être pourquoi ton Switch() ne marche pas non plus. Code :
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||
|
|
00
|
|
|
#20 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Au fait si tes Cx représentent des semaines saches qu'il peut y avoir 53 semaines par an pas seulement 52 (365 / 7 = 52.14).
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com