Réinitialiser une variable static / pb de portée

Le
leoxnet
Bonjour,

Je cherche à réinitialiser une variable static dans une procÃ=
©dure XX,
en sachant que cette variable n’est pas utilisée dans la proc=
édure xx,
mais dans une autre fonction inconnue de XX).

Ci-joint mon problème

Afin de faire une analyse abc (pareto), je dois calculer la valeur
cumulée d’un champ ( valeur cumulée n = valeur n + val=
eur cumulée
n-1).

J’ai donc écrit une petite fonction vba en utilisant une varia=
ble
static

Public Function cumul_ventes(ventes) As Long
Static cum_ventes
‘cum_ventes : valeur cumulée
‘ ventes : valeur que je vais additionner à cum_ventes pour ca=
lculer
ma nouvelle valeur cumulée
If IsNull(cum_ventes) Then
cum_ventes = ventes
Else

‘gestion des ventes qui ne sont pas renseignées’
If ventes <> "" Then
cum_ventes = cum_ventes + ventes
Else: cum_ventes = cum_ventes + 0
End If

End If

cumul_ventes = cum_ventes
End Function

J’appelle cette fonction dans une requête mise à jour et =
en avant le
calcul pour le pareto. L’opération fonctionne très bien (=
la fonction
s’exécute donc autant de fois qu’il y’a dâ=
€™enregistrement à mettre à
jour). Sauf que la variable static qui me permet de mémoriser la
valeur cumulée entre 2 appels de fonctions m’empêche de c=
alculer 2
Pareto de manière consécutive sans redémarrer Access.

Or j’ai besoin de calculer mon pareto une cinquantaine de fois avec
des paramètres différents. J’avais prévu d’a=
utomatiser tout ça en vba,
mais je bloque sur la variable static car je n’arrive pas à la
réinitialiser dans une autre procédure (je pense que j’ai=
un «
problème de portée »  ma variable static n’=
est connu que de ma
fonction, quand j’interroge sa valeur dans une autre procédure=
j’ai
une valeur nulle). J’ai un peu tout essayé mais pas moyen, sauf
redémarrer access à chaque coup.


Pour être plus clair, ma procédure finale (pour automatiser les =
50
calculs de ma classe ABC) devait ressembler à ça
Sub automatisation()
‘1) création d’un recordet à partir d’un=
e table paramètre, me
permettant de récupérer mes paramètres pour le calcul des ve=
ntes

…. /…

‘2. je calcul mon fichier ventes en tenant compte des paramètr=
es de
l’étape 1. Ceci se fait à travers plusieurs requêtes=
(extraction d’une
base centrale, création d’une table sur laquelle j’eff=
ectuerais mon
calcul de cumul)

3. Calcul de ma classe abc via la fonction cumul ventes (la fonction
cumul_ventes est appelée par la requête mise à jour, pas par=
le module
automatisation, donc pas de possibilité de transférer la valeur
cumulée).
Stockage du résultat agrégé dans une table résultat
Reinitialiser ma variable static

4. Redémarrer à l’étape 2 avec un autre paramÃ=
¨tre

End sub()



Si vous avez des idées …
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
Pierre CFI [mvp]
Le #6309871
bonjour
si tu déclares un flag boleen en public
dans un sub d'initialisation tu passes ce flag à True et tu appelle ta
fonction
public flag as boleen
sub init
dim x as long
flag = true
x=cumul_ventes(ventes,flag)
end sub

Public Function cumul_ventes(ventes,EtatFlag) As Long

if Etatflag then
'initialise ta var static

evidement quand tu appelles cette function d'ailleurs, le param étatflag est
false


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"leoxnet"
Bonjour,

Je cherche à réinitialiser une variable static dans une procédure XX,
en sachant que cette variable n'est pas utilisée dans la procédure xx,
mais dans une autre fonction inconnue de XX).

Ci-joint mon problème

Afin de faire une analyse abc (pareto), je dois calculer la valeur
cumulée d'un champ ( valeur cumulée n = valeur n + valeur cumulée
n-1).

J'ai donc écrit une petite fonction vba en utilisant une variable
static

Public Function cumul_ventes(ventes) As Long
Static cum_ventes
'cum_ventes : valeur cumulée
' ventes : valeur que je vais additionner à cum_ventes pour calculer
ma nouvelle valeur cumulée
If IsNull(cum_ventes) Then
cum_ventes = ventes
Else

