Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boucle sans fin

20 réponses
Avatar
Jacques
Bonjour,

Lorsque je cr=E9e un enregistrement dans la table Formation-Activit=E9-
Liste je voudrais rajouter
l=92Id (r=E9fFormationActivit=E9Liste ) ainsi cr=E9=E9 dans la table Format=
ion.

-Les deux tables sont vides le 1er enregistrement se cr=E9e bien dans
les deux tables.
-Le 2=E8me enregistrement aussi.
-Si je reviens sur le 1er enregistrement (avec les m=EAmes valeurs)
j=92obtiens une boucle sans fin.
-Si je reviens sur le 2=E8me enregistrement le code passe en bien par
Edit.

O=F9 se trouve mon erreur ?

Je joins le code, et merci pour votre aide.

Salutations

Private Sub Commande11_Click()
On Error GoTo GestionErreur

Set db =3D CurrentDb()

'--- Int=E9rogation de rsFormaListe
Set rsFormaListe =3D db.OpenRecordset("tbl Formations-Activit=E9s-
Liste", dbOpenDynaset)

'--- Int=E9rogation de rsFormation
Set rsFormation =3D db.OpenRecordset("tbl Formations",
dbOpenDynaset)

'--- Test sur base vide
If rsFormaListe.RecordCount =3D 0 Then
rsFormaListe.AddNew
rsFormaListe("r=E9fActivit=E9Liste") =3D Me.txtR=E9fActivit=E9Lis=
te
rsFormaListe("r=E9fActivit=E9Option") =3D Val(Me.cmbOption)
rsFormaListe("r=E9fFormationListe") =3D Val(Me.cmbFormation)
lngCodeR=E9f =3D rsFormaListe("R=E9fFormationActivit=E9Liste")

rsFormation.AddNew
rsFormation("r=E9fAnimateur") =3D Nz(TxtR=E9fAnimateur.Value, 0)
rsFormation("DatesDu") =3D Nz(txtDateDu.Value)
rsFormation("DatesAu") =3D Nz(txtDateAu.Value)
rsFormation("r=E9fFormationActivit=E9Liste") =3D lngCodeR=E9f
rsFormation.Update
rsFormaListe.Update
End If

'--- Boucle sur la table rsFormaliste
Do While Not rsFormaListe.EOF

'--- Recherche si l'enregistrement est trouv=E9
rsFormaListe.FindFirst "[R=E9fActivit=E9Liste]=3D" & Val
(Me.txtR=E9fActivit=E9Liste) & " And " & _
"[R=E9fActivit=E9Option]=3D" & Val
(Me.cmbOption) & " And " & _
"[R=E9fFormationListe]=3D" & Val
(Me.cmbFormation)

'--- Test sur NoMatch
If rsFormaListe.NoMatch Then
rsFormaListe.AddNew
rsFormaListe("r=E9fActivit=E9Liste") =3D Me.txtR=E9fActivit=E9Lis=
te
rsFormaListe("r=E9fActivit=E9Option") =3D Val(Me.cmbOption)
rsFormaListe("r=E9fFormationListe") =3D Val(Me.cmbFormation)
lngCodeR=E9f =3D rsFormaListe("R=E9fFormationActivit=E9Liste")
Else

'--- Trouv=E9 NoMatch vaut True on met =E0 jours
rsFormaListe.Edit
End If
rsFormaListe("r=E9fActivit=E9Liste") =3D Me.txtR=E9fActivit=E9Lis=
te
rsFormaListe("r=E9fActivit=E9Option") =3D Val(Me.cmbOption)
rsFormaListe("r=E9fFormationListe") =3D Val(Me.cmbFormation)
lngCodeR=E9f =3D rsFormaListe("R=E9fFormationActivit=E9Liste")
rsFormaListe.Update

'--- Maj et Ajout dans la tbl rsFormation

'--- Recherche si l'enregistrement est trouv=E9
rsFormation.FindFirst "[R=E9fFormationActivit=E9Liste]=3D" &
rsFormaListe![R=E9fFormationActivit=E9Liste]

'--- Non trouv=E9 NoMatch vaut False on ajoute
If rsFormation.NoMatch Then
rsFormation.AddNew
rsFormation("r=E9fAnimateur") =3D Nz(TxtR=E9fAnimateur.Value, 0)
rsFormation("r=E9fFormationActivit=E9Liste") =3D lngCodeR=E9f
Else

'--- Trouv=E9 NoMatch vaut True on met =E0 jours
rsFormation.Edit
End If
rsFormation("r=E9fAnimateur") =3D Nz(TxtR=E9fAnimateur.Value, 0)
rsFormation("DatesDu") =3D Nz(txtDateDu.Value)
rsFormation("DatesAu") =3D Nz(txtDateAu.Value)
rsFormation.Update
rsFormaListe.MoveNext
Loop

'--- M=E0j du sous formulaire
Forms![frm M=E0j Formations]![frm M=E0j Formations-sfm].Requery

'--- Ferme les objet
rsFormaListe.Close: Set rsFormaListe =3D Nothing
rsFormation.Close: Set rsFormation =3D Nothing
db.Close: Set db =3D Nothing

GestionErreur:

End Sub

10 réponses

1 2
Avatar
Jacques
On 28 déc, 19:09, Michel__D
wrote:
Jacques a crit :

[...]

> Bonjour Michel_D

> La finalit de ma base est en autre la suivi des formations.

> Je joins un sch ma relationel un peu plus complet.

>http://cjoint.com/?mxnvEtltCv

> Salutations

J'avais pas vu la r ponse, bon j'ai pas beaucoup de temps mais je vais
essayer de te proposer
 une solution d s que possible.



Bonsoir Michel_D,

Merci de t'occuper de mon problème, et dans l'attente je te souhaite
de bonnes
fêtes de fin d'année.

Salutations
Avatar
Michel__D
Bonjour,

Jacques a écrit :
On 28 déc, 19:09, Michel__D
wrote:

Jacques a crit :

[...]


Bonjour Michel_D

La finalit de ma base est en autre la suivi des formations.

Je joins un sch ma relationel un peu plus complet.

http://cjoint.com/?mxnvEtltCv

Salutations



J'avais pas vu la r ponse, bon j'ai pas beaucoup de temps mais je vais
essayer de te proposer
une solution d s que possible.




Bonsoir Michel_D,

Merci de t'occuper de mon problème, et dans l'attente je te souhaite
de bonnes
fêtes de fin d'année.

Salutations




Voici ma proposition :

http://cjoint.com/?mDuxS4uI4N

PS:Théoriquement j'ai pas trop modifié l'aspect visuel, j'ai rajouté un
bouton "Ajouter" pour ajouter
et un bouton "Précédent" pour pouvoir revenir en arrière en cas d'erreur.
Avatar
Jacques
On 29 déc 2009, 20:29, Michel__D
wrote:
Bonjour,

Jacques a crit :





> On 28 d c, 19:09, Michel__D
> wrote:

>> Jacques a crit :

>> [...]

>>> Bonjour Michel_D

>>> La finalit de ma base est en autre la suivi des formations.

>>> Je joins un sch ma relationel un peu plus complet.

>>>http://cjoint.com/?mxnvEtltCv

>>> Salutations

>> J'avais pas vu la r ponse, bon j'ai pas beaucoup de temps mais je vais
>> essayer de te proposer
>>  une solution d s que possible.

> Bonsoir Michel_D,

> Merci de t'occuper de mon probl me, et dans l'attente je te souhaite
> de bonnes
> f tes de fin d'ann e.

> Salutations

Voici ma proposition :

http://cjoint.com/?mDuxS4uI4N

PS:Th oriquement j'ai pas trop modifi l'aspect visuel, j'ai rajout un
bouton "Ajouter" pour ajouter
 et un bouton "Pr c dent" pour pouvoir revenir en arri re en cas d'erre ur.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour Michel_D

Merci pour le fichier joint.

J’ai fait deux manipulations et voici le résultat :

1-Première manipulation
Choix :
Recherche à A Jos
Formation AFPS
Otion a
Click sur valider qui est visible
L’enregistrement s’affiche dans le sous formulaire, et le Contrôle
Ajouter devient visible.

2- Deuxième manipulation
Choix :
Recherche toujours à A Jos
Formation TCPA
Option a
Contrôle Modifier et Ajouter visible
Click sur ajouté
Tous les champs du frm deviennent vides, aucun enregistrement ne
s’affiche sur le sous frm.
Fermeture de frm pour vérifier si l’enregistrement s’est bien
fait, résultat : pas de 2ème enregistrement.

Peux-tu me commenter ces lignes :

SysCmd acSysCmdSetStatus, " "

bModif = bModif – 2

et

If bModif > -2 Then
Me.Requery
DoCmd.GoToRecord , , acLast
Else
Me.Refresh
End If

De même je ne comprends pas comment s’ajoute l’enregistrement dans
La tbl Formations.

Salutations
Avatar
Michel__D
Jacques a écrit :
[...]
Voici ma proposition :

http://cjoint.com/?mDuxS4uI4N

PS:Th oriquement j'ai pas trop modifi l'aspect visuel, j'ai rajout un
bouton "Ajouter" pour ajouter
et un bouton "Pr c dent" pour pouvoir revenir en arri re en cas d'erreur.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -




Bonjour Michel_D

Merci pour le fichier joint.

J’ai fait deux manipulations et voici le résultat :

1-Première manipulation
Choix :
Recherche à A Jos
Formation AFPS
Otion a
Click sur valider qui est visible
L’enregistrement s’affiche dans le sous formulaire, et le Contrôle
Ajouter devient visible.

2- Deuxième manipulation
Choix :
Recherche toujours à A Jos
Formation TCPA
Option a
Contrôle Modifier et Ajouter visible
Click sur ajouté
Tous les champs du frm deviennent vides, aucun enregistrement ne
s’affiche sur le sous frm.
Fermeture de frm pour vérifier si l’enregistrement s’est bien
fait, résultat : pas de 2ème enregistrement.

Peux-tu me commenter ces lignes :

SysCmd acSysCmdSetStatus, " "

bModif = bModif – 2

et

If bModif > -2 Then
Me.Requery
DoCmd.GoToRecord , , acLast
Else
Me.Refresh
End If

De même je ne comprends pas comment s’ajoute l’enregistrement dans
La tbl Formations.

Salutations




Alors le fait de baser la source du formulaire sur la table [tbl
Formations] fait que la gestion
des enregistrements est géré automatiquement (c'est la méthode à
priviliégier).

Maintenant il y a 2 situations à gérer :
1) On ajoute un enregistrement, soit lorsque l'on ouvre le formulaire ou
lorsqu'on clique sur le
bouton "Ajouter"

