Nombre total d'enregistrement

Fermé
GDX Messages postés 219 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 16 janvier 2020 - 3 avril 2013 à 08:48
GDX Messages postés 219 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 16 janvier 2020 - 3 avril 2013 à 17:01
Bonjour,

Je souhaite connaitre dans mon script vba l'enregistrement dans lequel se trouve l'utilisateur et le nombre total d'enregistrement.

Les numéros d'enregistrements sont présents en bas à gauche d'un formulaire pour ceux ne voient pas de quoi je parle.

Pour l'enregistrement courant, j'ai trouvé la fonction approprié, il s'agit de "CurrentRecord", mais pour le nombre max, je ne vois pas.

Merrci pour l'aide.

3 réponses

blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
3 avril 2013 à 14:27
Salut,

Me.RecordsetClone.recordcount
1
GDX Messages postés 219 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 16 janvier 2020 9
3 avril 2013 à 16:17
Merci,

C'est exactement ça.

Cependant, j'ai un phénomène super étrange qui se produit.

Private Sub Form_Current()

If CurrentRecord = Total Then
    Suivant.Enabled = False
Else
    Suivant.Enabled = True
End If

If CurrentRecord = 1 Then
    Precedent.Enabled = False
Else
    Precedent.Enabled = True
End If

End Sub


Ce code contrôle des boutons.
Quand l'enregistrement courant atteint le dernier enregistrement, ça désactive le bouton "Suivant".
Quand l'enregistrement courant atteint le premier enregistrement, ça désactive le bouton "Precedent".

Ce code fonctionne correctement si je place un point d'arrêt en face du premier if et que j'exécute le programme en pas à pas.

Sans le point d'arrêt le programme ne fonctionne pas les boutons sont toujours désactivés.

On a l'impression que l'exécution du programme est trop rapide.

Merci,
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
3 avril 2013 à 16:26
As-tu mis les .enabled correctement dans le form_open ?
Sinon, mets un msgbox "toto" en première ligne, ça t'aidera à savoir combien de fois on passe dans le code.
0
GDX Messages postés 219 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 16 janvier 2020 9
3 avril 2013 à 16:40
J'ai mis le code dans Form_current et je viens de le rajouter dans le form_open, mais rien ne change, je problème persiste.

Pour les Toto, c'est une bonne idée :
- Il passe 1 fois dans form_open
- Et 1 fois dans form_current
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
3 avril 2013 à 16:44
Dans form_open, tu ne devrais avoir que suivant.enabled = true et precedent.enabled = false, puisque c'est la première fois.

form_current devrait être appelé à chaque modif sur les records ou chaque changement de record.

Par contre, où est calculée ta variable 'total' ? Quelle valeur a-t-elle ?
0
GDX Messages postés 219 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 16 janvier 2020 9
3 avril 2013 à 16:53
Je vais essayer pour form_open

Total est une erreur de ma part losque j'ai créé ce post, c'étais pour faire des essais.

en réalité voici la ligne :
If CurrentRecord = Me.RecordsetClone.recordcount Then
0
GDX Messages postés 219 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 16 janvier 2020 9
3 avril 2013 à 17:01
Dans form_open, tu ne devrais avoir que suivant.enabled = true et precedent.enabled = false, puisque c'est la première fois.

Ca ne marche toujours pas car le programme passe pas form_current qui remet suivant.enable à false.

Par contre j'ai trouver un méthode qui fonctionne mais elle est vraiment mer*ique...

Public Total As Double

Private Sub Form_Load()
DoCmd.GoToRecord , , acLast
Total = CurrentRecord
DoCmd.GoToRecord , , acFirst
End Sub

Private Sub Form_Current()
If CurrentRecord = Total Then
    Suivant.Enabled = False
Else
    Suivant.Enabled = True
End If

If CurrentRecord = 1 Then
    Precedent.Enabled = False
Else
    Precedent.Enabled = True
End If

End Sub


Je laisse ce post ouvert si jamais qqun arrive à faire fonctionner le code avec la méthode : Me.RecordsetClone.recordcount

Merci,

GDX
0