'gestion des ventes qui ne sont pas renseignées'
If ventes <> "" Then
cum_ventes = cum_ventes + ventes
Else: cum_ventes = cum_ventes + 0
End If

End If

cumul_ventes = cum_ventes
End Function

J'appelle cette fonction dans une requête mise à jour et en avant le
calcul pour le pareto. L'opération fonctionne très bien (la fonction
s'exécute donc autant de fois qu'il y'a d'enregistrement à mettre à
jour). Sauf que la variable static qui me permet de mémoriser la
valeur cumulée entre 2 appels de fonctions m'empêche de calculer 2
Pareto de manière consécutive sans redémarrer Access.

Or j'ai besoin de calculer mon pareto une cinquantaine de fois avec
des paramètres différents. J'avais prévu d'automatiser tout ça en vba,
mais je bloque sur la variable static car je n'arrive pas à la
réinitialiser dans une autre procédure (je pense que j'ai un «
problème de portée » ? ma variable static n'est connu que de ma
fonction, quand j'interroge sa valeur dans une autre procédure j'ai
une valeur nulle). J'ai un peu tout essayé mais pas moyen, sauf
redémarrer access à chaque coup.


Pour être plus clair, ma procédure finale (pour automatiser les 50
calculs de ma classe ABC) devait ressembler à ça
Sub automatisation()
'1) création d'un recordet à partir d'une table paramètre, me
permettant de récupérer mes paramètres pour le calcul des ventes

.. /.

'2. je calcul mon fichier ventes en tenant compte des paramètres de
l'étape 1. Ceci se fait à travers plusieurs requêtes (extraction d'une
base centrale, création d'une table sur laquelle j'effectuerais mon
calcul de cumul)

3. Calcul de ma classe abc via la fonction cumul ventes (la fonction
cumul_ventes est appelée par la requête mise à jour, pas par le module
automatisation, donc pas de possibilité de transférer la valeur
cumulée).
Stockage du résultat agrégé dans une table résultat
Reinitialiser ma variable static

4. Redémarrer à l'étape 2 avec un autre paramètre

End sub()



Si vous avez des idées .
Jessy Sempere
Le #6309811
J'aime beaucoup le "boleen", biensûr on a tous noté que c'était : Boolean ;-))

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



bonjour
si tu déclares un flag boleen en public
dans un sub d'initialisation tu passes ce flag à True et tu appelle ta
fonction
public flag as boleen
sub init
dim x as long
flag = true
x=cumul_ventes(ventes,flag)
end sub

Public Function cumul_ventes(ventes,EtatFlag) As Long

if Etatflag then
'initialise ta var static

evidement quand tu appelles cette function d'ailleurs, le param étatflag est
false


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"leoxnet"
Bonjour,

Je cherche à réinitialiser une variable static dans une procédure XX,
en sachant que cette variable n'est pas utilisée dans la procédure xx,
mais dans une autre fonction inconnue de XX).

Ci-joint mon problème

Afin de faire une analyse abc (pareto), je dois calculer la valeur
cumulée d'un champ ( valeur cumulée n = valeur n + valeur cumulée
n-1).

J'ai donc écrit une petite fonction vba en utilisant une variable
static

Public Function cumul_ventes(ventes) As Long
Static cum_ventes
'cum_ventes : valeur cumulée
' ventes : valeur que je vais additionner à cum_ventes pour calculer
ma nouvelle valeur cumulée
If IsNull(cum_ventes) Then
cum_ventes = ventes
Else

'gestion des ventes qui ne sont pas renseignées'
If ventes <> "" Then
cum_ventes = cum_ventes + ventes
Else: cum_ventes = cum_ventes + 0
End If

End If

cumul_ventes = cum_ventes
End Function

J'appelle cette fonction dans une requête mise à jour et en avant le
calcul pour le pareto. L'opération fonctionne très bien (la fonction
s'exécute donc autant de fois qu'il y'a d'enregistrement à mettre à
jour). Sauf que la variable static qui me permet de mémoriser la
valeur cumulée entre 2 appels de fonctions m'empêche de calculer 2
Pareto de manière consécutive sans redémarrer Access.

Or j'ai besoin de calculer mon pareto une cinquantaine de fois avec
des paramètres différents. J'avais prévu d'automatiser tout ça en vba,
mais je bloque sur la variable static car je n'arrive pas à la
réinitialiser dans une autre procédure (je pense que j'ai un «
problème de portée » ? ma variable static n'est connu que de ma
fonction, quand j'interroge sa valeur dans une autre procédure j'ai
une valeur nulle). J'ai un peu tout essayé mais pas moyen, sauf
redémarrer access à chaque coup.