2) On modifie soit un enregistrement existant ou soit un enregistrement
que l'on vient d'ajouter
et il faut donc impérativement "Valider" la modification.

Ce qui fait qu'aprés avoir cliquer sur le bouton "Ajouter" et saisi des
valeurs il faut "Valider"
pour que celle-ci soient stokés dans la table (c'est la raison d'être du
bouton "Valider").

Explications sur le code :

SysCmd acSysCmdSetStatus, " "
=> C'est pour effacer ce qui a été affiché dans la barre d'état (je m'en
sers pour afficher les
messages d'erreurs en phase de débug)


bModif = bModif – 2
=> Cette variable globale indique si on ajoute un enregistrement ou si
on modifie un enregistrement, de plus sa valeur autorise ou non la
mise à jour du formulaire.

bModif=0 => procédure de validation terminé aprés avoir cliqué sur "Valider".

bModif=1 => Soit on vient d'ouvrir le formulaire ou soit on a cliqué sur "Ajouter".

bModif=-2 => On valide les modifications d'un enregistrement existant
(on entre dans la procédure de validation)

bModif=-1 => On valide l'ajout et les valeurs d'un nouvel enregistrement.
(on entre dans la procédure de validation)


Et donc ce qui suit c'est pour traiter les deux cas (ajout ou modif)

If bModif > -2 Then
' On traite l'ajout d'un nouvel enregistrement
Me.Requery
' On se positionne sur le dernier élément
DoCmd.GoToRecord , , acLast
Else
' On traite une modif d'un enregistrement existant
Me.Refresh
End If


PS:En fait la variable bModif sert aussi à ne pas provoquer une mise à
jour de l'enregistrement en cours lorsque l'on quitte le formulaire
sans avoir cliquer sur "Valider".
Avatar
Jacques
On 2 jan, 13:16, Michel__D
wrote:
Jacques a écrit :





>> [...]
>> Voici ma proposition :

>>http://cjoint.com/?mDuxS4uI4N

>> PS:Th oriquement j'ai pas trop modifi l'aspect visuel, j'ai rajout un
>> bouton "Ajouter" pour ajouter
>>  et un bouton "Pr c dent" pour pouvoir revenir en arri re en cas d'e rreur.- Masquer le texte des messages précédents -

>> - Afficher le texte des messages précédents -

> Bonjour Michel_D

> Merci pour le fichier joint.

> J’ai fait deux manipulations et voici le résultat :

> 1-Première manipulation
> Choix :
> Recherche à A Jos
> Formation AFPS
> Otion a
> Click sur valider qui est visible
>  L’enregistrement s’affiche dans le sous formulaire, et le Contr ôle
> Ajouter devient visible.

> 2- Deuxième manipulation
>      Choix :
>      Recherche toujours à A Jos
>      Formation TCPA
>      Option a
>      Contrôle Modifier et Ajouter visible
>      Click sur ajouté
>      Tous les champs du frm deviennent vides, aucun enregistremen t ne
> s’affiche sur le sous frm.
>      Fermeture de frm  pour vérifier si l’enregistrement s ’est bien
> fait, résultat : pas de 2ème enregistrement.

> Peux-tu me commenter ces lignes :

> SysCmd acSysCmdSetStatus, " "

> bModif = bModif – 2

> et

> If bModif > -2 Then
>     Me.Requery
>     DoCmd.GoToRecord , , acLast
>   Else
>     Me.Refresh
> End If

> De même je ne comprends pas comment s’ajoute l’enregistrement dan s
> La tbl Formations.

> Salutations

Alors le fait de baser la source du formulaire sur la table [tbl
Formations] fait que la gestion
des enregistrements est géré automatiquement (c'est la méthode à
priviliégier).

Maintenant il y a 2 situations à gérer :
1) On ajoute un enregistrement, soit lorsque l'on ouvre le formulaire ou
lorsqu'on clique sur le
bouton "Ajouter"

