transfert de parametres entre procedures

Le
jcp66
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec ..
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas transmise
à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne sais
pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #17990571
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
transmise à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne sais
pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp




jcp66
Le #17990711
Merci
On est donc obligés de citer les noms des variables dans la ligne Sub. N'y a
t il pas moyen de s'en affranchir ?
Merci
jcp

"Jacky"
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
transmise à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne
sais pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp









Jacky
Le #17990821
Re...
On est donc obligés de citer les noms des variables dans la ligne Sub. N'y
a t il pas moyen de s'en affranchir ?


Je ne saisie pas vraiment la question.....
Dans==> Sub Creafich(nbpersonnes)
On récupère la valeur mise par==> Call Creafich(Cells(i, 1))
Ici la valeur de la cellule (i,1) que l'on récupère dans une variable dans
la 2 ème procédure.
J'avais pris "nbpersonnes" parce que la suite laissait penser que ......mais
ce nom peut être n'importe lequel.
Sub Creafich(x)
ou
Sub Creafich(x as long)
C'était bien un transfert de variable d'une sub à une autre qui est demandé
??
--
Salutations
JJ


"jcp66" 49305386$0$969$
Merci
On est donc obligés de citer les noms des variables dans la ligne Sub. N'y
a t il pas moyen de s'en affranchir ?
Merci
jcp

"Jacky"
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
transmise à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne
sais pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp













jcp66
Le #17991051
Merci Jacky.
Oui tout à fait mais j'ai une quinzaine de variables que je lis dans Sub
LectureParam() et que je vais utiliser dans Sub Creafich
Ce qui me donnera
Sub Creafich (nbpersonnes, var2, var3, var4, var5 etc etc)
C'est de cette liste que j'aimerais m'affranchir.
Cordialement


"Jacky"
Re...
On est donc obligés de citer les noms des variables dans la ligne Sub.
N'y a t il pas moyen de s'en affranchir ?


Je ne saisie pas vraiment la question.....
Dans==> Sub Creafich(nbpersonnes)
On récupère la valeur mise par==> Call Creafich(Cells(i, 1))
Ici la valeur de la cellule (i,1) que l'on récupère dans une variable dans
la 2 ème procédure.
J'avais pris "nbpersonnes" parce que la suite laissait penser que
......mais ce nom peut être n'importe lequel.
Sub Creafich(x)
ou
Sub Creafich(x as long)
C'était bien un transfert de variable d'une sub à une autre qui est
demandé ??
--
Salutations
JJ


"jcp66" 49305386$0$969$
Merci
On est donc obligés de citer les noms des variables dans la ligne Sub.
N'y a t il pas moyen de s'en affranchir ?
Merci
jcp

"Jacky"
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
transmise à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne
sais pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp


















Fredo P.
Le #17991041
Est ce que Call est obligatoire?
Creafich Cells(i,1) serait ce pas suffisant?

"Jacky" news:
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
> Bonjour
> J'ai une procedure
>
> Sub LectureParam()
> Lecture Feuille excel avec .....
> nbpersonnesÎlls(i,1)
> etc
>
> Puis d'autres procedures qui doivent utiliser ces donnees
> Sub Creafich()
> LectureParam
> For i=1 to nbpersonnes
> etc
>
> Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
> transmise à la 2ème
>
> Il y a donc quelque chose que je ne fais pas comme il faut mais je ne


sais
> pas quoi. Si quelqu'un peut m'aider, par avance merci.
>
>
> Cordialement
> jcp
>
>




LSteph
Le #17991331
bonsoir ,

amha...

c'est pas toujours dans la ligne en question mais
quand au fait de déclarer ou non ses variables cela en dit tout de suite
long sur celui qui code !

Même quand ce n'est pas obligatoire c'est nettement plus efficace!

Et quand ça ne servirait visiblement à rien pour certains qui se
complaisent dans le camp de ceux qui pensent qu'on peut s'en affranchir...
c'est précisément là que c'est important et que cela apporte au moins de
savoir ce qu'on utilise et ce que cela pèse dans ce que l'on en fait.
Certains pros peuvent sans doute s'en passer parfois .
Dire que c'est indispensable c'est une autre question et s'en passer
quand on sait que le contexte le permet c'est possible..