Pour être plus clair, ma procédure finale (pour automatiser les 50
calculs de ma classe ABC) devait ressembler à ça
Sub automatisation()
'1) création d'un recordet à partir d'une table paramètre, me
permettant de récupérer mes paramètres pour le calcul des ventes

... /.

'2. je calcul mon fichier ventes en tenant compte des paramètres de
l'étape 1. Ceci se fait à travers plusieurs requêtes (extraction d'une
base centrale, création d'une table sur laquelle j'effectuerais mon
calcul de cumul)

3. Calcul de ma classe abc via la fonction cumul ventes (la fonction
cumul_ventes est appelée par la requête mise à jour, pas par le module
automatisation, donc pas de possibilité de transférer la valeur
cumulée).
Stockage du résultat agrégé dans une table résultat
Reinitialiser ma variable static

4. Redémarrer à l'étape 2 avec un autre paramètre

End sub()



Si vous avez des idées .





Pierre CFI [mvp]
Le #6309791
au moins 1 qui suit :o)) par contre la puissance du raisonnemnt t'as
complétement echappé

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Jessy Sempere"
J'aime beaucoup le "boleen", biensûr on a tous noté que c'était : Boolean
;-))

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



bonjour
si tu déclares un flag boleen en public
dans un sub d'initialisation tu passes ce flag à True et tu appelle ta
fonction
public flag as boleen
sub init
dim x as long
flag = true
x=cumul_ventes(ventes,flag)
end sub

Public Function cumul_ventes(ventes,EtatFlag) As Long

if Etatflag then
'initialise ta var static

evidement quand tu appelles cette function d'ailleurs, le param étatflag
est
false


--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"leoxnet"
Bonjour,

Je cherche à réinitialiser une variable static dans une procédure XX,
en sachant que cette variable n'est pas utilisée dans la procédure xx,
mais dans une autre fonction inconnue de XX).

Ci-joint mon problème

Afin de faire une analyse abc (pareto), je dois calculer la valeur
cumulée d'un champ ( valeur cumulée n = valeur n + valeur cumulée
n-1).

J'ai donc écrit une petite fonction vba en utilisant une variable
static

Public Function cumul_ventes(ventes) As Long
Static cum_ventes
'cum_ventes : valeur cumulée
' ventes : valeur que je vais additionner à cum_ventes pour calculer
ma nouvelle valeur cumulée
If IsNull(cum_ventes) Then
cum_ventes = ventes
Else

'gestion des ventes qui ne sont pas renseignées'
If ventes <> "" Then
cum_ventes = cum_ventes + ventes
Else: cum_ventes = cum_ventes + 0
End If

End If

cumul_ventes = cum_ventes
End Function

J'appelle cette fonction dans une requête mise à jour et en avant le
calcul pour le pareto. L'opération fonctionne très bien (la fonction
s'exécute donc autant de fois qu'il y'a d'enregistrement à mettre à
jour). Sauf que la variable static qui me permet de mémoriser la
valeur cumulée entre 2 appels de fonctions m'empêche de calculer 2
Pareto de manière consécutive sans redémarrer Access.

Or j'ai besoin de calculer mon pareto une cinquantaine de fois avec
des paramètres différents. J'avais prévu d'automatiser tout ça en vba,
mais je bloque sur la variable static car je n'arrive pas à la
réinitialiser dans une autre procédure (je pense que j'ai un «
problème de portée » ? ma variable static n'est connu que de ma
fonction, quand j'interroge sa valeur dans une autre procédure j'ai
une valeur nulle). J'ai un peu tout essayé mais pas moyen, sauf
redémarrer access à chaque coup.


Pour être plus clair, ma procédure finale (pour automatiser les 50
calculs de ma classe ABC) devait ressembler à ça
Sub automatisation()
'1) création d'un recordet à partir d'une table paramètre, me
permettant de récupérer mes paramètres pour le calcul des ventes

... /.

'2. je calcul mon fichier ventes en tenant compte des paramètres de
l'étape 1. Ceci se fait à travers plusieurs requêtes (extraction d'une
base centrale, création d'une table sur laquelle j'effectuerais mon
calcul de cumul)

3. Calcul de ma classe abc via la fonction cumul ventes (la fonction
cumul_ventes est appelée par la requête mise à jour, pas par le module
automatisation, donc pas de possibilité de transférer la valeur
cumulée).
Stockage du résultat agrégé dans une table résultat
Reinitialiser ma variable static

