OVH Cloud OVH Cloud

Boucle de teste de contenu de TXT

4 réponses
Avatar
sophie
Bonjour,

Dans mon formulaire, je voudrais pouvoir faire une macro qui teste le
contenu de chacun de mes 45 textbox et dès qu'il trouve un textbox de vide,
il le remplit avec "ok" et la boucle s'arrête sans continuer à tester les
autres.Donc, je voudrais qu'il m'envoie mon info "ok" dans le premier
textbox vide qu'il recontre.
Exemple: sur les 45textbox, seuls textbox1 à textbox4 sont remplis, dans
textbox 5 j'aurais donc "ok" et les autes textbox6 à textbox45 seront
vides.
Je pense qu'une boucle serait appropriée.
Par contre, j'ai essayé d'en faire une (je ne suis pas à l'aise encore avec
les boucles) mais j'ai "ok" dans toutes les lignes (vu ma boucle c'est
logique!); comment lui dire que dès qu'il tombe sur le premier textbox vide
la boucle s'arrête et il m'envoie mon "ok"?


For i to 46
if Me.Controls("Textbox" & i) = "" then "ok"
next i

En vous remerciant par avance.
Sophie

4 réponses

Avatar
Pierre Fauconnier
Bonjour

Je doute que la macro que tu donnes mettes "ok" dans le contrôle texte. Je
suppose qu'il ne s'agit pas d'une copie fidèle de la macro que tu
utilises...
Voici qui devrait faire l'affaire

for i = 1 to 46
if me.controls("textbox" & i) = "" then
me.controls("textbox" & i).text = "ok"
exit for
end if
next i

Ok?

--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
--

"sophie" a écrit dans le message de news:
%
Bonjour,

Dans mon formulaire, je voudrais pouvoir faire une macro qui teste le
contenu de chacun de mes 45 textbox et dès qu'il trouve un textbox de
vide, il le remplit avec "ok" et la boucle s'arrête sans continuer à
tester les autres.Donc, je voudrais qu'il m'envoie mon info "ok" dans le
premier textbox vide qu'il recontre.
Exemple: sur les 45textbox, seuls textbox1 à textbox4 sont remplis, dans
textbox 5 j'aurais donc "ok" et les autes textbox6 à textbox45 seront
vides.
Je pense qu'une boucle serait appropriée.
Par contre, j'ai essayé d'en faire une (je ne suis pas à l'aise encore
avec les boucles) mais j'ai "ok" dans toutes les lignes (vu ma boucle
c'est logique!); comment lui dire que dès qu'il tombe sur le premier
textbox vide la boucle s'arrête et il m'envoie mon "ok"?


For i to 46
if Me.Controls("Textbox" & i) = "" then "ok"
next i

En vous remerciant par avance.
Sophie



Avatar
sophie
Bonjour Pierre,

Merci pour ta réponse. Effectivement j'avais mal recopié ma tentative de
boucle.
Celle que tu viens de me donner marche parfaitement et je te remercie pour
ton coup de main. Ce qui est "rageant" c'est de voir que tu a mis quelques
secondes à faire une macro sur laquelle je bossais depuis hier soir.
Peut-être que dans quelques temps je passerais à un autre stade que
débutante.....
Pourrais-je de demander encore un service?
Je voudrais imbriquer la macro suivante avec celle que tu m'as donné afin de
pouvoir envoyer dans le premier textbox vide le "caption" de l'option
button qui est à true .
Dans un FRAME, j'ai 4 optionbuttons (opt1 à opt4) et j'ai toujours mes 45
textbox.

For n = 1 To 4
If Me.Controls("opt" & n) = True Then
'dans le premier textbox vide macro Pierre Fauconnier' =
Me.Controls("opt" & i)

Par ailleurs, je voulais te dire un grand merçi pour m'avoir aidé à
comprendre u peu plus les variables avec ton explication "VARIABLES: où les
déclarer?" sur excelabo.

Sophie


"Pierre Fauconnier" a écrit dans le
message de news:
Bonjour

