PB access VBA - Piloter la valeur d'un contrôle en VBA

Bonjour tout le monde !

J’ai un petit problème sous access.
En fait, j’ai un formulaire avec des contrôles (jusque là, rien d’étonnant) et j’ai créé une fonction qui me permet de compter dans une table le nombre d’enregistrements différents relatif à un champs. Je n’ai pas trouvé le moyen de faire ça directement sous access.
Et mon problème, c’est que j’aimerais bien afficher le résultat dans un des contrôles de mon formulaire. Je n’arrive pas à trouver la syntaxe pour ça.

Pour info, voila le code :


Function CalculBL(NomTable As String)

Dim Donnees As Recordset

Set Donnees = CurrentDb.OpenRecordset(NomTable, dbOpenDynaset)

Dim i As Integer
i = 1

Donnees.MoveLast
Donnees.MoveFirst

Dim NbDonnees As Integer
NbDonnees = Donnees.RecordCount

Dim NomChamp As String

Dim ListeBL() As Double
ReDim ListeBL(1 To NbDonnees)
ListeBL(1) = 0

Dim NbBL As Integer
NbBL = 0

If NomTable = "BLAller" Then
NomChamp = "NoBLAller"
Else: NomChamp = "NoBLRetour"
End If

With Donnees
While Not .EOF
Dim j As Integer
For j = 1 To i
If .Fields(NomChamp) <> ListeBL(j) Then
ListeBL(i) = .Fields(NomChamp)
i = i + 1
NbBL = NbBL + 1
Else:
j = j
Exit For
End If
Next

.MoveNext

Wend

End With

Forms![accueil2]![NbBLA] = NbBL

End Function


Merci d’avance !

Je ne pense pas qu’il y ait besoin de VBA pour ça …

Un simple SELECT Count(NomTable.NomChamp) FROM NomTable; devrait suffire

Après un essai, visiblement on ne peut pas rentrer directement cette requête, mais en faisant comme ça, ça devrait marcher (en tout cas ça marche chez moi) :

  • tu crées une requête "SELECT Count(NomTable.NomChamp) FROM NomTable;

  • tu attaches ton formulaire à la requête que tu viens de créer :
    dans les propriétés générales du formulaire (petit carré en haut à gauche), sous l’onglet “Données”, dans “Source” mets le nom de la requête.
    Si ton formulaire est déjà attaché ou que tu tiens à ce qu’il reste indépendant, je crois qu’il est possible de créer un sous-formulaire attaché à la requête sans pour autant attacher le formulaire en entier.

  • dans les options du contrôle où tu veux voir apparaître le résultat, sous l’onglet “Données”, dans “Source contrôle” mets le champ de la requête (en principe, Expr1000 par défaut).
    Tu peux aussi mettre “Activer” sur “non”, ce qui empêchera de modifier le contenu du contrôle

VBA, moins on l’utilise mieux on se porte …

Ah y’est, j’ai essayé et ça marche nickel ! Le tout c’était de connaitre un peu mieux le SQL ! C’est vrai que j’ai peut être eu le réflexe VBA rapide (en tout cas, si je m’étais posé la question avant, j’aurais économisé une partie de la matinée !)
Merci bien ofboir et je crois que je vais essayer de choper une liste des instructions sql !

@+