2) On modifie soit un enregistrement existant ou soit un enregistrement
que l'on vient d'ajouter
et il faut donc impérativement "Valider" la modification.

Ce qui fait qu'aprés avoir cliquer sur le bouton "Ajouter" et saisi des
valeurs il faut "Valider"
pour que celle-ci soient stokés dans la table (c'est la raison d'être du
bouton "Valider").

Explications sur le code :

SysCmd acSysCmdSetStatus, " "
=> C'est pour effacer ce qui a été affiché dans la barre d'état (je m'en
sers pour afficher les
messages d'erreurs en phase de débug)

bModif = bModif – 2
=> Cette variable globale indique si on ajoute un enregistrement ou si
 on modifie un enregistrement, de plus sa valeur autorise ou non la
 mise à jour du formulaire.

bModif=0 => procédure de validation terminé aprés avoir cliqu é sur "Valider".

bModif=1 => Soit on vient d'ouvrir le formulaire ou soit on a cliqu é sur "Ajouter".

bModif=-2 => On valide les modifications d'un enregistrement existant
 (on entre dans la procédure de validation)

bModif=-1 => On valide l'ajout et les valeurs d'un nouvel enregistrem ent.
 (on entre dans la procédure de validation)

Et donc ce qui suit c'est pour traiter les deux cas (ajout ou modif)

If bModif > -2 Then
' On traite l'ajout d'un nouvel enregistrement
    Me.Requery
' On se positionne sur le dernier élément
    DoCmd.GoToRecord , , acLast
  Else
' On traite une modif d'un enregistrement existant
    Me.Refresh
End If

PS:En fait la variable bModif sert aussi à ne pas provoquer une mise à
 jour de l'enregistrement en cours lorsque l'on quitte le formulaire
 sans avoir cliquer sur "Valider".- Masquer le texte des messages pré cédents -

- Afficher le texte des messages précédents -



Bonjour Michel_D

Je commence à comprendre le fonctionnement de la saisie des
formations.

Quelques remarques :

1-Je ne dois pas pouvoir saisir 2 fois la même formation pour un même
animateur
(C’est-à-dire deus fois le même numéro RéfFormations-Activité-L iste
dans la table
Tbl Formations).

2-Lorsque l’on fait ajouter pour un même animateur comment faire
pour garder les même valeurs dans les champs, et ne pas de
nouveaux rechercher par la liste déroulante le nom du même animateurs.

3-je n’ai pas compris cette phrase « 1) On ajoute un enregistrement,
soit lorsque l’on ouvre le formulaire »

4-Pour modifier un enregistrement existant comment choisir et voir
l’enregistrement que l’on veut modifier.

J’espère que je n’exagère pas trop avec mes questions ?

Salutations.
Avatar
Michel__D
Jacques a écrit :
On 2 jan, 13:16, Michel__D
wrote:

Jacques a écrit :






[...]
Voici ma proposition :

http://cjoint.com/?mDuxS4uI4N

PS:Th oriquement j'ai pas trop modifi l'aspect visuel, j'ai rajout un
bouton "Ajouter" pour ajouter
et un bouton "Pr c dent" pour pouvoir revenir en arri re en cas d'erreur.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour Michel_D

Merci pour le fichier joint.

J’ai fait deux manipulations et voici le résultat :

1-Première manipulation
Choix :
Recherche à A Jos
Formation AFPS
Otion a
Click sur valider qui est visible
L’enregistrement s’affiche dans le sous formulaire, et le Contrôle
Ajouter devient visible.

2- Deuxième manipulation
Choix :
Recherche toujours à A Jos
Formation TCPA
Option a
Contrôle Modifier et Ajouter visible
Click sur ajouté
Tous les champs du frm deviennent vides, aucun enregistrement ne
s’affiche sur le sous frm.
Fermeture de frm pour vérifier si l’enregistrement s’est bien
fait, résultat : pas de 2ème enregistrement.

Peux-tu me commenter ces lignes :

SysCmd acSysCmdSetStatus, " "

bModif = bModif – 2

et

If bModif > -2 Then
Me.Requery
DoCmd.GoToRecord , , acLast
Else
Me.Refresh
End If

De même je ne comprends pas comment s’ajoute l’enregistrement dans
La tbl Formations.

Salutations



Alors le fait de baser la source du formulaire sur la table [tbl
Formations] fait que la gestion
des enregistrements est géré automatiquement (c'est la méthode à
priviliégier).

