Bonjour,
En VBA, je voudrais faire une proc=E9dure qui passe en revue des contr=F4le=
s de formulaire (des horaires en fait) pour faire des v=E9rifications de co=
h=E9rence gr=E2ce =E0 une boucle For...
Ces contr=F4les ont des noms diff=E9rents les uns des autres.
Mon probl=E8me est donc d'arriver =E0 appeler ces contr=F4les.
J'essaie avec :
Public Sub rechHpost(Hx) 'rech d'un controle horaire post=E9rieur rempli
Dim H3 As Control, H4 As Control, H5 As Control, H6 As Control, H7 As Contr=
ol, n As Byte
Set H3 =3D Me.installation
Set H4 =3D Me.induction
Set H5 =3D Me.incision
Set H6 =3D Me.pansement
Set H7 =3D Me.sortie
For n =3D 3 To 7
If IsNull("H" & n) =3D False Then
If DateDiff("n", Hx, "H" & n) > -360 Then
etc
et =E7a ne marche pas. ("H" & n) est traduit en 'H4' par exemple mais pas r=
econnu comme une variable.
Alors qu'en fen=EAtre de d=E9bogage, si je tape '? H4', j'ai bien la valeur=
de Me.induction qui s'affiche
Si je change et d=E9clare
Dim H4 as string
puis
H4 =3D "induction"
puis=20
If IsNull(Me.Controls("H" & n)) =3D False Then
etc, =E7a ne marche pas non plus.
O=F9 je me plante ? Merci. (Access 2000)
Bonjour, En VBA, je voudrais faire une procédure qui passe en revue des contrôles de formulaire (des horaires en fait) pour faire des vérifications de cohérence grâce à une boucle For... Ces contrôles ont des noms différents les uns des autres. Mon problème est donc d'arriver à appeler ces contrôles. J'essaie avec :
For n = 3 To 7 If IsNull("H" & n) = False Then
If DateDiff("n", Hx, "H" & n) > -360 Then
Essayer (dans le module lié au formulaire) :
For n=3 to 7 If IsNull(Me("H" & n))úlse then If DateDiff("n", Hx, Me("H" & n)) > -360 Then
...
db
Le 11/08/2014 15:43, jpaul.berard@gmail.com a écrit :
Bonjour,
En VBA, je voudrais faire une procédure qui passe en revue des contrôles de formulaire (des horaires en fait) pour faire des vérifications de cohérence grâce à une boucle For...
Ces contrôles ont des noms différents les uns des autres.
Mon problème est donc d'arriver à appeler ces contrôles.
J'essaie avec :
For n = 3 To 7
If IsNull("H" & n) = False Then
If DateDiff("n", Hx, "H" & n) > -360 Then
Essayer (dans le module lié au formulaire) :
For n=3 to 7
If IsNull(Me("H" & n))úlse then
If DateDiff("n", Hx, Me("H" & n)) > -360 Then
Bonjour, En VBA, je voudrais faire une procédure qui passe en revue des contrôles de formulaire (des horaires en fait) pour faire des vérifications de cohérence grâce à une boucle For... Ces contrôles ont des noms différents les uns des autres. Mon problème est donc d'arriver à appeler ces contrôles. J'essaie avec :
For n = 3 To 7 If IsNull("H" & n) = False Then
If DateDiff("n", Hx, "H" & n) > -360 Then
Essayer (dans le module lié au formulaire) :
For n=3 to 7 If IsNull(Me("H" & n))úlse then If DateDiff("n", Hx, Me("H" & n)) > -360 Then
Même résultat. Il me répond : impossible de trouver le contrôle H3....
J'avais lu trop vite, je pensais que H3, H4... étaient des contrôles du formulaire. Peut-être alors :
Public Sub rechHpost(Hx) 'rech d'un controle horaire postérieur rempli Dim H(7) As Control, n As Byte
Set H(3) = Me.installation Set H(4) = Me.induction Set H(5) = Me.incision Set H(6) = Me.pansement Set H(7) = Me.sortie
For n = 3 To 7 If IsNull(H(n)) = False Then
If DateDiff("n", Hx, H(n)) > -360 Then
db
jpaul.berard
Le lundi 11 août 2014 19:13:35 UTC+2, db a écrit :
J'avais lu trop vite, je pensais que H3, H4... étaient des contrôles du
formulaire. Peut-être alors :
Public Sub rechHpost(Hx) 'rech d'un controle horaire postérieur rempli
Dim H(7) As Control, n As Byte
Set H(3) = Me.installation
Set H(4) = Me.induction
Set H(5) = Me.incision
Set H(6) = Me.pansement
Set H(7) = Me.sortie
For n = 3 To 7
If IsNull(H(n)) = False Then
If DateDiff("n", Hx, H(n)) > -360 Then
db
Merci, beaucoup ! Ca marche ! Mais, j'aimerais beaucoup que tu m'expliques... car je ne comprends pas ce que tu m'as fait coder. Pourquoi je ne déclare qu'un H(7) (j'avais laiss é les autres ce qui m'entrainait une erreur) ? Tu fais appel à une fonc tionnalité que je ne connaît pas. Et dans la même veine, dans mon code, j'incrémente H(n) d'1 jour, mais ensuite comment renvoyer cette nouvelle valeur au bon contrôle dans le fo rmulaire ? Merci d'avance.
Le lundi 11 août 2014 19:13:35 UTC+2, db a écrit :
J'avais lu trop vite, je pensais que H3, H4... étaient des contrôles du
formulaire. Peut-être alors :
Public Sub rechHpost(Hx) 'rech d'un controle horaire postérieur rempli
Dim H(7) As Control, n As Byte
Set H(3) = Me.installation
Set H(4) = Me.induction
Set H(5) = Me.incision
Set H(6) = Me.pansement
Set H(7) = Me.sortie
For n = 3 To 7
If IsNull(H(n)) = False Then
If DateDiff("n", Hx, H(n)) > -360 Then
db
Merci, beaucoup ! Ca marche !
Mais, j'aimerais beaucoup que tu m'expliques... car je ne comprends pas ce que tu m'as fait coder. Pourquoi je ne déclare qu'un H(7) (j'avais laiss é les autres ce qui m'entrainait une erreur) ? Tu fais appel à une fonc tionnalité que je ne connaît pas.
Et dans la même veine, dans mon code, j'incrémente H(n) d'1 jour, mais ensuite comment renvoyer cette nouvelle valeur au bon contrôle dans le fo rmulaire ?
Merci d'avance.
Le lundi 11 août 2014 19:13:35 UTC+2, db a écrit :
J'avais lu trop vite, je pensais que H3, H4... étaient des contrôles du
formulaire. Peut-être alors :
Public Sub rechHpost(Hx) 'rech d'un controle horaire postérieur rempli
Dim H(7) As Control, n As Byte
Set H(3) = Me.installation
Set H(4) = Me.induction
Set H(5) = Me.incision
Set H(6) = Me.pansement
Set H(7) = Me.sortie
For n = 3 To 7
If IsNull(H(n)) = False Then
If DateDiff("n", Hx, H(n)) > -360 Then
db
Merci, beaucoup ! Ca marche ! Mais, j'aimerais beaucoup que tu m'expliques... car je ne comprends pas ce que tu m'as fait coder. Pourquoi je ne déclare qu'un H(7) (j'avais laiss é les autres ce qui m'entrainait une erreur) ? Tu fais appel à une fonc tionnalité que je ne connaît pas. Et dans la même veine, dans mon code, j'incrémente H(n) d'1 jour, mais ensuite comment renvoyer cette nouvelle valeur au bon contrôle dans le fo rmulaire ? Merci d'avance.
db
Le 11/08/2014 19:54, a écrit :
Merci, beaucoup ! Ca marche ! Mais, j'aimerais beaucoup que tu m'expliques... car je ne comprends
pas ce que tu m'as fait coder. Pourquoi je ne déclare qu'un H(7) (j'avais laissé les autres ce qui m'entrainait une erreur) ? Tu fais appel à une fonctionnalité que je ne connaît pas.
Et dans la même veine, dans mon code, j'incrémente H(n) d'1 jour,
mais ensuite comment renvoyer cette nouvelle valeur au bon contrôle dans le formulaire ?
Merci d'avance.
"Dim H(7) as control" déclare un tableau de 7 contrôles, accessibles par H(1), H(2), etc.
Mais dans votre cas, s'il doit y avoir interaction entre ces contrôles et leur équivalent dans le formulaire, je ferais sans doute comme ça :
Public Sub rechHpost(Hx) 'rech d'un controle horaire postérieur rempli Dim H(7) As String, n As Byte
...et la mise à jour du formulaire se fera avec Me(H(n))=..., sous réserve que les contrôles du formulaire soient modifiables.
Non testé, mais en gros, c'est l'idée
db
Le 11/08/2014 19:54, jpaul.berard@gmail.com a écrit :
Merci, beaucoup ! Ca marche !
Mais, j'aimerais beaucoup que tu m'expliques... car je ne comprends
pas ce que tu m'as fait coder. Pourquoi je ne déclare qu'un H(7)
(j'avais laissé les autres ce qui m'entrainait une erreur) ? Tu fais
appel à une fonctionnalité que je ne connaît pas.
Et dans la même veine, dans mon code, j'incrémente H(n) d'1 jour,
mais ensuite comment renvoyer cette nouvelle valeur au bon contrôle dans
le formulaire ?
Merci d'avance.
"Dim H(7) as control" déclare un tableau de 7 contrôles, accessibles par
H(1), H(2), etc.
Mais dans votre cas, s'il doit y avoir interaction entre ces contrôles
et leur équivalent dans le formulaire, je ferais sans doute comme ça :
Public Sub rechHpost(Hx) 'rech d'un controle horaire postérieur rempli
Dim H(7) As String, n As Byte
Merci, beaucoup ! Ca marche ! Mais, j'aimerais beaucoup que tu m'expliques... car je ne comprends
pas ce que tu m'as fait coder. Pourquoi je ne déclare qu'un H(7) (j'avais laissé les autres ce qui m'entrainait une erreur) ? Tu fais appel à une fonctionnalité que je ne connaît pas.
Et dans la même veine, dans mon code, j'incrémente H(n) d'1 jour,
mais ensuite comment renvoyer cette nouvelle valeur au bon contrôle dans le formulaire ?
Merci d'avance.
"Dim H(7) as control" déclare un tableau de 7 contrôles, accessibles par H(1), H(2), etc.
Mais dans votre cas, s'il doit y avoir interaction entre ces contrôles et leur équivalent dans le formulaire, je ferais sans doute comme ça :
Public Sub rechHpost(Hx) 'rech d'un controle horaire postérieur rempli Dim H(7) As String, n As Byte
Etonnamment, je n'ai pas eu besoin de faire Me(H(n)) = nouvelle valeur. En faisant directement H(n) = H(n) + 1 mon contrôle a été directement mis à jour !
Oui, c'est normal tant qu'il n'y a pas d'ambigüité. Mais le fait de préfixer avec Me est une sage précaution :-).
db
Le 11/08/2014 21:17, jpaul.berard@gmail.com a écrit :
Etonnamment, je n'ai pas eu besoin de faire Me(H(n)) = nouvelle valeur. En faisant directement
H(n) = H(n) + 1
mon contrôle a été directement mis à jour !
Oui, c'est normal tant qu'il n'y a pas d'ambigüité. Mais le fait de
préfixer avec Me est une sage précaution :-).
Etonnamment, je n'ai pas eu besoin de faire Me(H(n)) = nouvelle valeur. En faisant directement H(n) = H(n) + 1 mon contrôle a été directement mis à jour !
Oui, c'est normal tant qu'il n'y a pas d'ambigüité. Mais le fait de préfixer avec Me est une sage précaution :-).
db
jpaul.berard
Le lundi 11 août 2014 22:02:07 UTC+2, db a écrit :
> Etonnamment, je n'ai pas eu besoin de faire Me(H(n)) = nouvelle valeu r. En faisant directement
> H(n) = H(n) + 1
> mon contrôle a été directement mis à jour !
Oui, c'est normal tant qu'il n'y a pas d'ambigüité. Mais le fait de
préfixer avec Me est une sage précaution :-).
Par contre Me(H(n)) = H(n) + 1 me renvoyait une erreur. Je n'ai pas essay é en utilisant Me(H(n)) = Dateadd ("d", 1, H(n))
Le lundi 11 août 2014 22:02:07 UTC+2, db a écrit :
> Etonnamment, je n'ai pas eu besoin de faire Me(H(n)) = nouvelle valeu r. En faisant directement
> H(n) = H(n) + 1
> mon contrôle a été directement mis à jour !
Oui, c'est normal tant qu'il n'y a pas d'ambigüité. Mais le fait de
préfixer avec Me est une sage précaution :-).
Par contre Me(H(n)) = H(n) + 1 me renvoyait une erreur. Je n'ai pas essay é en utilisant Me(H(n)) = Dateadd ("d", 1, H(n))
Le lundi 11 août 2014 22:02:07 UTC+2, db a écrit :
> Etonnamment, je n'ai pas eu besoin de faire Me(H(n)) = nouvelle valeu r. En faisant directement
> H(n) = H(n) + 1
> mon contrôle a été directement mis à jour !
Oui, c'est normal tant qu'il n'y a pas d'ambigüité. Mais le fait de
préfixer avec Me est une sage précaution :-).
Par contre Me(H(n)) = H(n) + 1 me renvoyait une erreur. Je n'ai pas essay é en utilisant Me(H(n)) = Dateadd ("d", 1, H(n))
Gloops
a écrit le 11/08/2014 15:43 :
If IsNull(Me.Controls("H" & n)) = False Then
Bonjour,
Si c'est l'existence du contrôle, que tu veux tester, un temps on trouvait sur le site de Raymond Sénèque ou celui d'Hervé Inisan une fonction ControlExists. Hier j'ai échoué à retrouver ça, mais il se pourrait bien que j'aie mal cherché.
De mémoire, il existe deux moyens : - ou parcourir en boucle tous les contrôles pour comparer leurs noms au nom à vérifier - ou utiliser Application.SysCmd
La même chose s'applique aux tables, aux formulaires ...
Attention, pour les formulaires la syntaxe est différente selon qu'on s'intéresse aux formulaires existants ou aux formulaires ouverts.
jpaul.berard@gmail.com a écrit le 11/08/2014 15:43 :
If IsNull(Me.Controls("H" & n)) = False Then
Bonjour,
Si c'est l'existence du contrôle, que tu veux tester, un temps on
trouvait sur le site de Raymond Sénèque ou celui d'Hervé Inisan une
fonction ControlExists. Hier j'ai échoué à retrouver ça, mais il se
pourrait bien que j'aie mal cherché.
De mémoire, il existe deux moyens :
- ou parcourir en boucle tous les contrôles pour comparer leurs noms au
nom à vérifier
- ou utiliser Application.SysCmd
La même chose s'applique aux tables, aux formulaires ...
Attention, pour les formulaires la syntaxe est différente selon qu'on
s'intéresse aux formulaires existants ou aux formulaires ouverts.
Si c'est l'existence du contrôle, que tu veux tester, un temps on trouvait sur le site de Raymond Sénèque ou celui d'Hervé Inisan une fonction ControlExists. Hier j'ai échoué à retrouver ça, mais il se pourrait bien que j'aie mal cherché.
De mémoire, il existe deux moyens : - ou parcourir en boucle tous les contrôles pour comparer leurs noms au nom à vérifier - ou utiliser Application.SysCmd
La même chose s'applique aux tables, aux formulaires ...
Attention, pour les formulaires la syntaxe est différente selon qu'on s'intéresse aux formulaires existants ou aux formulaires ouverts.
jpaul.berard
Le mardi 12 août 2014 22:25:54 UTC+2, Gloops a écrit :
Bonjour,
Si c'est l'existence du contrôle, que tu veux tester, un temps on
trouvait sur le site de Raymond Sénèque ou celui d'Hervé Inisan une
fonction ControlExists. Hier j'ai échoué à retrouver ça, mais il se
pourrait bien que j'aie mal cherché.
De mémoire, il existe deux moyens :
- ou parcourir en boucle tous les contrôles pour comparer leurs noms au
nom à vérifier
- ou utiliser Application.SysCmd
La même chose s'applique aux tables, aux formulaires ...
Attention, pour les formulaires la syntaxe est différente selon qu'on
s'intéresse aux formulaires existants ou aux formulaires ouverts.
Bonsoir, Comme je l'ai expliqué dans le post initial, il s'agit simplement de test er la cohérence entre des contrôles horaires (que l'horaire suivant sai si par l'opérateur n'intervienne pas avant le précédent...) Mais avant de faire la vérification, je regarde que le contrôle ne soit pas vide d'où l'appel à la fonction IsNull().
Le mardi 12 août 2014 22:25:54 UTC+2, Gloops a écrit :
Bonjour,
Si c'est l'existence du contrôle, que tu veux tester, un temps on
trouvait sur le site de Raymond Sénèque ou celui d'Hervé Inisan une
fonction ControlExists. Hier j'ai échoué à retrouver ça, mais il se
pourrait bien que j'aie mal cherché.
De mémoire, il existe deux moyens :
- ou parcourir en boucle tous les contrôles pour comparer leurs noms au
nom à vérifier
- ou utiliser Application.SysCmd
La même chose s'applique aux tables, aux formulaires ...
Attention, pour les formulaires la syntaxe est différente selon qu'on
s'intéresse aux formulaires existants ou aux formulaires ouverts.
Bonsoir,
Comme je l'ai expliqué dans le post initial, il s'agit simplement de test er la cohérence entre des contrôles horaires (que l'horaire suivant sai si par l'opérateur n'intervienne pas avant le précédent...)
Mais avant de faire la vérification, je regarde que le contrôle ne soit pas vide d'où l'appel à la fonction IsNull().
Le mardi 12 août 2014 22:25:54 UTC+2, Gloops a écrit :
Bonjour,
Si c'est l'existence du contrôle, que tu veux tester, un temps on
trouvait sur le site de Raymond Sénèque ou celui d'Hervé Inisan une
fonction ControlExists. Hier j'ai échoué à retrouver ça, mais il se
pourrait bien que j'aie mal cherché.
De mémoire, il existe deux moyens :
- ou parcourir en boucle tous les contrôles pour comparer leurs noms au
nom à vérifier
- ou utiliser Application.SysCmd
La même chose s'applique aux tables, aux formulaires ...
Attention, pour les formulaires la syntaxe est différente selon qu'on
s'intéresse aux formulaires existants ou aux formulaires ouverts.
Bonsoir, Comme je l'ai expliqué dans le post initial, il s'agit simplement de test er la cohérence entre des contrôles horaires (que l'horaire suivant sai si par l'opérateur n'intervienne pas avant le précédent...) Mais avant de faire la vérification, je regarde que le contrôle ne soit pas vide d'où l'appel à la fonction IsNull().