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

Problème de désactivation du bouton suivant

9 réponses
Avatar
Skalia
Bonjour,

Dans un formulaire de recherche j'ai recréé les boutons suivant et
précédant, je souhaite que ces boutons soient inactifs lorsque l'on est sur
la première fiche (bouton précédant) et sur la dernière fiche (bouton
suivant).
J'ai trouvé ce code que j'ai adapté :

Private Sub Form_Current()
Me.Refresh
'Désactive le bouton Précédent si on est au premier enregistrement
If Me.CurrentRecord = 1 Then
CmdFiltre.SetFocus
cmd_prec.Enabled = False
Else
cmd_prec.Enabled = True
End If

'Désactive le bouton Suivant si on est au dernier enregistrement
If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then
CmdFiltre.SetFocus
cmd_suiv.Enabled = False
Else
cmd_suiv.Enabled = True
End If
CmdFiltre.Enabled = True
End Sub

Le code pour le bouton précédant fonctionne, par contre la commande
"Me.CurrentRecord = Me.RecordsetClone.RecordCount" desactive les deux boutons
sur le premier enregistrement.
Si je mets "Me.CurrentRecord > Me.RecordsetClone.RecordCount" Alors cela
fonctionne (mais ne sert plus à grand chose).

De même si je vais sur le deuxième enregistrement par un autre moyen et que
je retourne au premier enregistrement le bouton suivant sur la première fiche
fonctionne.

Quelqu'un a t il une idée de la raison pour laquelle cela ne fonctionne pas
?
Y a t il une solution ?

Merci
Skalia

9 réponses

Avatar
Eric
Bonjour,

