Nombre total d'enregistrement

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

  1. Modérateur
    Salut,

    Me.RecordsetClone.recordcount
    1
    1. 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
      1. Modérateur
        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
      2. 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
      3. Modérateur
        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
      4. 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
    2. 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