Toutefois dans bien des cas cela posera pb si on a pas compris pourquoi
et si un autre utilisateur prend l'habitude soigneuse d'utiliser mais
sans trop savoir pourquoi
ce qui donne un potentiel bien plus grand en efficacité
selon l'ampleur des besoins que l'on a au regard des ressources dont on
dispose cela peut peser lourd et lui donner un truc qui ne passe pas
chez lui alors qu'il s'attache à faire propre c'est un peu vilain !

...donc plus humblement et simplement en s'y habituant on se rendra
compte rapidement que l'on a gagné au moins de faire quelque chose qui
pourra être utilisé plus efficacement et même si il y a des cas ou cela
ne changerait absolument rien cela a au moins le mérite de nous
contraindre à comprendre.

Regarde ce qui concerne le type des variables, leur poids..etc

Après, ce n'est pas toujours une question de poids ..!
Les possibilités de l'informatique actuelle permettraient de "s'en
affranchir dans nombre de cas.

mais savoir qu'on utilise un booleeen un byte un integer un long un
entier , un objet, un variant.. et pourquoi, voire l'histoire qui a mené
aux solutions d'aujourd'hui.


Ce sont des besoins du code et de ce que l'on veut en faire qu'il est
question!

Mon petit avis d'un 28/11/2008

--
lSteph








jcp66 a écrit :
Merci
On est donc obligés de citer les noms des variables dans la ligne Sub. N'y a
t il pas moyen de s'en affranchir ?
Merci
jcp

"Jacky"
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
transmise à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne
sais pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp












Jacky
Le #17991321
Re..
Autres façon peut être en déclaration public ??
'-------------
Public nbpersonnes
'---------------
Sub LectureParam()
i = 1
nbpersonnes = Cells(i, 1)
Creafich
End Sub
'--------------
Sub Creafich()
MsgBox nbpersonnes
End Sub
--
Salutations
JJ


"jcp66" 49305c46$0$957$
Merci Jacky.
Oui tout à fait mais j'ai une quinzaine de variables que je lis dans Sub
LectureParam() et que je vais utiliser dans Sub Creafich
Ce qui me donnera
Sub Creafich (nbpersonnes, var2, var3, var4, var5 etc etc)
C'est de cette liste que j'aimerais m'affranchir.
Cordialement


"Jacky"
Re...
On est donc obligés de citer les noms des variables dans la ligne Sub.
N'y a t il pas moyen de s'en affranchir ?


Je ne saisie pas vraiment la question.....
Dans==> Sub Creafich(nbpersonnes)
On récupère la valeur mise par==> Call Creafich(Cells(i, 1))
Ici la valeur de la cellule (i,1) que l'on récupère dans une variable
dans la 2 ème procédure.
J'avais pris "nbpersonnes" parce que la suite laissait penser que
......mais ce nom peut être n'importe lequel.
Sub Creafich(x)
ou
Sub Creafich(x as long)
C'était bien un transfert de variable d'une sub à une autre qui est
demandé ??
--
Salutations
JJ


"jcp66" 49305386$0$969$
Merci
On est donc obligés de citer les noms des variables dans la ligne Sub.
N'y a t il pas moyen de s'en affranchir ?
Merci
jcp

"Jacky"
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
transmise à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne
sais pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp






















Jacky
Le #17991281
Re..
Oui Stéphane, je te suis pour la déclaration des variables, même si dans mes
propositions ce n'est pas toujours fait.
Il faut bien laisser quelque chose à faire au demandeur.
;o)
Mais ici la demande "c'est" de s'en passer.(non pas de la déclaration, mais
des paramètres)

--
Salutations
JJ


"LSteph" OO$
bonsoir ,

amha...

c'est pas toujours dans la ligne en question mais
quand au fait de déclarer ou non ses variables cela en dit tout de suite
long sur celui qui code !

Même quand ce n'est pas obligatoire c'est nettement plus efficace!

Et quand ça ne servirait visiblement à rien pour certains qui se
complaisent dans le camp de ceux qui pensent qu'on peut s'en affranchir...
c'est précisément là que c'est important et que cela apporte au moins de
savoir ce qu'on utilise et ce que cela pèse dans ce que l'on en fait.
Certains pros peuvent sans doute s'en passer parfois .
Dire que c'est indispensable c'est une autre question et s'en passer quand
on sait que le contexte le permet c'est possible..

