OVH Cloud OVH Cloud

atteindre enregistrement spécifique ...

17 réponses
Avatar
Fred Pasc
Bonjour,

Dans un formulaire, je souhaite parcourir une table mais pas enregistrement
par enregistrement mais avec un écart spécifique. J'ai bien vu la macro
atteindreEnregistrement qui est paramétrable mais mon parcours dépend en
fait d'une donnée calculée et changeante à chaque parcours qui se trouve
dans une autre table, d'où mon problème. Mais est-ce au moins possible?
Voilà, j'espère que j'ai été clair. Merci de votre aide par avance. Je
travaille sur Access 2000.

Ciao
Fred

10 réponses

1 2
Avatar
Fred Pasc
J'ai bien essayé également de mettre la référence de mon enregistrement, la
macro est validée mais lors de son exécution, on me renvoit un message
d'erreur disant que mon objet n'est pas reconnu.
Enfin voilà, je bloque vraiment.
Merci de votre aide.

Ciao
Fred


Pour m'écrire, enlever le "N" ...
"Fred Pasc" a écrit dans le message de news:
d57e8q$an6$
Bonjour,

Dans un formulaire, je souhaite parcourir une table mais pas
enregistrement

par enregistrement mais avec un écart spécifique. J'ai bien vu la macro
atteindreEnregistrement qui est paramétrable mais mon parcours dépend en
fait d'une donnée calculée et changeante à chaque parcours qui se trouve
dans une autre table, d'où mon problème. Mais est-ce au moins possible?
Voilà, j'espère que j'ai été clair. Merci de votre aide par avance. Je
travaille sur Access 2000.

Ciao
Fred




Avatar
ST
Je ne sais pas si tu utilises uniquement les macros Access. Je te conseille
d'utiliser les modules (Visual Basic).

Pour t'aider, tu as la possibilité de convertir tes macros en module => celà
peut t'aider à comprendre le code.

Tu peux aussi utiliser le forum sur http://www.developpez.com/

Bon courage
ST
"Fred Pasc" a écrit dans le message de
news:d57hf9$cik$
J'ai bien essayé également de mettre la référence de mon enregistrement,
la

macro est validée mais lors de son exécution, on me renvoit un message
d'erreur disant que mon objet n'est pas reconnu.
Enfin voilà, je bloque vraiment.
Merci de votre aide.

Ciao
Fred


Pour m'écrire, enlever le "N" ...
"Fred Pasc" a écrit dans le message de news:
d57e8q$an6$
Bonjour,

Dans un formulaire, je souhaite parcourir une table mais pas
enregistrement

par enregistrement mais avec un écart spécifique. J'ai bien vu la macro
atteindreEnregistrement qui est paramétrable mais mon parcours dépend en
fait d'une donnée calculée et changeante à chaque parcours qui se trouve
dans une autre table, d'où mon problème. Mais est-ce au moins possible?
Voilà, j'espère que j'ai été clair. Merci de votre aide par avance. Je
travaille sur Access 2000.

Ciao
Fred








Avatar
Raymond [mvp]
Bonjour.

Tu peux utiliser de façon simple la commande GoToRecord :
DoCmd.GoToRecord acDataForm, "FormName", acGoTo, DLookup("champ", "table",
"critère")

le DLookup ira chercher le n° d'enregistrement à atteindre dans le champ
nommé champ de la table nommée table selon la clause where en critère.
tu ajustes tout ça avec tes noms réels.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Fred Pasc" a écrit dans le message de news:
d57hf9$cik$
J'ai bien essayé également de mettre la référence de mon enregistrement,
la
macro est validée mais lors de son exécution, on me renvoit un message
d'erreur disant que mon objet n'est pas reconnu.
Enfin voilà, je bloque vraiment.
Merci de votre aide.

Ciao
Fred


Avatar
Fred Pasc
Re-Bonjour...
Merci à tous les deux, cela fait une heure que j'essaye et ça marche pas
sans que je comprenne. Le debogueur m'annonce une erreur de syntaxe à partir
du select que je suis incapable de voir, il me semble avoir bien vérifié
mais si jamais vous pouvez jeter un oeil à mon code ça m'aiderait, merci
d'avance ...

Voici mon code :

Function fairePièce()
On Error GoTo fairePièce_Err


