Compatibilité VBA Access 2002 à 2007

[Résolu]
Signaler
Messages postés
2
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
23 juillet 2009
-
Messages postés
8
Date d'inscription
jeudi 19 octobre 2006
Statut
Membre
Dernière intervention
17 septembre 2012
-
Bonjour à tous,

Je suis dans la comptabilité et j'ai de bonnes connaissances en Access mais mon VBA reste assez limité... J'ai repris une base de données qui permet de gérer des taxes au boulot et dois essayer de le faire migrer d'Access 2002 à Access 2007.

Je l'ai donc convertie et suis en train de la tester mais je suis tombé sur une erreur qui m'empêche d'ouvrir un des formulaires.

Voici une partie du code de ce formulaire, la partie qui pose problème (la ligne "Set MonRecordSet(...)" est surlignée en jaune pendant le débogage):

Private Sub Form_Open(Cancel As Integer)
Dim MaBaseDeDonnee As DAO.Database
Set MaBaseDeDonnee = CurrentDb
Dim MonRecordSet As Recordset

Set MonRecordSet = MaBaseDeDonnee.OpenRecordset("SELECT COUNT(*) AS nb FROM Import", dbOpenDynaset)
Me!lbl_nb_site_non_traite.Caption = "Il reste " & MonRecordSet("nb") & " sites à traiter"
End Sub

Cette partie du code est censé compter à l'ouverture, le nombre de lignes figurant dans la table 'Import' et ressortir un texte du type "Il reste 34 sites à traiter" sur le formulaire. Le formulaire s'ouvre correctement sur Access 2002 mais pas sur Access 2007, dans lequel j'ai une erreur d'exécution 13 "Incompatibilité de type".

Je sollicite donc votre assistance afin de trouver d'où vient réellement le problème, s'il existe une différence de syntaxe par exemple entre les deux versions d'Access ou une différence de ce type...

Merci d'avance pour votre aide !

4 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
surement a renommer

Dim MonRecordSet As Recordset
en
Dim MonRecordSet As DAO.Recordset


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Maintenant, ton code peux se réduire en:

Private Sub Form_Open(Cancel As Integer)
With CurrentDB.OpenRecordset("SELECT COUNT(0) FROM Import")
Me!lbl_nb_site_non_traite.Caption = "Il reste " & .Fields(0).Value & " sites à traiter"
.Close
End With
End Sub

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
2
Date d'inscription
mercredi 22 juillet 2009
Statut
Membre
Dernière intervention
23 juillet 2009

Merci infiniment pour ton aide Renfield, ca marche nickel !!!
Messages postés
8
Date d'inscription
jeudi 19 octobre 2006
Statut
Membre
Dernière intervention
17 septembre 2012

J'ai developpé une application en vba (Access 2003) sur la gestion des stations de lavage du café. L'application contenant la base de donnees centralisée pour les 100 stations de lavage informatisee est en vb6. J'aurais besoin d'un module en vba de transfert de ces bases de donnees par station vers celle nationale en VB6 dont la base de donnees est Access 1997. Votre aide est attendue.