Toutefois dans bien des cas cela posera pb si on a pas compris pourquoi
et si un autre utilisateur prend l'habitude soigneuse d'utiliser mais sans
trop savoir pourquoi
ce qui donne un potentiel bien plus grand en efficacité
selon l'ampleur des besoins que l'on a au regard des ressources dont on
dispose cela peut peser lourd et lui donner un truc qui ne passe pas chez
lui alors qu'il s'attache à faire propre c'est un peu vilain !

...donc plus humblement et simplement en s'y habituant on se rendra compte
rapidement que l'on a gagné au moins de faire quelque chose qui pourra
être utilisé plus efficacement et même si il y a des cas ou cela ne
changerait absolument rien cela a au moins le mérite de nous contraindre
à comprendre.

Regarde ce qui concerne le type des variables, leur poids..etc

Après, ce n'est pas toujours une question de poids ..!
Les possibilités de l'informatique actuelle permettraient de "s'en
affranchir dans nombre de cas.

mais savoir qu'on utilise un booleeen un byte un integer un long un entier
, un objet, un variant.. et pourquoi, voire l'histoire qui a mené aux
solutions d'aujourd'hui.


Ce sont des besoins du code et de ce que l'on veut en faire qu'il est
question!

Mon petit avis d'un 28/11/2008

--
lSteph








jcp66 a écrit :
Merci
On est donc obligés de citer les noms des variables dans la ligne Sub.
N'y a t il pas moyen de s'en affranchir ?
Merci
jcp

"Jacky"
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
transmise à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne
sais pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp













Fredo P.
Le #17991451
Merci LSteph pour cette longue tirade, mon interrogation était orientée
principalement sur l'utilité, non pas envers l'utilisateur mais seulement
sur le déroulement de la routine s'il s'en trouva amélioré par l'emploi de
Call. Mais je conviens que cela peut aidé à la compréhension du code sur
tout pour ceux dont la programation n'a pas commencé avec VBA.

"LSteph" news:OO$
bonsoir ,

amha...

c'est pas toujours dans la ligne en question mais
quand au fait de déclarer ou non ses variables cela en dit tout de suite
long sur celui qui code !

Même quand ce n'est pas obligatoire c'est nettement plus efficace!

Et quand ça ne servirait visiblement à rien pour certains qui se
complaisent dans le camp de ceux qui pensent qu'on peut s'en affranchir...
c'est précisément là que c'est important et que cela apporte au moins de
savoir ce qu'on utilise et ce que cela pèse dans ce que l'on en fait.
Certains pros peuvent sans doute s'en passer parfois .
Dire que c'est indispensable c'est une autre question et s'en passer
quand on sait que le contexte le permet c'est possible..

Toutefois dans bien des cas cela posera pb si on a pas compris pourquoi
et si un autre utilisateur prend l'habitude soigneuse d'utiliser mais
sans trop savoir pourquoi
ce qui donne un potentiel bien plus grand en efficacité
selon l'ampleur des besoins que l'on a au regard des ressources dont on
dispose cela peut peser lourd et lui donner un truc qui ne passe pas
chez lui alors qu'il s'attache à faire propre c'est un peu vilain !

...donc plus humblement et simplement en s'y habituant on se rendra
compte rapidement que l'on a gagné au moins de faire quelque chose qui
pourra être utilisé plus efficacement et même si il y a des cas ou cela
ne changerait absolument rien cela a au moins le mérite de nous
contraindre à comprendre.

Regarde ce qui concerne le type des variables, leur poids..etc

Après, ce n'est pas toujours une question de poids ..!
Les possibilités de l'informatique actuelle permettraient de "s'en
affranchir dans nombre de cas.

mais savoir qu'on utilise un booleeen un byte un integer un long un
entier , un objet, un variant.. et pourquoi, voire l'histoire qui a mené
aux solutions d'aujourd'hui.


Ce sont des besoins du code et de ce que l'on veut en faire qu'il est
question!

Mon petit avis d'un 28/11/2008

--
lSteph