Maintenant il y a 2 situations à gérer :
1) On ajoute un enregistrement, soit lorsque l'on ouvre le formulaire ou
lorsqu'on clique sur le
bouton "Ajouter"

2) On modifie soit un enregistrement existant ou soit un enregistrement
que l'on vient d'ajouter
et il faut donc impérativement "Valider" la modification.

Ce qui fait qu'aprés avoir cliquer sur le bouton "Ajouter" et saisi des
valeurs il faut "Valider"
pour que celle-ci soient stokés dans la table (c'est la raison d'être du
bouton "Valider").

Explications sur le code :

SysCmd acSysCmdSetStatus, " "
=> C'est pour effacer ce qui a été affiché dans la barre d'état (je m'en
sers pour afficher les
messages d'erreurs en phase de débug)

bModif = bModif – 2
=> Cette variable globale indique si on ajoute un enregistrement ou si
on modifie un enregistrement, de plus sa valeur autorise ou non la
mise à jour du formulaire.

bModif=0 => procédure de validation terminé aprés avoir cliqué sur "Valider".

bModif=1 => Soit on vient d'ouvrir le formulaire ou soit on a cliqué sur "Ajouter".

bModif=-2 => On valide les modifications d'un enregistrement existant
(on entre dans la procédure de validation)

bModif=-1 => On valide l'ajout et les valeurs d'un nouvel enregistrement.
(on entre dans la procédure de validation)

Et donc ce qui suit c'est pour traiter les deux cas (ajout ou modif)

If bModif > -2 Then
' On traite l'ajout d'un nouvel enregistrement
Me.Requery
' On se positionne sur le dernier élément
DoCmd.GoToRecord , , acLast
Else
' On traite une modif d'un enregistrement existant
Me.Refresh
End If

PS:En fait la variable bModif sert aussi à ne pas provoquer une mise à
jour de l'enregistrement en cours lorsque l'on quitte le formulaire
sans avoir cliquer sur "Valider".- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -




Bonjour Michel_D

Je commence à comprendre le fonctionnement de la saisie des
formations.

Quelques remarques :

1-Je ne dois pas pouvoir saisir 2 fois la même formation pour un même
animateur
(C’est-à-dire deus fois le même numéro RéfFormations-Activité-Liste
dans la table
Tbl Formations).




J'ai pas testé tout les cas de figure mais dés l'instant ou une valeur
est modifié (date, lieu, ...) la
propriété "Dirty" du formulaire passe à True (ce qui met en visibilité
le bouton "Valider").

2-Lorsque l’on fait ajouter pour un même animateur comment faire
pour garder les même valeurs dans les champs, et ne pas de
nouveaux rechercher par la liste déroulante le nom du même animateurs.




Tu peux par exemple mémoriser les valeurs des champs avant la mise à jour
(portion de code qui contient Me.Requery et Me.Refresh) et replacer ces
valeurs au niveau
des champs lorsque tu clique sur le bouton "Ajouter".

3-je n’ai pas compris cette phrase « 1) On ajoute un enregistrement,
soit lorsque l’on ouvre le formulaire »




Lorsque tu ouvre le formulaire c'est comme si tu avais cliqué sur le
bouton "Ajouter".

4-Pour modifier un enregistrement existant comment choisir et voir
l’enregistrement que l’on veut modifier.




Ha ben ce choix t'appartient, puisque tu as désactivé les outils de
navigation intégré.

J’espère que je n’exagère pas trop avec mes questions ?

Salutations.



Avatar
Jacques
On 3 jan, 19:11, Michel__D
wrote:
Jacques a écrit :





> On 2 jan, 13:16, Michel__D
> wrote:

>> Jacques a écrit :

>>>> [...]
>>>> Voici ma proposition :

>>>>http://cjoint.com/?mDuxS4uI4N

>>>> PS:Th oriquement j'ai pas trop modifi l'aspect visuel, j'ai rajout u n
>>>> bouton "Ajouter" pour ajouter
>>>>  et un bouton "Pr c dent" pour pouvoir revenir en arri re en cas d 'erreur.- Masquer le texte des messages précédents -

>>>> - Afficher le texte des messages précédents -

>>> Bonjour Michel_D

>>> Merci pour le fichier joint.

>>> J’ai fait deux manipulations et voici le résultat :

>>> 1-Première manipulation
>>> Choix :
>>> Recherche à A Jos
>>> Formation AFPS
>>> Otion a
>>> Click sur valider qui est visible
>>>  L’enregistrement s’affiche dans le sous formulaire, et le Cont rôle
>>> Ajouter devient visible.

>>> 2- Deuxième manipulation
>>>      Choix :
>>>      Recherche toujours à A Jos
>>>      Formation TCPA
>>>      Option a
>>>      Contrôle Modifier et Ajouter visible
>>>      Click sur ajouté
>>>      Tous les champs du frm deviennent vides, aucun enregistrem ent ne
>>> s’affiche sur le sous frm.
>>>      Fermeture de frm  pour vérifier si l’enregistrement s’est bien
>>> fait, résultat : pas de 2ème enregistrement.

>>> Peux-tu me commenter ces lignes :

>>> SysCmd acSysCmdSetStatus, " "

>>> bModif = bModif – 2

>>> et

>>> If bModif > -2 Then
>>>     Me.Requery
>>>     DoCmd.GoToRecord , , acLast
>>>   Else
>>>     Me.Refresh
>>> End If

>>> De même je ne comprends pas comment s’ajoute l’enregistrement d ans
>>> La tbl Formations.

>>> Salutations

>> Alors le fait de baser la source du formulaire sur la table [tbl
>> Formations] fait que la gestion
>> des enregistrements est géré automatiquement (c'est la méthode à
>> priviliégier).

>> Maintenant il y a 2 situations à gérer :
>> 1) On ajoute un enregistrement, soit lorsque l'on ouvre le formulaire ou
>> lorsqu'on clique sur le
>> bouton "Ajouter"

>> 2) On modifie soit un enregistrement existant ou soit un enregistremen t
>> que l'on vient d'ajouter
>> et il faut donc impérativement "Valider" la modification.

>> Ce qui fait qu'aprés avoir cliquer sur le bouton "Ajouter" et saisi des
>> valeurs il faut "Valider"
>> pour que celle-ci soient stokés dans la table (c'est la raison d'ê tre du
>> bouton "Valider").

