OVH Cloud OVH Cloud

Boucle sur champs identiques

6 réponses
Avatar
Herve Matous
Bonjour,
J'ai 30 champs qui se nomment pratiquement le m=EAme nom :=20
Grp_Mailing1
Grp_Mailing2
...
Code actuel :
If IsNull(Me.Grp_Mailing1) =3D True Then
Me.Grp_Mailing1 =3D 0
End If
If IsNull(Me.Grp_Mailing2) =3D True Then
Me.Grp_Mailing2 =3D 0
End If
If IsNull(Me.Grp_Mailing3) =3D True Then
Me.Grp_Mailing3 =3D 0
End If
.....

Je souhaiterais utiliser une boucle pour faire cela plus=20
proprement
du style :
Num =3D 1
Do While counter < NB_Enr.Value
Num =3D Num + 1
Me.Grp_Mailing & Num =3D 0
Loop

Merci d'avance
Herve

6 réponses

Avatar
Charles ERNST
Num = 1
Do While counter < NB_Enr.Value
Num = Num + 1
Me("Grp_Mailing" & Num )= 0
Loop



"Herve Matous" a écrit dans le message
de news:19a9901c44d8c$0ac37b80$
Bonjour,
J'ai 30 champs qui se nomment pratiquement le même nom :
Grp_Mailing1
Grp_Mailing2
...
Code actuel :
If IsNull(Me.Grp_Mailing1) = True Then
Me.Grp_Mailing1 = 0
End If
If IsNull(Me.Grp_Mailing2) = True Then
Me.Grp_Mailing2 = 0
End If
If IsNull(Me.Grp_Mailing3) = True Then
Me.Grp_Mailing3 = 0
End If
.....

Je souhaiterais utiliser une boucle pour faire cela plus
proprement
du style :
Num = 1
Do While counter < NB_Enr.Value
Num = Num + 1
Me.Grp_Mailing & Num = 0
Loop

Merci d'avance
Herve
Avatar
3stone
Salut,

"Herve Matous"
J'ai 30 champs qui se nomment pratiquement le même nom :
Grp_Mailing1
Grp_Mailing2
...
Code actuel :
If IsNull(Me.Grp_Mailing1) = True Then
Me.Grp_Mailing1 = 0
End If
If IsNull(Me.Grp_Mailing2) = True Then
Me.Grp_Mailing2 = 0
End If
If IsNull(Me.Grp_Mailing3) = True Then
Me.Grp_Mailing3 = 0
End If
.....


Dim i as integer

For i = 1 to 30
if isnull(Me("Grp_Mailling" & i )) Then
Me("Grp_Mailling" & i ) = 0
end if
next i


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
Wilderwein
Bsr,

Essaye donc quelque chose du style :

Dim ctrl as control
Dim grp as string

For Each ctrl In Form_test.Controls
grp=Mid(ctrl.name,1,11)
If (ctrl.ControlType¬TextBox) AND (grp="Grp_Mailing") then
If isNull(ctrl) then ctrl=0
End if
Next ctrl

J'ai déjà utilisé une procédure similaire qui m'a donné satisfaction...


"Herve Matous" a écrit dans le message
de news:19a9901c44d8c$0ac37b80$
Bonjour,
J'ai 30 champs qui se nomment pratiquement le même nom :
Grp_Mailing1
Grp_Mailing2
...
Code actuel :
If IsNull(Me.Grp_Mailing1) = True Then
Me.Grp_Mailing1 = 0
End If
If IsNull(Me.Grp_Mailing2) = True Then
Me.Grp_Mailing2 = 0
End If
If IsNull(Me.Grp_Mailing3) = True Then
Me.Grp_Mailing3 = 0
End If
.....

Je souhaiterais utiliser une boucle pour faire cela plus
proprement
du style :
Num = 1
Do While counter < NB_Enr.Value
Num = Num + 1
Me.Grp_Mailing & Num = 0
Loop

Merci d'avance
Herve
Avatar
Herve Matous
Merci à tous les 3 pour votre gentillesse et vos
compétences. J'ai trouvé bon bonheur en utilisant la
réponse de 3Stone, mais je pense que vos 3 propositions
sont excellentes.
Cordialement
Herve
Avatar
Michel Gesnot
Bonjour,

Une petite suggestion pour ne pas oublier la loi de la
vexation universelle :

Il est très probable qu'Hervé devra ajouter/suprimer un
groupe un jour ou l'autre, qu'il y aura des trous dans sa
séquences etc... ce qui impliquera de reprendre le code et
de l'adapter.
Si Hervé travaille par le biais d'un tableau et utilise
Ubound comme limite supérieure de la boucle, son
application deviendra tout à fait dynamique.

L'utilisation d'un tableau lui éviterait d'avoir à
réintervenir sur le code.

Bonne journée
Michel Gesnot


-----Message d'origine-----
Salut,

"Herve Matous"
J'ai 30 champs qui se nomment pratiquement le même nom :
Grp_Mailing1
Grp_Mailing2
....
Code actuel :
If IsNull(Me.Grp_Mailing1) = True Then
Me.Grp_Mailing1 = 0
End If
If IsNull(Me.Grp_Mailing2) = True Then
Me.Grp_Mailing2 = 0
End If
If IsNull(Me.Grp_Mailing3) = True Then
Me.Grp_Mailing3 = 0
End If
......


Dim i as integer

For i = 1 to 30
if isnull(Me("Grp_Mailling" & i )) Then
Me("Grp_Mailling" & i ) = 0
end if
next i


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------




.



Avatar
3stone
Salut,

"Michel Gesnot"
<snip>
Il est très probable qu'Hervé devra ajouter/suprimer un
groupe un jour ou l'autre...


Relire le message original apporte la réponse ;-)


"Herve Matous"
J'ai 30 champs qui se nomment pratiquement le même nom :
Grp_Mailing1
Grp_Mailing2



si évolution, il devra revoir ses tables, requêtes, formulaires
et autres états...

Donc, soit il considère sa "construction" définie à jamais,
soit il revoit le tout et... il sera libéré des 30 champs !

Dans ces conditions, un tableau... oui, si un Rembrandt ;-)



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------