jcp66 a écrit :
> Merci
> On est donc obligés de citer les noms des variables dans la ligne Sub.


N'y a
> t il pas moyen de s'en affranchir ?
> Merci
> jcp
>
> "Jacky" >
>> Bonsoir,
>>
>> Par exemple:
>> '---------
>> Sub LectureParam()
>> i = 1
>> Call Creafich(Cells(i, 1))
>> End Sub
>> '--------------
>> Sub Creafich(nbpersonnes)
>> MsgBox "Incrementation dans la boucle " & nbpersonnes
>> 'For i = 1 To nbpersonnes
>> '----
>> '----
>> Next
>> End Sub
>> '------------
>>
>> --
>> Salutations
>> JJ
>>
>>
>> "jcp66" >> 49304cf6$0$915$
>>> Bonjour
>>> J'ai une procedure
>>>
>>> Sub LectureParam()
>>> Lecture Feuille excel avec .....
>>> nbpersonnesÎlls(i,1)
>>> etc
>>>
>>> Puis d'autres procedures qui doivent utiliser ces donnees
>>> Sub Creafich()
>>> LectureParam
>>> For i=1 to nbpersonnes
>>> etc
>>>
>>> Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
>>> transmise à la 2ème
>>>
>>> Il y a donc quelque chose que je ne fais pas comme il faut mais je ne
>>> sais pas quoi. Si quelqu'un peut m'aider, par avance merci.
>>>
>>>
>>> Cordialement
>>> jcp
>>>
>>>
>>
>>
>
>


jcp66
Le #17991441
Public nbpersonnes
Cela me donne un message "Attribut incorrect dans une procedure Sub ou
Function"



"Jacky"
Re..
Autres façon peut être en déclaration public ??
'-------------
Public nbpersonnes




'---------------
Sub LectureParam()
i = 1
nbpersonnes = Cells(i, 1)
Creafich
End Sub
'--------------
Sub Creafich()
MsgBox nbpersonnes
End Sub
--
Salutations
JJ


"jcp66" 49305c46$0$957$
Merci Jacky.
Oui tout à fait mais j'ai une quinzaine de variables que je lis dans Sub
LectureParam() et que je vais utiliser dans Sub Creafich
Ce qui me donnera
Sub Creafich (nbpersonnes, var2, var3, var4, var5 etc etc)
C'est de cette liste que j'aimerais m'affranchir.
Cordialement


"Jacky"
Re...
On est donc obligés de citer les noms des variables dans la ligne Sub.
N'y a t il pas moyen de s'en affranchir ?


Je ne saisie pas vraiment la question.....
Dans==> Sub Creafich(nbpersonnes)
On récupère la valeur mise par==> Call Creafich(Cells(i, 1))
Ici la valeur de la cellule (i,1) que l'on récupère dans une variable
dans la 2 ème procédure.
J'avais pris "nbpersonnes" parce que la suite laissait penser que
......mais ce nom peut être n'importe lequel.
Sub Creafich(x)
ou
Sub Creafich(x as long)
C'était bien un transfert de variable d'une sub à une autre qui est
demandé ??
--
Salutations
JJ


"jcp66" 49305386$0$969$
Merci
On est donc obligés de citer les noms des variables dans la ligne Sub.
N'y a t il pas moyen de s'en affranchir ?
Merci
jcp

"Jacky"
Bonsoir,

Par exemple:
'---------
Sub LectureParam()
i = 1
Call Creafich(Cells(i, 1))
End Sub
'--------------
Sub Creafich(nbpersonnes)
MsgBox "Incrementation dans la boucle " & nbpersonnes
'For i = 1 To nbpersonnes
'----
'----
Next
End Sub
'------------

--
Salutations
JJ


"jcp66" 49304cf6$0$915$
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnesÎlls(i,1)
etc

Puis d'autres procedures qui doivent utiliser ces donnees
Sub Creafich()
LectureParam
For i=1 to nbpersonnes
etc

Ors la valeur de nbpersonnes lue dans la 1ere procedure n'est pas
transmise à la 2ème

Il y a donc quelque chose que je ne fais pas comme il faut mais je ne
sais pas quoi. Si quelqu'un peut m'aider, par avance merci.


Cordialement
jcp



























Publicité
Poster une réponse
Anonyme