Tu veux dire qu'à l'ouverture de ton formulaire les 2 boutons sont
désactivés. Cela est normal car le Me.RecordCount vaut 1 donc tu passes
dans le 1er test *mais aussi* la valeur de Me.RecordsetClone.RecordCount
est 1 car tu n'as pas encore parcourru le jeu d'enregistrements et donc
tu passes dans le 2eme test. Résultat : tout bloqué :-(

Pour contourner cela sans devoir se déplacer à la fin du jeu et revenir
au 1er enregistrement je mettrai en condition du 2eme test :
If Me.CurrentRecord = Me.RecordsetClone.RecordCount _
And Me.CurrentRecord <> 1 Then

Bonjour,

Dans un formulaire de recherche j'ai recréé les boutons suivant et
précédant, je souhaite que ces boutons soient inactifs lorsque l'on est sur
la première fiche (bouton précédant) et sur la dernière fiche (bouton
suivant).
J'ai trouvé ce code que j'ai adapté :

Private Sub Form_Current()
Me.Refresh
'Désactive le bouton Précédent si on est au premier enregistrement
If Me.CurrentRecord = 1 Then
CmdFiltre.SetFocus
cmd_prec.Enabled = False
Else
cmd_prec.Enabled = True
End If

'Désactive le bouton Suivant si on est au dernier enregistrement
If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then
CmdFiltre.SetFocus
cmd_suiv.Enabled = False
Else
cmd_suiv.Enabled = True
End If
CmdFiltre.Enabled = True
End Sub

Le code pour le bouton précédant fonctionne, par contre la commande
"Me.CurrentRecord = Me.RecordsetClone.RecordCount" desactive les deux boutons
sur le premier enregistrement.
Si je mets "Me.CurrentRecord > Me.RecordsetClone.RecordCount" Alors cela
fonctionne (mais ne sert plus à grand chose).

De même si je vais sur le deuxième enregistrement par un autre moyen et que
je retourne au premier enregistrement le bouton suivant sur la première fiche
fonctionne.

Quelqu'un a t il une idée de la raison pour laquelle cela ne fonctionne pas
?
Y a t il une solution ?

Merci
Skalia


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Skalia
Bonjour,

Merci d'avoir répondu aussi rapidement, malheureusement votre solution ne
fonctionne pas.

Mon formulaire s'ouvre sur une page vide dans laquelle il y a des champs de
recherche.
Ces champs de recherche sont associés à un filtre multicritère activé par le
bouton Cmd_filtre. Quand le filtre trouve un ou des réponses il affichent les
enregistrements de la table corrspondant au filtre.

Quand je lance le filtre les deux boutons sont grisés.

je vais essayer de forcer le comptage des enregistrements avant de lancer ma
condition.

voyez vous une autre solution ?

bien à vous
Skalia


Bonjour,

Tu veux dire qu'à l'ouverture de ton formulaire les 2 boutons sont
désactivés. Cela est normal car le Me.RecordCount vaut 1 donc tu passes
dans le 1er test *mais aussi* la valeur de Me.RecordsetClone.RecordCount
est 1 car tu n'as pas encore parcourru le jeu d'enregistrements et donc
tu passes dans le 2eme test. Résultat : tout bloqué :-(

Pour contourner cela sans devoir se déplacer à la fin du jeu et revenir
au 1er enregistrement je mettrai en condition du 2eme test :
If Me.CurrentRecord = Me.RecordsetClone.RecordCount _
And Me.CurrentRecord <> 1 Then

Bonjour,

Dans un formulaire de recherche j'ai recréé les boutons suivant et
précédant, je souhaite que ces boutons soient inactifs lorsque l'on est sur
la première fiche (bouton précédant) et sur la dernière fiche (bouton
suivant).
J'ai trouvé ce code que j'ai adapté :

Private Sub Form_Current()
Me.Refresh
'Désactive le bouton Précédent si on est au premier enregistrement
If Me.CurrentRecord = 1 Then
CmdFiltre.SetFocus
cmd_prec.Enabled = False
Else
cmd_prec.Enabled = True
End If

'Désactive le bouton Suivant si on est au dernier enregistrement
If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then
CmdFiltre.SetFocus
cmd_suiv.Enabled = False
Else
cmd_suiv.Enabled = True
End If
CmdFiltre.Enabled = True
End Sub

Le code pour le bouton précédant fonctionne, par contre la commande
"Me.CurrentRecord = Me.RecordsetClone.RecordCount" desactive les deux boutons
sur le premier enregistrement.
Si je mets "Me.CurrentRecord > Me.RecordsetClone.RecordCount" Alors cela
fonctionne (mais ne sert plus à grand chose).

De même si je vais sur le deuxième enregistrement par un autre moyen et que
je retourne au premier enregistrement le bouton suivant sur la première fiche
fonctionne.

Quelqu'un a t il une idée de la raison pour laquelle cela ne fonctionne pas
?
Y a t il une solution ?

Merci
Skalia


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
François Saintier
Bonjour,

Merci d'avoir répondu aussi rapidement, malheureusement votre solution ne
fonctionne pas.

Mon formulaire s'ouvre sur une page vide dans laquelle il y a des champs de
recherche.
Ces champs de recherche sont associés à un filtre multicritère activé par le
bouton Cmd_filtre. Quand le filtre trouve un ou des réponses il affichent les
enregistrements de la table corrspondant au filtre.

Quand je lance le filtre les deux boutons sont grisés.

je vais essayer de forcer le comptage des enregistrements avant de lancer ma
condition.

voyez vous une autre solution ?

bien à vous
Skalia


Bonjour,

Tu veux dire qu'à l'ouverture de ton formulaire les 2 boutons sont
désactivés. Cela est normal car le Me.RecordCount vaut 1 donc tu passes
dans le 1er test *mais aussi* la valeur de Me.RecordsetClone.RecordCount
est 1 car tu n'as pas encore parcourru le jeu d'enregistrements et donc
tu passes dans le 2eme test. Résultat : tout bloqué :-(

Pour contourner cela sans devoir se déplacer à la fin du jeu et revenir
au 1er enregistrement je mettrai en condition du 2eme test :
If Me.CurrentRecord = Me.RecordsetClone.RecordCount _
And Me.CurrentRecord <> 1 Then

Bonjour,

Dans un formulaire de recherche j'ai recréé les boutons suivant et
précédant, je souhaite que ces boutons soient inactifs lorsque l'on est sur
la première fiche (bouton précédant) et sur la dernière fiche (bouton
suivant).
J'ai trouvé ce code que j'ai adapté :

Private Sub Form_Current()
Me.Refresh
'Désactive le bouton Précédent si on est au premier enregistrement
If Me.CurrentRecord = 1 Then
CmdFiltre.SetFocus
cmd_prec.Enabled = False
Else
cmd_prec.Enabled = True
End If

'Désactive le bouton Suivant si on est au dernier enregistrement
If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then
CmdFiltre.SetFocus
cmd_suiv.Enabled = False
Else
cmd_suiv.Enabled = True
End If
CmdFiltre.Enabled = True
End Sub

Le code pour le bouton précédant fonctionne, par contre la commande
"Me.CurrentRecord = Me.RecordsetClone.RecordCount" desactive les deux
boutons sur le premier enregistrement.
Si je mets "Me.CurrentRecord > Me.RecordsetClone.RecordCount" Alors cela
fonctionne (mais ne sert plus à grand chose).

De même si je vais sur le deuxième enregistrement par un autre moyen et que
je retourne au premier enregistrement le bouton suivant sur la première
fiche fonctionne.

Quelqu'un a t il une idée de la raison pour laquelle cela ne fonctionne
pas ?
Y a t il une solution ?

Merci
Skalia


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Bonsoir
Je ne suis qu'un amateur mais j'avais créé il y a longtemps des boutons
identiques pour naviguer dans ma discothèque. Le principe était le
suivant
Si N°=1 alors
Bouton premier et bouton précédent sont inactifs
Bouton suivant et bouton dernier sont actifs
Sinon Si N°= dernier alors
Bouton premier et bouton précédent sont actifs
Bouton suivant et bouton dernier sont inactifs
Sinon
tous les boutons sont actifs

Espérant que celà vous aide
François



Avatar
Skalia
Bonjour,

merci pour vos réponses mais pour l'instant je ne trouve pas de solution
satisfaisante.

Quelqu'un pourrait il me dire si il est possible de forcer le comptage des
enregistrements (avant l'execution du code préalablement présenté)? je ne
suis pas parvenue à trouver le moyen de le faire.

merci d'avance.
Skalia
Avatar
François Saintier
Bonjour,

merci pour vos réponses mais pour l'instant je ne trouve pas de solution
satisfaisante.

Quelqu'un pourrait il me dire si il est possible de forcer le comptage des
enregistrements (avant l'execution du code préalablement présenté)? je ne
suis pas parvenue à trouver le moyen de le faire.

merci d'avance.
Skalia


Bonsoir
J'utilise un champ dans lequel j'ai le n° du dernier enregistrement par
la fonction MaxDom, ensuite j'utilise les conditions imbriquées dont je
te parlais dans ma réponse précédente, en me basant sur ce N° max.
Amicalement
François

Avatar
Skalia
Bonjour,

Malheureusement je ne peux pas utiliser le "maxdom" puisque je souhaite
appliquer ce code suite à un filtre.

c'est pourquoi je reste fixée sur le compte des enregistrements (le dernier
variant en fonction de la recherche)

Merci tout de même pour votre réponse et votre patience...
Skalia


Bonjour,

merci pour vos réponses mais pour l'instant je ne trouve pas de solution
satisfaisante.

Quelqu'un pourrait il me dire si il est possible de forcer le comptage des
enregistrements (avant l'execution du code préalablement présenté)? je ne
suis pas parvenue à trouver le moyen de le faire.

merci d'avance.
Skalia


Bonsoir
J'utilise un champ dans lequel j'ai le n° du dernier enregistrement par
la fonction MaxDom, ensuite j'utilise les conditions imbriquées dont je
te parlais dans ma réponse précédente, en me basant sur ce N° max.
Amicalement
François






Avatar
Eric
Bonjour,

Regardes si cet exemple peut te servir.
Saisir Nimes ou Pau retournera qu'1 seul enregistrement et les 2 boutons
inactifs, on ne peut pas se déplacer car 1 seul enregistrement; saisir
Paris retourne une dizaine avec le Bouton prec inactif au 1er affichage
puis les 2 boutons actifs lors des déplacements sauf sur le dernier
enregistrement où Bouton Suiv est rendu inactif.
Pour simuler ta page vide, j'ai mis un filtre sur ouverture du formulaire.

lien : http://cjoint.com/?eolbIITIsq

Bonjour,

Malheureusement je ne peux pas utiliser le "maxdom" puisque je souhaite
appliquer ce code suite à un filtre.

c'est pourquoi je reste fixée sur le compte des enregistrements (le dernier
variant en fonction de la recherche)

Merci tout de même pour votre réponse et votre patience...
Skalia



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Skalia
Boujour,

oui c'est ce code que j'essaye d'appliquer à ma base mais il ne fonctionne
toujours pas sur mon formulaire.
la seule diférence notable est que dans les propriétés j'ai "EntréDonnées" =
oui est ce important pour ce code ?

Merci
cordialement
Skalia

Bonjour,

Regardes si cet exemple peut te servir.
Saisir Nimes ou Pau retournera qu'1 seul enregistrement et les 2 boutons
inactifs, on ne peut pas se déplacer car 1 seul enregistrement; saisir
Paris retourne une dizaine avec le Bouton prec inactif au 1er affichage
puis les 2 boutons actifs lors des déplacements sauf sur le dernier
enregistrement où Bouton Suiv est rendu inactif.
Pour simuler ta page vide, j'ai mis un filtre sur ouverture du formulaire.

lien : http://cjoint.com/?eolbIITIsq

Bonjour,

Malheureusement je ne peux pas utiliser le "maxdom" puisque je souhaite
appliquer ce code suite à un filtre.

c'est pourquoi je reste fixée sur le compte des enregistrements (le dernier
variant en fonction de la recherche)

Merci tout de même pour votre réponse et votre patience...
Skalia



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
../...
Pourquoi mettre Entrée de données à Oui puisque tu veux filtrer tes
enregistrements ? Mettre Entrée de données à Oui c'est pour ouvrir le
formulaire en Mode Ajout.
Sur mon exemple, si je mets au formulaire les propriétés Ajout autorisé
et Entrée de données à Oui, je n'ai pas le problème que tu soulèves.
Le bouton prec est désactivé et le bouton suivant actif.
(ps: j'ai viré la propriété filtre du formulaire qui était restée par
mégarde)

Boujour,

oui c'est ce code que j'essaye d'appliquer à ma base mais il ne fonctionne
toujours pas sur mon formulaire.
la seule diférence notable est que dans les propriétés j'ai "EntréDonnées" =
oui est ce important pour ce code ?

Merci
cordialement
Skalia



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr