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

[VBA] valeur de retour d'une fonction toujours à 0

4 réponses
Avatar
Jean-Luc GARNIER
Bonjour,

Je viens de coder une fonction qui lit une liste de mots clé dans une
cellule (Feuille1) et les remplace par des valeurs issues de différentes
cellules (Feuille2), pour alimenter un tableau en mémoire. But de
l'opération: envoyer par mail une synthèse des modifications...

Pb: la fonction qui contruit la liste renvoie le nombre de mots clé traités.
Or, quel que soit le nombre de mots clé, la valeur vue par la fonction
appelante est toujours 0! Je suis un peu sous l'eau, donc je dois rater
quelque chose de basique ! Le fait de travailler sur plusieurs feuilles
peut-il provoquer ce genre d'erreur ?

Exemple de code sur demande...

Merci d'avance pour toute aide !

--
Jean-Luc, Auriol, FRANCE

4 réponses

Avatar
LE TROLL
Bonjour,

Faudrait voir tes 2 fonctions, l'appelante et
l'appelée ???

Mais, plus simple, les procédures avec une
variable globale:

'_point d'entrée
dim nbMots as long

sub procedure_principale()
nbMots=0
call procedure_compte_envoie_mots()
msgbox nbMots
end sub

sub procedure_compte_envoie_mots()
dim i as long
for i = 1 to x step y
... envoie les mots...
nbMots = nbMots + 1
next i
end sub
----

Un exemple sur les fonction (plus compliqué)

Function appelant(nombre As Long)
nombre = 0
Call appele(nombre)
MsgBox nombre
End Function

Function appele(nombre As Long)
Dim i As Long
For i = 1 To 10 Step 1
nombre = nombre + 1
Next i
End Function

Mais, en VB, on n'a pas besoin d'utiliser les
fonctions, le basic ne les utilise pas, le VB les
accepte pour ne pas dépayser ceux qui viennent du
C, ou qui ont un apprentissage mathématique de la
programmation... la procédure suffit, d'autant
que... la fonction bouffe moins de variable, mais
plus de code, et la procédure, plus de variable et
moins de code, alors bof, comme tout ça va en
mémoire, on ne gagne rien, à part compliquer les
choses avec la structure des fonctions...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-Luc GARNIER"
<jean-luc.garnier(at)gemalto.com> a écrit dans le
message de news:

| Bonjour,
|
| Je viens de coder une fonction qui lit une liste
de mots clé dans une
| cellule (Feuille1) et les remplace par des
valeurs issues de différentes
| cellules (Feuille2), pour alimenter un tableau
en mémoire. But de
| l'opération: envoyer par mail une synthèse des
modifications...
|
| Pb: la fonction qui contruit la liste renvoie le
nombre de mots clé traités.
| Or, quel que soit le nombre de mots clé, la
valeur vue par la fonction
| appelante est toujours 0! Je suis un peu sous
l'eau, donc je dois rater
| quelque chose de basique ! Le fait de travailler
sur plusieurs feuilles
| peut-il provoquer ce genre d'erreur ?
|
| Exemple de code sur demande...
|
| Merci d'avance pour toute aide !
|
| --
| Jean-Luc, Auriol, FRANCE
Avatar
LE TROLL
Tiens, une autre possibilité, j'avais oublié,
utiliser la fonction sous forme de variable,
bof...

Function un()
Call fonction2
MsgBox fonction2
End Function

Function fonction2() As Long
Dim i As Long
fonction2 = 0
For i = 1 To 9 Step 1
fonction2 = fonction2 + i
Next i
End Function

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-Luc GARNIER"
<jean-luc.garnier(at)gemalto.com> a écrit dans le
message de news:

| Bonjour,
|
| Je viens de coder une fonction qui lit une liste
de mots clé dans une
| cellule (Feuille1) et les remplace par des
valeurs issues de différentes
| cellules (Feuille2), pour alimenter un tableau
en mémoire. But de
| l'opération: envoyer par mail une synthèse des
modifications...
|
| Pb: la fonction qui contruit la liste renvoie le
nombre de mots clé traités.
| Or, quel que soit le nombre de mots clé, la
valeur vue par la fonction
| appelante est toujours 0! Je suis un peu sous
l'eau, donc je dois rater
| quelque chose de basique ! Le fait de travailler
sur plusieurs feuilles
| peut-il provoquer ce genre d'erreur ?
|
| Exemple de code sur demande...
|
| Merci d'avance pour toute aide !
|
| --
| Jean-Luc, Auriol, FRANCE
Avatar
Jean-Luc GARNIER
Merci !

A vrai dire, plusieurs 'save' suivis de 'open', sans rien d'autre et tout
s'est remis à marcher... Le coup classique !

--
Jean-Luc, Auriol, FRANCE


"LE TROLL" wrote:

Bonjour,

Faudrait voir tes 2 fonctions, l'appelante et
l'appelée ???

Mais, plus simple, les procédures avec une
variable globale:

'_point d'entrée
dim nbMots as long

sub procedure_principale()
nbMots=0
call procedure_compte_envoie_mots()
msgbox nbMots
end sub

sub procedure_compte_envoie_mots()
dim i as long
for i = 1 to x step y
... envoie les mots...
nbMots = nbMots + 1
next i
end sub
----

