OVH Cloud OVH Cloud

passage d'1 zone de texte dans 1 procedure

3 réponses
Avatar
Stéphane Lavergne
Bonjour,

J'utlise plusieurs champs dans 1 formulaire
Forms![Formulaire1]![Zonedetexte1]
Forms![Formulaire1]![Zonedetexte2]
...
Forms![Formulaire1]![Zonedetexten]

Je le lis, je le traite, et je l'écris dans diverses procédures
événementielles.

Voici l'ancienne structure :

Sub bouton1_clic()
... ' 50 lignes de code
Forms![Formulaire1]![Zonedetexte1] = ...
... ' 50 lignes de code
end sub
Sub bouton2_clic()
... ' 50 lignes de code identique
Forms![Formulaire1]![Zonedetexte2] = ...
... ' 50 lignes de code identique
end sub
Sub bouton n_clic()
... ' 50 lignes de code identique
Forms![Formulaire1]![Zonedetexte n] = ...
... ' 50 lignes de code identique
end sub

Comme j'ai beaucoup de lignes de code en commun dans plusierus procédures, à
part ce fameux champs qui difère,
j'aimerai utiliser 1 autre procédure en passant en paramètre le champ ainsi
:

Sub bouton1_clic()
call procedure(Forms![Formulaire1]![Zonedetexte1])
end sub
Sub bouton2_clic()
call procedure(Forms![Formulaire1]![Zonedetexte2])
end sub
...
sub procedure(zonetexte as control)
... ' 50 lignes de code
zonetexte = ...
... ' 50 lignes de code
end sub


La structure Avant fonctionnait... mais cela ne fonctionne plus avec la
structure Apres : /

Je n'arrive pas à affecter la nouvelle valeur dans la zone de texte.
J'ai essayé sans succès :
zonetexte as control
zonetexte as object
zonetexte as textbox
...
zonetexte = ...
zonetexte.value = ...
zonetexte.text = ...

Avez-vous 1 solution à mon pb svp ?

Merci d'avance,
Stéphane

3 réponses

Avatar
Raymond
Bonjour.

Pourquoi ne passes-tu pas seulement l'indice de ton contrôle ?

Forms![Formulaire1]![Zonedetexte1] est composé de
Forms![Formulaire1]![Zonedetexte et de 1]


j'appellerais ma procédure par :
Sub bouton1_clic()
call maprocedure("1")

dans la procédure unique maprocedure j'indiquerais le nom du contrôle ainsi:

sub maprocedure(Indice as String)
Forms("formulaire1").Controls("Zonedetexte1" & Indice) = ...
end sub

ça parait compliqué mais très simple d'utilisation
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Stéphane Lavergne" a écrit dans le
message de news:
Bonjour,

J'utlise plusieurs champs dans 1 formulaire
Forms![Formulaire1]![Zonedetexte1]
Forms![Formulaire1]![Zonedetexte2]
...
Forms![Formulaire1]![Zonedetexten]

Je le lis, je le traite, et je l'écris dans diverses procédures
événementielles.

Voici l'ancienne structure :

Sub bouton1_clic()
... ' 50 lignes de code
Forms![Formulaire1]![Zonedetexte1] = ...
... ' 50 lignes de code
end sub
Sub bouton2_clic()
... ' 50 lignes de code identique
Forms![Formulaire1]![Zonedetexte2] = ...
... ' 50 lignes de code identique
end sub
Sub bouton n_clic()
... ' 50 lignes de code identique
Forms![Formulaire1]![Zonedetexte n] = ...
... ' 50 lignes de code identique
end sub

Comme j'ai beaucoup de lignes de code en commun dans plusierus procédures,
à

part ce fameux champs qui difère,
j'aimerai utiliser 1 autre procédure en passant en paramètre le champ
ainsi

:

Sub bouton1_clic()
call procedure(Forms![Formulaire1]![Zonedetexte1])
end sub
Sub bouton2_clic()
call procedure(Forms![Formulaire1]![Zonedetexte2])
end sub
...
sub procedure(zonetexte as control)
... ' 50 lignes de code
zonetexte = ...
... ' 50 lignes de code
end sub


La structure Avant fonctionnait... mais cela ne fonctionne plus avec la
structure Apres : /

Je n'arrive pas à affecter la nouvelle valeur dans la zone de texte.
J'ai essayé sans succès :
zonetexte as control
zonetexte as object
zonetexte as textbox
...
zonetexte = ...
zonetexte.value = ...
zonetexte.text = ...

Avez-vous 1 solution à mon pb svp ?

Merci d'avance,
Stéphane




Avatar
Raymond
.../...
Erreur lire :
sub maprocedure(Indice as String)
Forms("formulaire1").Controls("Zonedetexte" & Indice) = ...
au lieu de
sub maprocedure(Indice as String)
Forms("formulaire1").Controls("Zonedetexte1" & Indice) = ...

excuses.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.
Avatar
Xavier HUE
Bonjour Stéphane,

Sub ModifierControle(ctrl As Object)
MsgBox ctrl.Value
ctrl.Value = InputBox("Nouvelle Valeur", "Valeur
actuelle " & ctrl.Value)
End Sub

call ModifierControle(forms
("Frm001SaisieResultats").Controls("amacod") )

call ModifierControle(forms![Frm001SaisieResultats]!
[amacod] )

Fonctionne chez moi.
Es-tu sûr de ta syntaxe?
Poste les extraits de ton code, ce sera peut être plus
facile de t'aider.

Cordialement.
Xavier.

PS: Enlever blurg de l'adresse mail.