Je doute que la macro que tu donnes mettes "ok" dans le contrôle texte. Je
suppose qu'il ne s'agit pas d'une copie fidèle de la macro que tu
utilises...
Voici qui devrait faire l'affaire

for i = 1 to 46
if me.controls("textbox" & i) = "" then
me.controls("textbox" & i).text = "ok"
exit for
end if
next i

Ok?

--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
--

"sophie" a écrit dans le message de news:
%
Bonjour,

Dans mon formulaire, je voudrais pouvoir faire une macro qui teste le
contenu de chacun de mes 45 textbox et dès qu'il trouve un textbox de
vide, il le remplit avec "ok" et la boucle s'arrête sans continuer à
tester les autres.Donc, je voudrais qu'il m'envoie mon info "ok" dans le
premier textbox vide qu'il recontre.
Exemple: sur les 45textbox, seuls textbox1 à textbox4 sont remplis, dans
textbox 5 j'aurais donc "ok" et les autes textbox6 à textbox45 seront
vides.
Je pense qu'une boucle serait appropriée.
Par contre, j'ai essayé d'en faire une (je ne suis pas à l'aise encore
avec les boucles) mais j'ai "ok" dans toutes les lignes (vu ma boucle
c'est logique!); comment lui dire que dès qu'il tombe sur le premier
textbox vide la boucle s'arrête et il m'envoie mon "ok"?


For i to 46
if Me.Controls("Textbox" & i) = "" then "ok"
next i

En vous remerciant par avance.
Sophie







Avatar
michdenis
Bonjour Sophie,


Pour ta première boucle, utilise une variable
pour contenir la valeur du "caption" du bouton activé.

Dim OptCaption as string

For n = 1 To 4
If Me.Controls("opt" & n) = True Then
OptCaption = Me.Controls("opt" & i).Caption
End if
Next

Et tu utilises le code de Pierre pour la suite

for i = 1 to 46
if me.controls("textbox" & i) = "" then
me.controls("textbox" & i).text = OptCaption
exit for
end if
next i



Salutations!



"sophie" a écrit dans le message de news: %
Bonjour Pierre,

Merci pour ta réponse. Effectivement j'avais mal recopié ma tentative de
boucle.
Celle que tu viens de me donner marche parfaitement et je te remercie pour
ton coup de main. Ce qui est "rageant" c'est de voir que tu a mis quelques
secondes à faire une macro sur laquelle je bossais depuis hier soir.
Peut-être que dans quelques temps je passerais à un autre stade que
débutante.....
Pourrais-je de demander encore un service?
Je voudrais imbriquer la macro suivante avec celle que tu m'as donné afin de
pouvoir envoyer dans le premier textbox vide le "caption" de l'option
button qui est à true .
Dans un FRAME, j'ai 4 optionbuttons (opt1 à opt4) et j'ai toujours mes 45
textbox.

For n = 1 To 4
If Me.Controls("opt" & n) = True Then
'dans le premier textbox vide macro Pierre Fauconnier' Me.Controls("opt" & i)

Par ailleurs, je voulais te dire un grand merçi pour m'avoir aidé à
comprendre u peu plus les variables avec ton explication "VARIABLES: où les
déclarer?" sur excelabo.

Sophie


"Pierre Fauconnier" a écrit dans le
message de news:
Bonjour

Je doute que la macro que tu donnes mettes "ok" dans le contrôle texte. Je
suppose qu'il ne s'agit pas d'une copie fidèle de la macro que tu
utilises...
Voici qui devrait faire l'affaire

for i = 1 to 46
if me.controls("textbox" & i) = "" then
me.controls("textbox" & i).text = "ok"
exit for
end if
next i

Ok?

--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
--

"sophie" a écrit dans le message de news:
%
Bonjour,

