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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LE TROLL
Le #5238401
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"
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
LE TROLL
Le #5238391
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"
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
Jean-Luc GARNIER
Le #5238381
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"
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





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

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-Luc GARNIER"
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
|
------------------------------------------------------------------------------------
| > "Jean-Luc GARNIER"

| > 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
| >
| >
| >

Publicité
Poster une réponse
Anonyme