OVH Cloud OVH Cloud

Vba Pour taux de remplissage d'une table Merci

4 réponses
Avatar
laurent
Bonjour,
voici ce que j'essai de faire :
compter dans une ou plusieurs tables le nombre de champs null .

Le pb est que lorsque je trouve un champ null je me prends une exception
(Normale), mais je ne sais pas trop comment la gérer (Je debute en VBA).

Dim Table as RecordSet
Dim i as long
Dim champ As String

Set Table =currentdb.openrecordset("Table1")
For i=1 to Table.RecordCount
Table.Edit
set champ = Table!Champ1
>>>>Mon pb est là si le champ est null il faut que je le compte <<<<<<<<<
'' Msgbox("N?D'enregistrement :" & i)
Table.Movenext
Next i
Tables.Close




Merci pour votre aide

4 réponses

Avatar
Charles ERNST
vous ne pouvez pas affecter une valeur null à une variable de type string
si Table!Champ1 est null, set champ = Table!Champ1 provoquera une erreur
faut faire : Dim champ As variant,cpte as long
puis plus loin
cpte=0
Set Table =currentdb.openrecordset("Table1")
table.movelast
table.movefirst
For i=1 to Table.RecordCount
Table.Edit
set champ = Table!Champ1
if isnull( champ) then
cpte=cpte+1
Msgbox("N?D'enregistrement :" & i)
end if
Next i
Tables.Close

a la sortie, cpte contien le nombre d'enregistrements où le champ1 est null
*

"laurent" a écrit dans le message de
news:bql8gh$4nm$
Bonjour,
voici ce que j'essai de faire :
compter dans une ou plusieurs tables le nombre de champs null .

Le pb est que lorsque je trouve un champ null je me prends une exception
(Normale), mais je ne sais pas trop comment la gérer (Je debute en VBA).

Dim Table as RecordSet
Dim i as long
Dim champ As String

Set Table =currentdb.openrecordset("Table1")
For i=1 to Table.RecordCount
Table.Edit
set champ = Table!Champ1
Mon pb est là si le champ est null il faut que je le compte <<<<<<<<<
'' Msgbox("N?D'enregistrement :" & i)




Table.Movenext
Next i
Tables.Close




Merci pour votre aide










Avatar
3stone
Salut,

"laurent"
compter dans une ou plusieurs tables le nombre de champs null .

Le pb est que lorsque je trouve un champ null je me prends une exception
(Normale), mais je ne sais pas trop comment la gérer (Je debute en VBA).

Dim Table as RecordSet
Dim i as long
Dim champ As String

Set Table =currentdb.openrecordset("Table1")
For i=1 to Table.RecordCount
Table.Edit
set champ = Table!Champ1
Mon pb est là si le champ est null il faut que je le compte <<<<<<<<<
'' Msgbox("N?D'enregistrement :" & i)




Table.Movenext
Next i
Tables.Close



Si ta table est vide, tu obtiendra une erreur...
Pourquoi faire un Table.Edit pour attribuer la valeur d'un champ ?
Et pourquoi ouvrir et passer dans un recodset... juste pour compter ?

Dim lngCompteur As Long
lngCompteur = DCount("*","Table1") - DCount("[Champ1]","Table1")

devrait suffire pour te donner le nombre de [Champ1] vide de la "Table1"

Ok ?


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------





Avatar
3stone
Bonsoir Charles,

"Charles ERNST"

Dim rs As Dao.Recordset, cpte as long
cpte=0
Set rs =currentdb.openrecordset("Table1")
Do Until rs.Eof
if isnull( rs!champ1) then
cpte=cpte+1
end if
rs.Movenext
Loop
rs.Close
set rs=Nothing
MsgBox "Il y a : " & cpte & " enregistrements."


serait plus propre et ne donnerait pas d'erreur sur un .movelast
dans le cas où la table serait vide...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Avatar
laurent
Merci à vous deux pour votre aide
"3stone" a écrit dans le message de news:
3fce4a80$0$3229$
Salut,

"laurent"
compter dans une ou plusieurs tables le nombre de champs null .

Le pb est que lorsque je trouve un champ null je me prends une exception
(Normale), mais je ne sais pas trop comment la gérer (Je debute en VBA).

Dim Table as RecordSet
Dim i as long
Dim champ As String

Set Table =currentdb.openrecordset("Table1")
For i=1 to Table.RecordCount
Table.Edit
set champ = Table!Champ1
Mon pb est là si le champ est null il faut que je le compte
<<<<<<<<<






'' Msgbox("N?D'enregistrement :" & i)
Table.Movenext
Next i
Tables.Close



Si ta table est vide, tu obtiendra une erreur...
Pourquoi faire un Table.Edit pour attribuer la valeur d'un champ ?
Et pourquoi ouvrir et passer dans un recodset... juste pour compter ?

Dim lngCompteur As Long
lngCompteur = DCount("*","Table1") - DCount("[Champ1]","Table1")

devrait suffire pour te donner le nombre de [Champ1] vide de la "Table1"

Ok ?


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------