Un exemple sur les fonction (plus compliqué)

Function appelant(nombre As Long)
nombre = 0
Call appele(nombre)
MsgBox nombre
End Function

Function appele(nombre As Long)
Dim i As Long
For i = 1 To 10 Step 1
nombre = nombre + 1
Next i
End Function

Mais, en VB, on n'a pas besoin d'utiliser les
fonctions, le basic ne les utilise pas, le VB les
accepte pour ne pas dépayser ceux qui viennent du
C, ou qui ont un apprentissage mathématique de la
programmation... la procédure suffit, d'autant
que... la fonction bouffe moins de variable, mais
plus de code, et la procédure, plus de variable et
moins de code, alors bof, comme tout ça va en
mémoire, on ne gagne rien, à part compliquer les
choses avec la structure des fonctions...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-Luc GARNIER"
<jean-luc.garnier(at)gemalto.com> a écrit dans le
message de news:

| Bonjour,
|
| Je viens de coder une fonction qui lit une liste
de mots clé dans une
| cellule (Feuille1) et les remplace par des
valeurs issues de différentes
| cellules (Feuille2), pour alimenter un tableau
en mémoire. But de
| l'opération: envoyer par mail une synthèse des
modifications...
|
| Pb: la fonction qui contruit la liste renvoie le
nombre de mots clé traités.
| Or, quel que soit le nombre de mots clé, la
valeur vue par la fonction
| appelante est toujours 0! Je suis un peu sous
l'eau, donc je dois rater
| quelque chose de basique ! Le fait de travailler
sur plusieurs feuilles
| peut-il provoquer ce genre d'erreur ?
|
| Exemple de code sur demande...
|
| Merci d'avance pour toute aide !
|
| --
| Jean-Luc, Auriol, FRANCE





Avatar
LE TROLL
Ah ben, tant mieux: "la solution était
ailleurs"... X files :o)

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-Luc GARNIER"
<jean-luc.garnier(at)gemalto.com> a écrit dans le
message de news:

| Merci !
|
| A vrai dire, plusieurs 'save' suivis de 'open',
sans rien d'autre et tout
| s'est remis à marcher... Le coup classique !
|
| --
| Jean-Luc, Auriol, FRANCE
|
|
| "LE TROLL" wrote:
|
| > Bonjour,
| >
| > Faudrait voir tes 2 fonctions, l'appelante
et
| > l'appelée ???
| >
| > Mais, plus simple, les procédures avec une
| > variable globale:
| >
| > '_point d'entrée
| > dim nbMots as long
| >
| > sub procedure_principale()
| > nbMots=0
| > call procedure_compte_envoie_mots()
| > msgbox nbMots
| > end sub
| >
| > sub procedure_compte_envoie_mots()
| > dim i as long
| > for i = 1 to x step y
| > ... envoie les mots...
| > nbMots = nbMots + 1
| > next i
| > end sub
| > ----
| >
| > Un exemple sur les fonction (plus compliqué)
| >
| > Function appelant(nombre As Long)
| > nombre = 0
| > Call appele(nombre)
| > MsgBox nombre
| > End Function
| >
| > Function appele(nombre As Long)
| > Dim i As Long
| > For i = 1 To 10 Step 1
| > nombre = nombre + 1
| > Next i
| > End Function
| >
| > Mais, en VB, on n'a pas besoin d'utiliser les
| > fonctions, le basic ne les utilise pas, le VB
les
| > accepte pour ne pas dépayser ceux qui viennent
du
| > C, ou qui ont un apprentissage mathématique de
la
| > programmation... la procédure suffit, d'autant
| > que... la fonction bouffe moins de variable,
mais
| > plus de code, et la procédure, plus de
variable et
| > moins de code, alors bof, comme tout ça va en
| > mémoire, on ne gagne rien, à part compliquer
les
| > choses avec la structure des fonctions...
| >
| > --
| > Romans, logiciels, email, site personnel
| > http://irolog.free.fr/joe.htm" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr/joe.htm
|
------------------------------------------------------------------------------------
| > "Jean-Luc GARNIER"

| > <jean-luc.garnier(at)gemalto.com> a écrit dans
le
| > message de news:
| >

| > | Bonjour,
| > |
| > | Je viens de coder une fonction qui lit une
liste
| > de mots clé dans une
| > | cellule (Feuille1) et les remplace par des
| > valeurs issues de différentes
| > | cellules (Feuille2), pour alimenter un
tableau
| > en mémoire. But de
| > | l'opération: envoyer par mail une synthèse
des
| > modifications...
| > |
| > | Pb: la fonction qui contruit la liste
renvoie le
| > nombre de mots clé traités.
| > | Or, quel que soit le nombre de mots clé, la
| > valeur vue par la fonction
| > | appelante est toujours 0! Je suis un peu
sous
| > l'eau, donc je dois rater
| > | quelque chose de basique ! Le fait de
travailler
| > sur plusieurs feuilles
| > | peut-il provoquer ce genre d'erreur ?
| > |
| > | Exemple de code sur demande...
| > |
| > | Merci d'avance pour toute aide !
| > |
| > | --
| > | Jean-Luc, Auriol, FRANCE
| >
| >
| >