OVH Cloud OVH Cloud

Numérotation automatique dans une zone de texte

3 réponses
Avatar
Ilias MAJDOULINE
Bonjour,
J'aissaie de numéroter les enregistrements d'un sous-formulaire dans une
zone de texte indépendante en utilisant du code VB mais je n'arrive pas à le
faire.
Y a-t-il de l'aide SVP ?

3 réponses

Avatar
Raymond
Bonsoir.

le titre étant numérotation automatique, il est possible d'utiliser un champ
numauto qui est comme son nom l'indique automatique. Pourquoi veux-tu
numéroter toi-même et cette numérotation est-elle spéciale ?

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Ilias MAJDOULINE" a écrit dans le message
de news:%
Bonjour,
J'aissaie de numéroter les enregistrements d'un sous-formulaire dans une
zone de texte indépendante en utilisant du code VB mais je n'arrive pas à
le

faire.
Y a-t-il de l'aide SVP ?





Avatar
3stone
Salut,

| J'aissaie de numéroter les enregistrements d'un sous-formulaire dans une
| zone de texte indépendante en utilisant du code VB mais je n'arrive pas à le
| faire.


Il *faut* que dans ce sous-formulaire se trouve la clé primaire des enregistrements !

Ensuite, tu ajoute à gauche de la partie détail, une zone de texte, vérrouillée et non active.
Place l'index de ce champ en premier lieu dans l'ordre de tabulation .

Comme source du champ, tu mets:

= PosNumber( Form ; "NomCléPrimaire" ; [CléPrimaire] )


Colle la fonction suivante dans un module que tu nomme "mod_PosNumber"

'--- début -------------

Function PosNumber(F As Form, strFieldName As String, varFieldValue)
'//======================================= '// Numérote les enregistrements dans un sous-formulaire
'// Une clé primaire doit y être présente
'// Utilisation:
'// Dans une zone de texte, appellez la fonction par:
'// =PosNumber( Form ; "NomCléPrimaire" ; [Clé Primaire])
'// 3stone
'//======================================= Dim rs As DAO.Recordset
Dim intLineCount As Integer
PosNumber = 0
If IsNull(varFieldValue) Then Exit Function
On Error Resume Next
Set rs = F.RecordsetClone
Select Case rs.Fields(strFieldName).Type
Case dbInteger, dbLong, dbCurrency, dbSingle, dbDouble, dbByte
rs.FindFirst "[" & strFieldName & "] = " & varFieldValue
Case dbText
rs.FindFirst "[" & strFieldName & "] = '" & varFieldValue & "'"
Case Else
' MsgBox "Erreur: Type de champ non permis"
Exit Function
End Select

Do Until rs.BOF
intLineCount = intLineCount + 1
rs.MovePrevious
Loop
PosNumber = intLineCount

End Function

'--- fin --------------------------------------


Voilà, c'est tout...

--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------
Avatar
Ilias MAJDOULINE
Votre solution répond parfaitement à mon besoin.
Merci

"3stone" a écrit dans le message de news:
3f875ed8$0$24194$
Salut,

| J'aissaie de numéroter les enregistrements d'un sous-formulaire dans une
| zone de texte indépendante en utilisant du code VB mais je n'arrive pas
à le

| faire.


Il *faut* que dans ce sous-formulaire se trouve la clé primaire des
enregistrements !


Ensuite, tu ajoute à gauche de la partie détail, une zone de texte,
vérrouillée et non active.

Place l'index de ce champ en premier lieu dans l'ordre de tabulation .

Comme source du champ, tu mets:

= PosNumber( Form ; "NomCléPrimaire" ; [CléPrimaire] )


Colle la fonction suivante dans un module que tu nomme "mod_PosNumber"

'--- début -------------

Function PosNumber(F As Form, strFieldName As String, varFieldValue)
'//======================================= > '// Numérote les enregistrements dans un sous-formulaire
'// Une clé primaire doit y être présente
'// Utilisation:
'// Dans une zone de texte, appellez la fonction par:
'// =PosNumber( Form ; "NomCléPrimaire" ; [Clé Primaire])
'// 3stone
'//======================================= > Dim rs As DAO.Recordset
Dim intLineCount As Integer
PosNumber = 0
If IsNull(varFieldValue) Then Exit Function
On Error Resume Next
Set rs = F.RecordsetClone
Select Case rs.Fields(strFieldName).Type
Case dbInteger, dbLong, dbCurrency, dbSingle, dbDouble, dbByte
rs.FindFirst "[" & strFieldName & "] = " & varFieldValue
Case dbText
rs.FindFirst "[" & strFieldName & "] = '" & varFieldValue & "'"
Case Else
' MsgBox "Erreur: Type de champ non permis"
Exit Function
End Select

Do Until rs.BOF
intLineCount = intLineCount + 1
rs.MovePrevious
Loop
PosNumber = intLineCount

End Function

'--- fin --------------------------------------


Voilà, c'est tout...

--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------