Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/07/2011, 16h07   #1
Futur Membre du Club
 
Homme
Technicien maintenance
Inscription : août 2008
Messages : 67
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Technicien maintenance

Informations forums :
Inscription : août 2008
Messages : 67
Points : 18
Points : 18
Par défaut Acces à la proprieté MaxRecords

Bonjour je suis nouveau sur ce forum. Je suis automaticien et plus axé sur les automates programmables et les logiciels IHM.
Depuis le mois de juin j'ai décidé de suivre une formation pour utilisé ACCESS via mes heures de DIF, j'avais vu un peu les SGBD lors de mes études mais c"est très loin !! J'ai fait 3 jours "initiation" ou on voit la base d'Access et 3 jours plus spécialisés dans la partie automatisation et VBA. Il me reste 2 jours à faire fin septembre.
Voila pour les présentations, maintenant passons à mon problème dans un formulaire de consultation d'une table j'ai un bouton suivant et précédent pour parcourir les enregistrements pour une modification éventuelle.
Les bouton suivant et précédent test les variables acFirst et acLast pout tester si l'on est au dernier enregistrement. Si c'est le cas mesBox d'avertissement et disparition du bouton concerné.
Cela marche sauf que pour la variable acFirst (premier) cela marche. Mais pour acLast pour une raison que je n'explique je ne vais pas jusqu'au dernier enregistrement valide ????
Je me suis donc rabattu sur la variable MaxRecords j'ai repris l'exemple donné par l'aide de VBA mais systématiquement j'ai une erreur erreur exécution 2455 " La référence d'une expression MaxRecords n'est pas valide" ?
Voici la portion de code concernée :

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub Form_Open(Cancel As Integer)                ' a L'ouverture du formulaire

 Dim monformulaire As Form
 
  Set monformulaire = Forms("FModifsPiecesStockElec")  'Initialisation du formulaire
  DoCmd.OpenForm ("FModifsPiecesStockElec")            ' ouverture du formulaire
  maxi = Forms("FModifsPiecesStockElec").MaxRecords
  ChangeCouleur (Me)                                     ' Change les couleurs des etiquettes des cases à cocher
  DoCmd.GoToRecord , , acFirst                         ' on pointe sur le premier enregistrement
End Sub
La syntaxe utilisée pour récupérer maxRecords est celle donnée dans l'aide VBA. La variable maxi est déclarée en tête de module après Option compare afin d'être public pour tout le module, et notamment dans la procedure évènementielle du bouton suivant. Je bute sur ce problème depuis 3 jours si quelqu'un peu m'aider soit sur le probleme MaxRecords soit pourquoi acLast ne pointe pas réellement sur le dernier enregistrement.
Merci d'avance
Jeanpierre71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 16h37   #2
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Salut,

Tu pourrais simplement englober l'erreur suite à "end of file" ou "begining of file" exemple:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
private sub suivant_click()
on error goto err_suivant_click
 
docmd.gotorecord ,acnext
me.precedent.visible = true
 
exit_suivant_click:
exit sub
err_suivant_click:
 
msgbox "Il n'y a plus d'enregistrement !", "vbinformation", "Fin des données"
 
me.precedent.visible = true
me.suivant.visible = false
 
resume exit_suivant_click
end sub 
'-------------------------------------------------------------------------
private sub precedent_click()
on error goto err_precedent_click
 
docmd.gotorecord, acprevious
me.suivant.visible = true
 
exit_precedent_click:
exit sub
err_precedent_click:
 
msgbox "Vous êtes au début des données !", "vbinformation", "Début des données ! "
 
me.precedent.visible = false
me.suivant.visible = true
 
resume exit_precedent_click 
 
end sub
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 19h29   #3
Nouveau Membre du Club
 
Homme
Chef de projet MOA
Inscription : juillet 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : juillet 2011
Messages : 22
Points : 32
Points : 32
pour ma part et comme mon collègue ce dessus je n'utiliserai pas la méthode du MaxRecords.
tu peux tester le positionnenent en début ou fin de fichier du recordset du formulaire.

cf code ci dessous (nb : il faut ajouter en référence la librairie microsoft dao)

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub BoutonPrecedent_Click()
Dim rc As DAO.Recordset
    Set rc = Me.Recordset
    If rc.BOF Then
        Call MsgBox("vous avez déjà atteint le premier enregistrement")
    Else
        rc.MovePrevious
    End If
    set rc = Nothing
End Sub
Code :
1
2
3
4
5
6
7
8
9
10
Private Sub BoutonSuivant_Click()
Dim rc As DAO.Recordset
    Set rc = Me.Recordset
    If rc.EOF Then
        Call MsgBox("vous avez déjà atteint le dernier enregistrement")
    Else
        rc.MoveNext
    End If
    set rc = Nothing
End Sub
dave92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 19h47   #4
Futur Membre du Club
 
Homme
Technicien maintenance
Inscription : août 2008
Messages : 67
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Technicien maintenance

Informations forums :
Inscription : août 2008
Messages : 67
Points : 18
Points : 18
Citation:
Envoyé par robyseb Voir le message
Salut,

Tu pourrais simplement englober l'erreur suite à "end of file" ou "begining of file" exemple:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
private sub suivant_click()
on error goto err_suivant_click
 
docmd.gotorecord ,acnext
me.precedent.visible = true
 
exit_suivant_click:
exit sub
err_suivant_click:
 
msgbox "Il n'y a plus d'enregistrement !", "vbinformation", "Fin des données"
 
me.precedent.visible = true
me.suivant.visible = false
 
resume exit_suivant_click
end sub 
'-------------------------------------------------------------------------
private sub precedent_click()
on error goto err_precedent_click
 
docmd.gotorecord, acprevious
me.suivant.visible = true
 
exit_precedent_click:
exit sub
err_precedent_click:
 
msgbox "Vous êtes au début des données !", "vbinformation", "Début des données ! "
 
me.precedent.visible = false
me.suivant.visible = true
 
resume exit_precedent_click 
 
end sub

Merci 1000 fois cela marche Seulement il ne faut pas utiliser la propriété me.précèdent.visible true/false qui génere une erreur 2165 "impossible de masquer le control actif" la parade j'ai pris la propriété Transparent qui fait aussi apparaitre ou disparaitre le bouton mais sans généré d'erreur.
Encore merci pour ton aide. J'aurais surement à demander d'autres astuces dans la base que je suis en train de constituer. Venant durant mes études de l'univers Pascal & C puis Delphy, le vba n'est pas évident pour moi même si le concept ressemble beaucoup à Delphy sauf la syntaxe et la méthode.
Jeanpierre71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 20h30   #5
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 225
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 225
Points : 9 919
Points : 9 919
Envoyer un message via Skype™ à Domi2
Bonsoir,

Il existe de nombreuses ressources dans la FAQ ou dans les Sources.

Par exemple, pour recréer les boutons de navigation.

Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 05h16   #6
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Super vraiment content que mon code fonctionne pour toi et merci du tuyau pour la propriété ... j'ai écrit ce code entre 2 biberons du bébé lolll

N'oublie pas RÉSOLU si ton problème est réglé
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h39.


 
 
 
 
Partenaires

Hébergement Web