4. Redémarrer à l'étape 2 avec un autre paramètre

End sub()



Si vous avez des idées .







leoxnet
Le #6309741
On 17 août, 11:18, "Pierre CFI [mvp]"
wrote:
au moins 1 qui suit :o)) par contre la puissance du raisonnemnt t'as
complétement echappé

--
Pierre
MVP Access
***************************************
Conseils MPFA:http://www.mpfa.info/
*********************************************************
"Jessy Sempere"



J'aime beaucoup le "boleen", biensûr on a tous noté que c'était : Boolean
;-))

@+
Jessy Sempere
------------------------------------
Site @ccess :http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



bonjour
si tu déclares un flag boleen en public
dans un sub d'initialisation tu passes ce flag à True et tu appelle ta
fonction
public flag as boleen
sub init
dim x as long
flag = true
x=cumul_ventes(ventes,flag)
end sub

Public Function cumul_ventes(ventes,EtatFlag) As Long

if Etatflag then
'initialise ta var static

evidement quand tu appelles cette function d'ailleurs, le param état flag
est
false

--
Pierre
MVP Access
***************************************
Conseils MPFA:http://www.mpfa.info/
*********************************************************
"leoxnet"
Bonjour,

Je cherche à réinitialiser une variable static dans une procédur e XX,
en sachant que cette variable n'est pas utilisée dans la procédure xx,
mais dans une autre fonction inconnue de XX).

Ci-joint mon problème

Afin de faire une analyse abc (pareto), je dois calculer la valeur
cumulée d'un champ ( valeur cumulée n = valeur n + valeur cumul ée
n-1).

J'ai donc écrit une petite fonction vba en utilisant une variable
static

Public Function cumul_ventes(ventes) As Long
Static cum_ventes
'cum_ventes : valeur cumulée
' ventes : valeur que je vais additionner à cum_ventes pour calculer
ma nouvelle valeur cumulée
If IsNull(cum_ventes) Then
cum_ventes = ventes
Else

'gestion des ventes qui ne sont pas renseignées'
If ventes <> "" Then
cum_ventes = cum_ventes + ventes
Else: cum_ventes = cum_ventes + 0
End If

End If

cumul_ventes = cum_ventes
End Function

J'appelle cette fonction dans une requête mise à jour et en avant le
calcul pour le pareto. L'opération fonctionne très bien (la foncti on
s'exécute donc autant de fois qu'il y'a d'enregistrement à mettre à
jour). Sauf que la variable static qui me permet de mémoriser la
valeur cumulée entre 2 appels de fonctions m'empêche de calculer 2
Pareto de manière consécutive sans redémarrer Access.

Or j'ai besoin de calculer mon pareto une cinquantaine de fois avec
des paramètres différents. J'avais prévu d'automatiser tout ça en vba,
mais je bloque sur la variable static car je n'arrive pas à la
réinitialiser dans une autre procédure (je pense que j'ai un «
problème de portée » ? ma variable static n'est connu que de ma
fonction, quand j'interroge sa valeur dans une autre procédure j'ai
une valeur nulle). J'ai un peu tout essayé mais pas moyen, sauf
redémarrer access à chaque coup.

Pour être plus clair, ma procédure finale (pour automatiser les 50
calculs de ma classe ABC) devait ressembler à ça
Sub automatisation()
'1) création d'un recordet à partir d'une table paramètre, me
permettant de récupérer mes paramètres pour le calcul des ventes

... /.

'2. je calcul mon fichier ventes en tenant compte des paramètres de
l'étape 1. Ceci se fait à travers plusieurs requêtes (extraction d'une
base centrale, création d'une table sur laquelle j'effectuerais mon
calcul de cumul)

3. Calcul de ma classe abc via la fonction cumul ventes (la fonction
cumul_ventes est appelée par la requête mise à jour, pas par le module
automatisation, donc pas de possibilité de transférer la valeur
cumulée).
Stockage du résultat agrégé dans une table résultat
Reinitialiser ma variable static

4. Redémarrer à l'étape 2 avec un autre paramètre

End sub()

Si vous avez des idées .- Masquer le texte des messages précéden ts -



- Afficher le texte des messages précédents -


Bonjour,


Je viens d'essayer et ca marche trés bien.
Comme quoi avoir la tête dans le guidon n'aide pas à trouver des
solutions simples

Merci pour votre aide.



Publicité
Poster une réponse
Anonyme