>> Explications sur le code :

>> SysCmd acSysCmdSetStatus, " "
>> => C'est pour effacer ce qui a été affiché dans la barre d'é tat (je m'en
>> sers pour afficher les
>> messages d'erreurs en phase de débug)

>> bModif = bModif – 2
>> => Cette variable globale indique si on ajoute un enregistrement ou si
>>  on modifie un enregistrement, de plus sa valeur autorise ou non la
>>  mise à jour du formulaire.

>> bModif=0 => procédure de validation terminé aprés avoir cliq ué sur "Valider".

>> bModif=1 => Soit on vient d'ouvrir le formulaire ou soit on a cliq ué sur "Ajouter".

>> bModif=-2 => On valide les modifications d'un enregistrement exist ant
>>  (on entre dans la procédure de validation)

>> bModif=-1 => On valide l'ajout et les valeurs d'un nouvel enregist rement.
>>  (on entre dans la procédure de validation)

>> Et donc ce qui suit c'est pour traiter les deux cas (ajout ou modif)

>> If bModif > -2 Then
>> ' On traite l'ajout d'un nouvel enregistrement
>>     Me.Requery
>> ' On se positionne sur le dernier élément
>>     DoCmd.GoToRecord , , acLast
>>   Else
>> ' On traite une modif d'un enregistrement existant
>>     Me.Refresh
>> End If

>> PS:En fait la variable bModif sert aussi à ne pas provoquer une mise à
>>  jour de l'enregistrement en cours lorsque l'on quitte le formulaire
>>  sans avoir cliquer sur "Valider".- Masquer le texte des messages pr écédents -

>> - Afficher le texte des messages précédents -

> Bonjour Michel_D

> Je commence à comprendre le fonctionnement de la saisie des
> formations.

> Quelques remarques :

> 1-Je ne dois pas pouvoir saisir 2 fois la même formation pour un mê me
> animateur
> (C’est-à-dire deus fois le même numéro RéfFormations-Activit é-Liste
> dans la table
> Tbl Formations).

J'ai pas testé tout les cas de figure mais dés l'instant ou une valeu r
est modifié (date, lieu, ...) la
propriété "Dirty" du formulaire passe à True (ce qui met en visibil ité
le bouton "Valider").

> 2-Lorsque l’on fait ajouter pour un  même animateur comment faire
> pour  garder les    même valeurs dans les champs, et ne pas de
> nouveaux rechercher par la liste déroulante le nom du même animateu rs.

Tu peux par exemple mémoriser les valeurs des champs avant la mise à jour
(portion de code qui contient Me.Requery et Me.Refresh) et replacer ces
valeurs au niveau
des champs lorsque tu clique sur le bouton "Ajouter".

> 3-je n’ai pas compris cette phrase « 1) On ajoute un enregistrement ,
> soit lorsque l’on ouvre le formulaire »

Lorsque tu ouvre le formulaire c'est comme si tu avais cliqué sur le
bouton "Ajouter".

> 4-Pour modifier un enregistrement existant comment choisir et voir
> l’enregistrement que l’on veut modifier.

Ha ben ce choix t'appartient, puisque tu as désactivé les outils de
navigation intégré.



> J’espère que je n’exagère pas trop avec mes questions ?

> Salutations.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte des m essages précédents -

- Afficher le texte des messages précédents -



Bonjour Michel_D

Pour le maintien des valeurs j’ai fait cela mais çà coince.

Sur un module variable j’ai mis :
Public Z_StrNomPrenom As String

Sur le btn Valider après :
If bModif > -2 Then
Me.Requery
'passe au dernier enregistrement
DoCmd.GoToRecord , , acLast
Else
Me.Refresh
End If

J’ai rajouté :
Z_StrNomPrenom = Me.txtNomPrénom

Et sur le btn Ajouter après
DoCmd.GoToRecord , , acNewRec

J’ai rajouté :
Me.txtNomPrénom = Z_StrNomPrenom

Et j’ai l‘erreur :
Impossible d’attribuer une valeur à cet objet.

Salutations.
Avatar
Michel__D
Bonjour,

Jacques a écrit :
On 3 jan, 19:11, Michel__D
wrote:

Jacques a écrit :






On 2 jan, 13:16, Michel__D
wrote:

Jacques a écrit :

[...]
Voici ma proposition :

http://cjoint.com/?mDuxS4uI4N

PS:Th oriquement j'ai pas trop modifi l'aspect visuel, j'ai rajout un
bouton "Ajouter" pour ajouter
et un bouton "Pr c dent" pour pouvoir revenir en arri re en cas d'erreur.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour Michel_D

Merci pour le fichier joint.

J’ai fait deux manipulations et voici le résultat :

1-Première manipulation
Choix :
Recherche à A Jos
Formation AFPS
Otion a
Click sur valider qui est visible
L’enregistrement s’affiche dans le sous formulaire, et le Contrôle
Ajouter devient visible.

2- Deuxième manipulation
Choix :
Recherche toujours à A Jos
Formation TCPA
Option a
Contrôle Modifier et Ajouter visible
Click sur ajouté
Tous les champs du frm deviennent vides, aucun enregistrement ne
s’affiche sur le sous frm.
Fermeture de frm pour vérifier si l’enregistrement s’est bien
fait, résultat : pas de 2ème enregistrement.

Peux-tu me commenter ces lignes :

SysCmd acSysCmdSetStatus, " "

bModif = bModif – 2

et

If bModif > -2 Then
Me.Requery
DoCmd.GoToRecord , , acLast
Else
Me.Refresh
End If

De même je ne comprends pas comment s’ajoute l’enregistrement dans
La tbl Formations.

Salutations



Alors le fait de baser la source du formulaire sur la table [tbl
Formations] fait que la gestion
des enregistrements est géré automatiquement (c'est la méthode à
priviliégier).

Maintenant il y a 2 situations à gérer :
1) On ajoute un enregistrement, soit lorsque l'on ouvre le formulaire ou
lorsqu'on clique sur le
bouton "Ajouter"

2) On modifie soit un enregistrement existant ou soit un enregistrement
que l'on vient d'ajouter
et il faut donc impérativement "Valider" la modification.

Ce qui fait qu'aprés avoir cliquer sur le bouton "Ajouter" et saisi des
valeurs il faut "Valider"
pour que celle-ci soient stokés dans la table (c'est la raison d'être du
bouton "Valider").

Explications sur le code :

SysCmd acSysCmdSetStatus, " "
=> C'est pour effacer ce qui a été affiché dans la barre d'état (je m'en
sers pour afficher les
messages d'erreurs en phase de débug)

bModif = bModif – 2
=> Cette variable globale indique si on ajoute un enregistrement ou si
on modifie un enregistrement, de plus sa valeur autorise ou non la
mise à jour du formulaire.

bModif=0 => procédure de validation terminé aprés avoir cliqué sur "Valider".

bModif=1 => Soit on vient d'ouvrir le formulaire ou soit on a cliqué sur "Ajouter".

bModif=-2 => On valide les modifications d'un enregistrement existant
(on entre dans la procédure de validation)

bModif=-1 => On valide l'ajout et les valeurs d'un nouvel enregistrement.
(on entre dans la procédure de validation)

Et donc ce qui suit c'est pour traiter les deux cas (ajout ou modif)

If bModif > -2 Then
' On traite l'ajout d'un nouvel enregistrement
Me.Requery
' On se positionne sur le dernier élément
DoCmd.GoToRecord , , acLast
Else
' On traite une modif d'un enregistrement existant
Me.Refresh
End If

PS:En fait la variable bModif sert aussi à ne pas provoquer une mise à
jour de l'enregistrement en cours lorsque l'on quitte le formulaire
sans avoir cliquer sur "Valider".- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour Michel_D

Je commence à comprendre le fonctionnement de la saisie des
formations.

Quelques remarques :

1-Je ne dois pas pouvoir saisir 2 fois la même formation pour un même
animateur
(C’est-à-dire deus fois le même numéro RéfFormations-Activité-Liste
dans la table
Tbl Formations).



J'ai pas testé tout les cas de figure mais dés l'instant ou une valeur
est modifié (date, lieu, ...) la
propriété "Dirty" du formulaire passe à True (ce qui met en visibilité
le bouton "Valider").


2-Lorsque l’on fait ajouter pour un même animateur comment faire
pour garder les même valeurs dans les champs, et ne pas de
nouveaux rechercher par la liste déroulante le nom du même animateurs.



Tu peux par exemple mémoriser les valeurs des champs avant la mise à jour
(portion de code qui contient Me.Requery et Me.Refresh) et replacer ces
valeurs au niveau
des champs lorsque tu clique sur le bouton "Ajouter".


3-je n’ai pas compris cette phrase « 1) On ajoute un enregistrement,
soit lorsque l’on ouvre le formulaire »



Lorsque tu ouvre le formulaire c'est comme si tu avais cliqué sur le
bouton "Ajouter".


4-Pour modifier un enregistrement existant comment choisir et voir
l’enregistrement que l’on veut modifier.



Ha ben ce choix t'appartient, puisque tu as désactivé les outils de
navigation intégré.




J’espère que je n’exagère pas trop avec mes questions ?

Salutations.- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -




Bonjour Michel_D

Pour le maintien des valeurs j’ai fait cela mais çà coince.

Sur un module variable j’ai mis :
Public Z_StrNomPrenom As String

Sur le btn Valider après :
If bModif > -2 Then
Me.Requery
'passe au dernier enregistrement
DoCmd.GoToRecord , , acLast
Else
Me.Refresh
End If

J’ai rajouté :
Z_StrNomPrenom = Me.txtNomPrénom

Et sur le btn Ajouter après
DoCmd.GoToRecord , , acNewRec

J’ai rajouté :
Me.txtNomPrénom = Z_StrNomPrenom

Et j’ai l‘erreur :
Impossible d’attribuer une valeur à cet objet.

Salutations.



Hou la, je crains que tu n'ai pas bien compris, il faut mémoriser les
champs qui corespondent
aux champs de la table/requête source et je t'avais suggéré de mémoriser
la valeurs de ces
ces avant la mise à jour c'est à dire avant la portion de code qui
contient Me.Requery et
Me.Refresh et toi tu le fais aprés cette portion de code.

Voici le nom des champs susceptibles d'être mémoriser et restaurer :
"cmbRecherche" => [RefAnimateur] (Numérique)
"txtRang" => [Rang] (texte)
"txtDateDu" => [DatesDu] (Date)
"txtDateAu" => [DatesAu] (Date)
"cmbVille" => [Lieu] (Numérique)
"txtDateValidation" => [Valide le] (Date)
"txtDateRecyclage" => [Recyclage] (Date)
"txtRefFormationActiviteListe" => [RefFormationActiviteListe]
Avatar
Jacques
On 4 jan, 20:03, Michel__D
wrote:
Bonjour,

Jacques a écrit :



> On 3 jan, 19:11, Michel__D
> wrote:

>> Jacques a écrit :

>>> On 2 jan, 13:16, Michel__D
>>> wrote:

>>>> Jacques a écrit :

>>>>>> [...]
>>>>>> Voici ma proposition :

>>>>>>http://cjoint.com/?mDuxS4uI4N

>>>>>> PS:Th oriquement j'ai pas trop modifi l'aspect visuel, j'ai rajout un
>>>>>> bouton "Ajouter" pour ajouter
>>>>>>  et un bouton "Pr c dent" pour pouvoir revenir en arri re en cas d'erreur.- Masquer le texte des messages précédents -

>>>>>> - Afficher le texte des messages précédents -

>>>>> Bonjour Michel_D

>>>>> Merci pour le fichier joint.

>>>>> J’ai fait deux manipulations et voici le résultat :

>>>>> 1-Première manipulation
>>>>> Choix :
>>>>> Recherche à A Jos
>>>>> Formation AFPS
>>>>> Otion a
>>>>> Click sur valider qui est visible
>>>>>  L’enregistrement s’affiche dans le sous formulaire, et le Co ntrôle
>>>>> Ajouter devient visible.

>>>>> 2- Deuxième manipulation
>>>>>      Choix :
>>>>>      Recherche toujours à A Jos
>>>>>      Formation TCPA
>>>>>      Option a
>>>>>      Contrôle Modifier et Ajouter visible
>>>>>      Click sur ajouté
>>>>>      Tous les champs du frm deviennent vides, aucun enregistr ement ne
>>>>> s’affiche sur le sous frm.
>>>>>      Fermeture de frm  pour vérifier si l’enregistremen t s’est bien
>>>>> fait, résultat : pas de 2ème enregistrement.