DoCmd.GoToRecord acDataForm, "Opé_OF_F", acGoTo,
DLookup("ControleTtesLes_n_Pièces", "C", "SELECT ControleTtesLes_n_Pièces
FROM C , Pièce, Opé_OF WHERE C.Ref=Pièce.Référence AND
Opé_OF.Référence=Pièce.Référence ")


fairePièce_Exit:
Exit Function



Ciao
Fred

"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

Tu peux utiliser de façon simple la commande GoToRecord :
DoCmd.GoToRecord acDataForm, "FormName", acGoTo, DLookup("champ", "table",
"critère")

le DLookup ira chercher le n° d'enregistrement à atteindre dans le champ
nommé champ de la table nommée table selon la clause where en critère.
tu ajustes tout ça avec tes noms réels.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Fred Pasc" a écrit dans le message de news:
d57hf9$cik$
J'ai bien essayé également de mettre la référence de mon enregistrement,
la
macro est validée mais lors de son exécution, on me renvoit un message
d'erreur disant que mon objet n'est pas reconnu.
Enfin voilà, je bloque vraiment.
Merci de votre aide.

Ciao
Fred







Avatar
Raymond [mvp]
un critère est une clause where sans le mot where et non une instruction
sql.
DLookup("ControleTtesLes_n_Pièces", "C",
"[Ref]='" & Me.Critère1 & "' And [ Opé_OF.Référence='" &
Me.Critère2 & "'" )

C étant une table ou une requête
ControleTtesLes_n_Pièces étant le chant de la table
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Fred Pasc" a écrit dans le message de news:
d57puk$hc8$
Re-Bonjour...
Merci à tous les deux, cela fait une heure que j'essaye et ça marche pas
sans que je comprenne. Le debogueur m'annonce une erreur de syntaxe à
partir
du select que je suis incapable de voir, il me semble avoir bien vérifié
mais si jamais vous pouvez jeter un oeil à mon code ça m'aiderait, merci
d'avance ...

Voici mon code :

Function fairePièce()
On Error GoTo fairePièce_Err


DoCmd.GoToRecord acDataForm, "Opé_OF_F", acGoTo,
DLookup("ControleTtesLes_n_Pièces", "C", "SELECT ControleTtesLes_n_Pièces
FROM C , Pièce, Opé_OF WHERE C.Ref=Pièce.Référence AND
Opé_OF.Référence=Pièce.Référence ")


fairePièce_Exit:
Exit Function



Ciao
Fred



Avatar
Fred Pasc
Bonjour

Merci Raymond pour ton aide. Tu as bien cerné le sujet mais moi et la prog
ça fait 2. Du coup je comprends rien et le peu qu'il me reste à faire pour
que tout marche je n'y arrive pas.
Qu'entends-tu par : "Me.Critères" car on me dit que je n'utilise pas bien
Me. Et moi je sais même pas ce que c'est Me (je suppose que ça fait
référence à ma base, un peu comme la flèche en C++).
J'ai bien regardé comment rédigé une requête en VBA mais je comprends rien
non plus.
Si jamais tu pouvais me guider une fois de plus, je te rappelle ma requête
SQL qui est à traduire en VBA:

"SELECT ControleTtesLes_n_Pièces
FROM C , Pièce, Opé_OF
WHERE C.Ref=Pièce.Référence
AND Opé_OF.Référence=Pièce.Référence "

Merci de votre aide.
Ciao
Fred

PS: Ton site est super Raymond, je sais pas où je serais sans ça !


"Raymond [mvp]" a écrit dans le message de
news: OEemDr$
un critère est une clause where sans le mot where et non une instruction
sql.
DLookup("ControleTtesLes_n_Pièces", "C",
"[Ref]='" & Me.Critère1 & "' And [ Opé_OF.Référence='" &
Me.Critère2 & "'" )

C étant une table ou une requête
ControleTtesLes_n_Pièces étant le chant de la table
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Fred Pasc" a écrit dans le message de news:
d57puk$hc8$
Re-Bonjour...
Merci à tous les deux, cela fait une heure que j'essaye et ça marche pas
sans que je comprenne. Le debogueur m'annonce une erreur de syntaxe à
partir
du select que je suis incapable de voir, il me semble avoir bien vérifié
mais si jamais vous pouvez jeter un oeil à mon code ça m'aiderait, merci
d'avance ...

Voici mon code :

Function fairePièce()
On Error GoTo fairePièce_Err


DoCmd.GoToRecord acDataForm, "Opé_OF_F", acGoTo,
DLookup("ControleTtesLes_n_Pièces", "C", "SELECT
ControleTtesLes_n_Pièces


FROM C , Pièce, Opé_OF WHERE C.Ref=Pièce.Référence AND
Opé_OF.Référence=Pièce.Référence ")


fairePièce_Exit:
Exit Function



Ciao
Fred








Avatar
Raymond [mvp]
Bonjour.

on va essayer.
Me est utilisé pour référencer le formulaire dans lequel on travaille. Au
lieu d'indiquer une fonction de forme Forms("Formulaire1")("Monchamp") on le
remplace par Me.Monchamp ou Me!Monchamp ou Me("Monchamp") ce qui est valable
pour n'importe quel nom de formulaire.
quand on indique, Me.Critères, cela veut dire que tu dois remplacer Critères
par le nom exact du contrôle de formulaire dans lequel apparait la valeur à
comparer dans la requête.
pour faire un essai sur noms rééls:
quel est le nom de ta table utilisée ?
quel est le nom des champs ?
Comment faut-il comparer ? quel est le critère à indiquer pour qu'un seul
enregistrement corresponde au cas ?

ensuite on fera la requête.
(ta clause where actuelle n'est pas bonne)
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Fred Pasc" a écrit dans le message de news:
d59to6$hai$
Bonjour

Merci Raymond pour ton aide. Tu as bien cerné le sujet mais moi et la prog
ça fait 2. Du coup je comprends rien et le peu qu'il me reste à faire pour
que tout marche je n'y arrive pas.
Qu'entends-tu par : "Me.Critères" car on me dit que je n'utilise pas bien
Me. Et moi je sais même pas ce que c'est Me (je suppose que ça fait
référence à ma base, un peu comme la flèche en C++).
J'ai bien regardé comment rédigé une requête en VBA mais je comprends rien
non plus.
Si jamais tu pouvais me guider une fois de plus, je te rappelle ma requête
SQL qui est à traduire en VBA:

"SELECT ControleTtesLes_n_Pièces
FROM C , Pièce, Opé_OF
WHERE C.Ref=Pièce.Référence
AND Opé_OF.Référence=Pièce.Référence "

Merci de votre aide.
Ciao
Fred

PS: Ton site est super Raymond, je sais pas où je serais sans ça !



Avatar
Fred Pasc
Re_Bonjour

quel est le nom de ta table utilisée ?
On utilise les tables C, Pièce et Opé_OF


quel est le nom des champs ?
On souhaite parcourir le formulaire en utilisant le champ

"ControleTtesLes_n_Pièces" de la table C.

Comment faut-il comparer ? quel est le critère à indiquer pour qu'un >
seul enregistrement corresponde au cas ?

Pour relier ces tables, il faut que C.Ref=Pièce.Référence et
Pièce.Référence=Opé_OF.Référence

Je te rappelle ma ligne de code :

DoCmd.GoToRecord acDataForm, "Opé_OF_F", acGoTo,
DLookup("ControleTtesLes_n_Pièces", "C", "[Ref]='" & Me.Critère1 & "' And
[ Opé_OF.Référence='" & Me.Critère2 & "'")

Merci d'avance pour ton aide.

Ciao
Fred

Avatar
Raymond [mvp]
Il y a un problème ici:
Comment faut-il comparer ? quel est le critère à indiquer pour qu'un >
seul enregistrement corresponde au cas ?

Pour relier ces tables, il faut que C.Ref=Pièce.Référence et
Pièce.Référence=Opé_OF.Référence



il ne faut utiliser qu'une seule table pour se positionner sur un seul
enregistrement: Table C , OK.
dans cette table C il y a 1 champ qui est affiché sur le formulaire: C.Réf
il faut que le critère du DLookup soit la valeur indiquée dans Réf placé sur
ton formulaire. il n'y a donc qu'un seul critère de recherche, ce qui est
normal et le cas général.
fais un essai avec:

si Ref est alphanumérique:
DoCmd.GoToRecord acDataForm, "Opé_OF_F", acGoTo,
DLookup("ControleTtesLes_n_Pièces", "C", "[Ref]='" & Me!Ref & "'")
si Ref est numérique
DoCmd.GoToRecord acDataForm, "Opé_OF_F", acGoTo,
DLookup("ControleTtesLes_n_Pièces", "C", "[Ref]=" & Me!Ref)

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Fred Pasc" a écrit dans le message de news:
d59vpr$iia$
Re_Bonjour

quel est le nom de ta table utilisée ?
On utilise les tables C, Pièce et Opé_OF


quel est le nom des champs ?
On souhaite parcourir le formulaire en utilisant le champ

"ControleTtesLes_n_Pièces" de la table C.

Comment faut-il comparer ? quel est le critère à indiquer pour qu'un >
seul enregistrement corresponde au cas ?

Pour relier ces tables, il faut que C.Ref=Pièce.Référence et
Pièce.Référence=Opé_OF.Référence

Je te rappelle ma ligne de code :

DoCmd.GoToRecord acDataForm, "Opé_OF_F", acGoTo,
DLookup("ControleTtesLes_n_Pièces", "C", "[Ref]='" & Me.Critère1 & "' And
[ Opé_OF.Référence='" & Me.Critère2 & "'")

Merci d'avance pour ton aide.

Ciao
Fred






Avatar
Fred Pasc
re

Bon, il voulait pas me prendre le "Me" alors je l'ai fait à l'ancienne avec
le forms comme tu m'as expliqué.
Par contre, je sais pas si je me suis bien exprimé mais là, avec cette
fonction, j'atteins l'enregistrement que je souhaite. Moi je voulais que la
valeur récupérée soit un "indice de parcours". En gros, qu'elle fasse +3 ou
+5 quand on appui sur suivant. J'ai pas encore bien cherché si il n'y a
qu'une petite modification de ma fonction à faire mais si c'est complètement
différent, indique me le.

Merci pour tout.
Ciao
Fred
1 2