Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

transfert de parametres entre procedures

15 réponses
Avatar
jcp66
Bonjour
J'ai une procedure

Sub LectureParam()
Lecture Feuille excel avec .....
nbpersonnes=cells(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

10 réponses

1 2
Avatar
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" a écrit dans le message de news:
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




Avatar
jcp66
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" a écrit dans le message de 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" a écrit dans le message de news:
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









Avatar
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" a écrit dans le message de news:
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" a écrit dans le message de 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" a écrit dans le message de news:
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













Avatar
jcp66
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" a écrit dans le message de news:

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" a écrit dans le message de news:
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" a écrit dans le message de 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" a écrit dans le message de news:
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


















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

"Jacky" a écrit dans le message de
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" a écrit dans le message de news:
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
>
>




Avatar
LSteph
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" a écrit dans le message de 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" a écrit dans le message de news:
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












Avatar
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" a écrit dans le message de news:
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" a écrit dans le message de news:

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" a écrit dans le message de news:
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" a écrit dans le message de 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" a écrit dans le message de news:
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






















Avatar
Jacky
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" a écrit dans le message de 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" a écrit dans le message de 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" a écrit dans le message de news:
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













Avatar
Fredo P.
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" a écrit dans le message de
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" a écrit dans le message de 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" a écrit dans le message de news:
>> 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
>>>
>>>
>>
>>
>
>


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



"Jacky" a écrit dans le message de news:

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" a écrit dans le message de news:
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" a écrit dans le message de news:

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" a écrit dans le message de news:
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" a écrit dans le message de 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" a écrit dans le message de news:
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



























1 2