>>>>> Peux-tu me commenter ces lignes :

>>>>> SysCmd acSysCmdSetStatus, " "

>>>>> bModif = bModif – 2

>>>>> et

>>>>> If bModif > -2 Then
>>>>>     Me.Requery
>>>>>     DoCmd.GoToRecord , , acLast
>>>>>   Else
>>>>>     Me.Refresh
>>>>> End If

>>>>> De même je ne comprends pas comment s’ajoute l’enregistrement dans
>>>>> La tbl Formations.

>>>>> Salutations

>>>> Alors le fait de baser la source du formulaire sur la table [tbl
>>>> Formations] fait que la gestion
>>>> des enregistrements est géré automatiquement (c'est la méthode à
>>>> priviliégier).

>>>> Maintenant il y a 2 situations à gérer :
>>>> 1) On ajoute un enregistrement, soit lorsque l'on ouvre le formulair e ou
>>>> lorsqu'on clique sur le
>>>> bouton "Ajouter"

>>>> 2) On modifie soit un enregistrement existant ou soit un enregistrem ent
>>>> que l'on vient d'ajouter
>>>> et il faut donc impérativement "Valider" la modification.

>>>> Ce qui fait qu'aprés avoir cliquer sur le bouton "Ajouter" et sais i des
>>>> valeurs il faut "Valider"
>>>> pour que celle-ci soient stokés dans la table (c'est la raison d' être du
>>>> bouton "Valider").

>>>> Explications sur le code :

>>>> SysCmd acSysCmdSetStatus, " "
>>>> => C'est pour effacer ce qui a été affiché dans la barre d' état (je m'en
>>>> sers pour afficher les
>>>> messages d'erreurs en phase de débug)

>>>> bModif = bModif – 2
>>>> => Cette variable globale indique si on ajoute un enregistrement o u si
>>>>  on modifie un enregistrement, de plus sa valeur autorise ou non l a
>>>>  mise à jour du formulaire.

>>>> bModif=0 => procédure de validation terminé aprés avoir cl iqué sur "Valider".

>>>> bModif=1 => Soit on vient d'ouvrir le formulaire ou soit on a cl iqué sur "Ajouter".

>>>> bModif=-2 => On valide les modifications d'un enregistrement exi stant
>>>>  (on entre dans la procédure de validation)

>>>> bModif=-1 => On valide l'ajout et les valeurs d'un nouvel enregi strement.
>>>>  (on entre dans la procédure de validation)

>>>> Et donc ce qui suit c'est pour traiter les deux cas (ajout ou modif)

>>>> If bModif > -2 Then
>>>> ' On traite l'ajout d'un nouvel enregistrement
>>>>     Me.Requery
>>>> ' On se positionne sur le dernier élément
>>>>     DoCmd.GoToRecord , , acLast
>>>>   Else
>>>> ' On traite une modif d'un enregistrement existant
>>>>     Me.Refresh
>>>> End If

>>>> PS:En fait la variable bModif sert aussi à ne pas provoquer une mi se à
>>>>  jour de l'enregistrement en cours lorsque l'on quitte le formulai re
>>>>  sans avoir cliquer sur "Valider".- Masquer le texte des messages précédents -

>>>> - Afficher le texte des messages précédents -

>>> Bonjour Michel_D

>>> Je commence à comprendre le fonctionnement de la saisie des
>>> formations.

>>> Quelques remarques :

>>> 1-Je ne dois pas pouvoir saisir 2 fois la même formation pour un m ême
>>> animateur
>>> (C’est-à-dire deus fois le même numéro RéfFormations-Activi té-Liste
>>> dans la table
>>> Tbl Formations).

>> J'ai pas testé tout les cas de figure mais dés l'instant ou une va leur
>> est modifié (date, lieu, ...) la
>> propriété "Dirty" du formulaire passe à True (ce qui met en visi bilité
>> le bouton "Valider").

>>> 2-Lorsque l’on fait ajouter pour un  même animateur comment fai re
>>> pour  garder les    même valeurs dans les champs, et ne pas d e
>>> nouveaux rechercher par la liste déroulante le nom du même animat eurs.

>> Tu peux par exemple mémoriser les valeurs des champs avant la mise à jour
>> (portion de code qui contient Me.Requery et Me.Refresh) et replacer ce s
>> valeurs au niveau
>> des champs lorsque tu clique sur le bouton "Ajouter".

>>> 3-je n’ai pas compris cette phrase « 1) On ajoute un enregistreme nt,
>>> soit lorsque l’on ouvre le formulaire »

>> Lorsque tu ouvre le formulaire c'est comme si tu avais cliqué sur le
>> bouton "Ajouter".

>>> 4-Pour modifier un enregistrement existant comment choisir et voir
>>> l’enregistrement que l’on veut modifier.

>> Ha ben ce choix t'appartient, puisque tu as désactivé les outils d e
>> navigation intégré.

>>> J’espère que je n’exagère pas trop avec mes questions ?

>>> Salutations.- Masquer le texte des messages précédents -

>> - Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -

>> - Afficher le texte des messages précédents -

> Bonjour Michel_D

> Pour le maintien des valeurs j’ai fait cela mais çà coince.

> Sur un module variable j’ai mis :
>  Public Z_StrNomPrenom As String

> Sur le btn Valider après :
> If bModif > -2 Then
>     Me.Requery
>     'passe au dernier enregistrement
>     DoCmd.GoToRecord , , acLast
>   Else
>     Me.Refresh
> End If

> J’ai rajouté :
>   Z_StrNomPrenom = Me.txtNomPrénom

> Et sur le btn Ajouter après
> DoCmd.GoToRecord , , acNewRec

> J’ai rajouté :
> Me.txtNomPrénom = Z_StrNomPrenom

> Et j’ai l‘erreur :
> Impossible d’attribuer une valeur à cet objet.

> Salutations.

Hou la, je crains que tu n'ai pas bien compris, il faut mémoriser les
champs qui corespondent
aux champs de la table/requête source et je t'avais suggéré de mé moriser
la valeurs de ces
ces avant la mise à jour c'est à dire avant la portion de code qui
contient Me.Requery et
Me.Refresh et toi tu le fais aprés cette portion de code.