Dans mon formulaire, je voudrais pouvoir faire une macro qui teste le
contenu de chacun de mes 45 textbox et dès qu'il trouve un textbox de
vide, il le remplit avec "ok" et la boucle s'arrête sans continuer à
tester les autres.Donc, je voudrais qu'il m'envoie mon info "ok" dans le
premier textbox vide qu'il recontre.
Exemple: sur les 45textbox, seuls textbox1 à textbox4 sont remplis, dans
textbox 5 j'aurais donc "ok" et les autes textbox6 à textbox45 seront
vides.
Je pense qu'une boucle serait appropriée.
Par contre, j'ai essayé d'en faire une (je ne suis pas à l'aise encore
avec les boucles) mais j'ai "ok" dans toutes les lignes (vu ma boucle
c'est logique!); comment lui dire que dès qu'il tombe sur le premier
textbox vide la boucle s'arrête et il m'envoie mon "ok"?


For i to 46
if Me.Controls("Textbox" & i) = "" then "ok"
next i

En vous remerciant par avance.
Sophie







Avatar
Pierre Fauconnier
Bonjour Sophie

Je savais que le travail de "Flo Misange" était utile, mais c'est toujours
agréable de voir qu'un truc que l'on a pondu serve à nouveau, et aussi de
voir que certain(e)s cherchent d'abord la réponse sur les sites proposés
dans de nombreux messages du MPFE avant de questionner ici.

Bon travail, et bon week-end aussi. (Il n'y a pas que Excel dans la vie,
quoique...)


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"sophie" a écrit dans le message de news:
%
Bonjour Pierre,

Merci pour ta réponse. Effectivement j'avais mal recopié ma tentative de
boucle.
Celle que tu viens de me donner marche parfaitement et je te remercie pour
ton coup de main. Ce qui est "rageant" c'est de voir que tu a mis quelques
secondes à faire une macro sur laquelle je bossais depuis hier soir.
Peut-être que dans quelques temps je passerais à un autre stade que
débutante.....
Pourrais-je de demander encore un service?
Je voudrais imbriquer la macro suivante avec celle que tu m'as donné afin
de pouvoir envoyer dans le premier textbox vide le "caption" de l'option
button qui est à true .
Dans un FRAME, j'ai 4 optionbuttons (opt1 à opt4) et j'ai toujours mes 45
textbox.

For n = 1 To 4
If Me.Controls("opt" & n) = True Then
'dans le premier textbox vide macro Pierre Fauconnier' =
Me.Controls("opt" & i)

Par ailleurs, je voulais te dire un grand merçi pour m'avoir aidé à
comprendre u peu plus les variables avec ton explication "VARIABLES: où
les déclarer?" sur excelabo.

Sophie


"Pierre Fauconnier" a écrit dans le
message de news:
Bonjour

Je doute que la macro que tu donnes mettes "ok" dans le contrôle texte.
Je suppose qu'il ne s'agit pas d'une copie fidèle de la macro que tu
utilises...
Voici qui devrait faire l'affaire

for i = 1 to 46
if me.controls("textbox" & i) = "" then
me.controls("textbox" & i).text = "ok"
exit for
end if
next i

Ok?

--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
--

"sophie" a écrit dans le message de news:
%
Bonjour,

Dans mon formulaire, je voudrais pouvoir faire une macro qui teste le
contenu de chacun de mes 45 textbox et dès qu'il trouve un textbox de
vide, il le remplit avec "ok" et la boucle s'arrête sans continuer à
tester les autres.Donc, je voudrais qu'il m'envoie mon info "ok" dans le
premier textbox vide qu'il recontre.
Exemple: sur les 45textbox, seuls textbox1 à textbox4 sont remplis, dans
textbox 5 j'aurais donc "ok" et les autes textbox6 à textbox45 seront
vides.
Je pense qu'une boucle serait appropriée.
Par contre, j'ai essayé d'en faire une (je ne suis pas à l'aise encore
avec les boucles) mais j'ai "ok" dans toutes les lignes (vu ma boucle
c'est logique!); comment lui dire que dès qu'il tombe sur le premier
textbox vide la boucle s'arrête et il m'envoie mon "ok"?


For i to 46
if Me.Controls("Textbox" & i) = "" then "ok"
next i

En vous remerciant par avance.
Sophie