Voici le nom des champs susceptibles d'être mémoriser et restaurer :
"cmbRecherche" => [RefAnimateur] (Numérique)
"txtRang" => [Rang] (texte)
"txtDateDu" => [DatesDu] (Date)
"txtDateAu" => [DatesAu] (Date)
"cmbVille" => [Lieu] (Numérique)
"txtDateValidation" => [Valide le] (Date)
"txtDateRecyclage" => [Recyclage] (Date)
"txtRefFormationActiviteListe" => [RefFormationActiviteListe]- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour Michel_D

Bon j’ai réussi à mémoriser les champs et les restaurer, mon erreur
était de faire des essais
sur un champ ( txtNomPrénom) qui ne pouvait pas être mémorisé.

Pour régler le problème :
1-Je ne dois pas pouvoir saisir 2 fois la même formation pour un même
animateur

J’ai indexé à Oui sans doublon le champ « RefFormationActiviteList e »
et récupéré
l’erreur dans le module suivant :

Sub GestionErreur(sVal)
If Err = 3022 Then
MsgBox "Vous avez choisi une formation qui existe déjà"
Else
MsgBox "Erreur " & Err & " sur : '" & sVal & "'" & vbCrLf &
Err.Description

End If
bModif = False
Me.frm_Màj_Formations_sfm.Requery
End Sub

Cette méthode est-telle correcte ?

Je voudrais maintenant régler deux autres points :

Le 1er j’ai déjà essayé sans succès. A l’ouverture du formulair e
lorsque je choisis
Un formateur les enregistrements apparaissent bien dans le sous-
formulaire.
Si je choisis un autre formateur les enregistrements ne changent pas.

J’ai mis à l’ouverture du formulaire, sur le btn Ajouter, sur le btn
valider, sur le
cmb recherche le requery suivant :

Me.frm_Màj_Formations_sfm.Requery.

Les champs pères et fils sont « RefAnimateur »

Le 2ème que je n’ai pas encore essayé de faire, est de mettre a côt é
du btn modifier
Un champ qui indique le numéro d’enregistrement que l’on veut
modifier.

Ah ! encore une petite explication, à quoi sert ce test :

If TypeName(oRst) <> "Recordset" Then Set oRst = Me.RecordsetClone


Salutations
Avatar
Michel__D
Bonjour,

Jacques a écrit :

[...]

Bonjour Michel_D

Pour le maintien des valeurs j’ai fait cela mais çà coince.

Sur un module variable j’ai mis :
Public Z_StrNomPrenom As String

Sur le btn Valider après :
If bModif > -2 Then
Me.Requery
'passe au dernier enregistrement
DoCmd.GoToRecord , , acLast
Else
Me.Refresh
End If

J’ai rajouté :
Z_StrNomPrenom = Me.txtNomPrénom

Et sur le btn Ajouter après
DoCmd.GoToRecord , , acNewRec

J’ai rajouté :
Me.txtNomPrénom = Z_StrNomPrenom

Et j’ai l‘erreur :
Impossible d’attribuer une valeur à cet objet.

Salutations.



Hou la, je crains que tu n'ai pas bien compris, il faut mémoriser les
champs qui corespondent
aux champs de la table/requête source et je t'avais suggéré de mémoriser
la valeurs de ces
ces avant la mise à jour c'est à dire avant la portion de code qui
contient Me.Requery et
Me.Refresh et toi tu le fais aprés cette portion de code.

Voici le nom des champs susceptibles d'être mémoriser et restaurer :
"cmbRecherche" => [RefAnimateur] (Numérique)
"txtRang" => [Rang] (texte)
"txtDateDu" => [DatesDu] (Date)
"txtDateAu" => [DatesAu] (Date)
"cmbVille" => [Lieu] (Numérique)
"txtDateValidation" => [Valide le] (Date)
"txtDateRecyclage" => [Recyclage] (Date)
"txtRefFormationActiviteListe" => [RefFormationActiviteListe]- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -




Bonjour Michel_D

Bon j’ai réussi à mémoriser les champs et les restaurer, mon erreur
était de faire des essais
sur un champ ( txtNomPrénom) qui ne pouvait pas être mémorisé.

Pour régler le problème :
1-Je ne dois pas pouvoir saisir 2 fois la même formation pour un même
animateur

J’ai indexé à Oui sans doublon le champ « RefFormationActiviteListe »
et récupéré




Hum, plusieurs animateurs peuvent suivre la même formation donc indxé
oui mais avec doublons.

l’erreur dans le module suivant :

Sub GestionErreur(sVal)
If Err = 3022 Then
MsgBox "Vous avez choisi une formation qui existe déjà"
Else
MsgBox "Erreur " & Err & " sur : '" & sVal & "'" & vbCrLf &
Err.Description

End If
bModif = False
Me.frm_Màj_Formations_sfm.Requery
End Sub

Cette méthode est-telle correcte ?




Ben vu que le type d'indexation est incorrect, il faut revoir la
vérification de la validité de ce champ
(faire par exemple une recherche dans la table avec les valeurs concernés).

Je voudrais maintenant régler deux autres points :

Le 1er j’ai déjà essayé sans succès. A l’ouverture du formulaire
lorsque je choisis
Un formateur les enregistrements apparaissent bien dans le sous-
formulaire.
Si je choisis un autre formateur les enregistrements ne changent pas.

J’ai mis à l’ouverture du formulaire, sur le btn Ajouter, sur le btn
valider, sur le
cmb recherche le requery suivant :

Me.frm_Màj_Formations_sfm.Requery.

Les champs pères et fils sont « RefAnimateur »

Le 2ème que je n’ai pas encore essayé de faire, est de mettre a côté
du btn modifier
Un champ qui indique le numéro d’enregistrement que l’on veut
modifier.




Tes problèmes sont liés au fait que tu as désactivé les contrôles de
navigation intégré alors
qu'apparemment tu souhaite naviguer dans les enregistrements, donc le
plus simple serait
de réactiver ces contrôles de navigation car sinon cela veut dire que
c'est à toi de tout gérer
et c'est un choix qu'il faut assumer.

Ah ! encore une petite explication, à quoi sert ce test :

If TypeName(oRst) <> "Recordset" Then Set oRst = Me.RecordsetClone




Je teste le type de la variable oRst et s'il ne correspond pas à
"Recordset", je crée la variable Objet oRst.


Salutations



1 2