OVH Cloud OVH Cloud

encore function et tableau

11 réponses
Avatar
Sergio
bonjour à tous

malgré les réponses interressantes que j'ai pu recevoir,
j'en suis toujours avec mes "function" et tableaux.

soit un tableau à 2 dimensions et une fonction
qui devrait renvoyer ces valeurs.

avec l'exemple que j'ai trouvé sur le net:
(exemple ci-dessous)
je me pose plusieurs questions.

1) le tableau peut-il être défini et rempli
à l'exterieur de la function et appelé ensuite (et comment)?

2) le tableau peut-il avoir 2 dimensions ?

3) ne devrai-je pas abandonner access et reprendre
mes bonnes vieilles fiches papier ?

voila la fonction exemple qui renvoie un tableau:
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Public Function RGBparTableau(ByVal couleur As Long) As Long()

Dim MonTab(0 To 2) As Long
MonTab(2) = Int(couleur / 65536)
MonTab(1) = Int((couleur - (65536 * MonTab(2))) / 256)
MonTab(0) = couleur - ((MonTab(2) * 65536) + (MonTab(1) * 256))
RGBparTableau = MonTab

End Function
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Un débutant qui ne comprends pas toujours tout,

A+
Sergio.

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

je vais essayer de t'expliquer sur un exemple simple que tu appliqueras
ensuite dans ta base.
tu crées un bouton Commande0 sur un formulaire et tu places ce code sur
l'événement click.
Private Sub Commande0_Click()
Dim Tableau(10)
Tableau(0) = 0
Tableau(1) = 1
Tableau(2) = 2
Tableau(3) = 3
Tableau(4) = 4
Passage Tableau
MsgBox "retour fonction: " & Tableau(1) & ";" & Tableau(2)
End Sub

Private Function Passage(Tableau)
MsgBox "dans fonction: " & Tableau(1) & ";" & Tableau(2)
Tableau(0) = 5
Tableau(1) = 6
Tableau(2) = 7
Tableau(3) = 8
Tableau(4) = 9
MsgBox "dans fonction: " & Tableau(1) & ";" & Tableau(2)
End Function

tu cliques sur le bouton et ce qui se passe:
1- affichage de "dans fonction: 1;2"
2- affichage de "dans fonction: 6;7"
3- affichage de "retour fonction: 6;7"

le passage d'un paramètre à une fonction se fait par ByRef par défaut (cas
ci-dessus) donc tout appel au tableau même s'il a été déclaré dans commande0
est accessible par la fonction passage car il est passé par référence et non
par valeur. c'est la façon la plus simple pour retrouver ses petits.




--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:
Avatar
Sergio
bonjour
j'ai éssayé et ça fonctionne bien
mais la fonction n'a pas pris la valeur du tableau,
seul le tableau a été modifié.

mais j'aimerais pouvoir utiliser la fonction une fois qu'elle aurait
pris la valeur du tableau; par exemple : = passage(1)
(et ceci dans un état pour etre plus précis).
actuellement, si j'éssaie de faire : passage(1) = tableau(1)
ça ne marche pas.

A+
Sergio

"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

je vais essayer de t'expliquer sur un exemple simple que tu appliqueras
ensuite dans ta base.
tu crées un bouton Commande0 sur un formulaire et tu places ce code sur
l'événement click.
Private Sub Commande0_Click()
Dim Tableau(10)
Tableau(0) = 0
Tableau(1) = 1
Tableau(2) = 2
Tableau(3) = 3
Tableau(4) = 4
Passage Tableau
MsgBox "retour fonction: " & Tableau(1) & ";" & Tableau(2)
End Sub

Private Function Passage(Tableau)
MsgBox "dans fonction: " & Tableau(1) & ";" & Tableau(2)
Tableau(0) = 5
Tableau(1) = 6
Tableau(2) = 7
Tableau(3) = 8
Tableau(4) = 9
MsgBox "dans fonction: " & Tableau(1) & ";" & Tableau(2)
End Function

tu cliques sur le bouton et ce qui se passe:
1- affichage de "dans fonction: 1;2"
2- affichage de "dans fonction: 6;7"
3- affichage de "retour fonction: 6;7"

le passage d'un paramètre à une fonction se fait par ByRef par défaut (cas
ci-dessus) donc tout appel au tableau même s'il a été déclaré dans
commande0

est accessible par la fonction passage car il est passé par référence et
non

par valeur. c'est la façon la plus simple pour retrouver ses petits.




--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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




Avatar
Raymond [mvp]
ce que tu as fait là ne peut pas marcher.
Il faut savoir si tu veux passer le tableau ou des valeurs du tableau ou si
tu veux récupérer des valeurs seulement. dans un état, sauf en vba, tu ne
peux pas récupérer un tableau. tu veux faire quoi exactement dans ton état ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:%
bonjour
j'ai éssayé et ça fonctionne bien
mais la fonction n'a pas pris la valeur du tableau,
seul le tableau a été modifié.

mais j'aimerais pouvoir utiliser la fonction une fois qu'elle aurait
pris la valeur du tableau; par exemple : = passage(1)
(et ceci dans un état pour etre plus précis).
actuellement, si j'éssaie de faire : passage(1) = tableau(1)
ça ne marche pas.

A+
Sergio


Avatar
Sergio
voila
j'ai plein de champs dans une requete
chaque champ peut prendre plusieurs valeurs
et à la fin de l'année, j'aimerais faire des stats
et les envoyer dans un état (mais pas forcément directement)
tel que:
pour champ1 :
nombre de valeur1 = tant
nombre de valeur2 =tant
-----
etc..
j'ai tous les résultas dans des tableaux à 2 dimensions
et c'est la que les ennuis commencent
mais si je peux transferer les tableaux dans des tables,
comme le suggérait J-Pierre, pourquoi pas mais ça à
l'air compliqué pour moi.

j'espère être assez clair.

A+
Sergio

"Raymond [mvp]" a écrit dans le message de
news:
ce que tu as fait là ne peut pas marcher.
Il faut savoir si tu veux passer le tableau ou des valeurs du tableau ou
si

tu veux récupérer des valeurs seulement. dans un état, sauf en vba, tu ne
peux pas récupérer un tableau. tu veux faire quoi exactement dans ton état
?


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:%
bonjour
j'ai éssayé et ça fonctionne bien
mais la fonction n'a pas pris la valeur du tableau,
seul le tableau a été modifié.

mais j'aimerais pouvoir utiliser la fonction une fois qu'elle aurait
pris la valeur du tableau; par exemple : = passage(1)
(et ceci dans un état pour etre plus précis).
actuellement, si j'éssaie de faire : passage(1) = tableau(1)
ça ne marche pas.

A+
Sergio






Avatar
Raymond [mvp]
Ton tableau n'existe pas pendant toute l'année ? les valeurs que tu traites
dans ta requête proviennent bien d'une table ? pourquoi la requête ou la
table ne sont pas directement explotables dans ton état ? on dirait que tu
ne fais que compter le nombre d'occurences ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:
voila
j'ai plein de champs dans une requete
chaque champ peut prendre plusieurs valeurs
et à la fin de l'année, j'aimerais faire des stats
et les envoyer dans un état (mais pas forcément directement)
tel que:
pour champ1 :
nombre de valeur1 = tant
nombre de valeur2 =tant
-----
etc..
j'ai tous les résultas dans des tableaux à 2 dimensions
et c'est la que les ennuis commencent
mais si je peux transferer les tableaux dans des tables,
comme le suggérait J-Pierre, pourquoi pas mais ça à
l'air compliqué pour moi.

j'espère être assez clair.


Avatar
Sergio
toute les valeurs sont inscrites dans une table en permanence
et ces données peuvent être sortie dans une requête
de telle date à telle date

seules les nombre de valeurs identiques sont comptées par
mes procédures pour certaines périodes (année par exemple)

mais je n'ai rien trouvé dans la création d'état qui me fasse des
statistiques
directement (comptages des x valeurs pour y champs).
pour sortir le nombre de chaque valeur pour chaque champ

mais si ça existe ça m'arrangerait bien !

A+
Sergio

"Raymond [mvp]" a écrit dans le message de
news:
Ton tableau n'existe pas pendant toute l'année ? les valeurs que tu
traites

dans ta requête proviennent bien d'une table ? pourquoi la requête ou la
table ne sont pas directement explotables dans ton état ? on dirait que tu
ne fais que compter le nombre d'occurences ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:
voila
j'ai plein de champs dans une requete
chaque champ peut prendre plusieurs valeurs
et à la fin de l'année, j'aimerais faire des stats
et les envoyer dans un état (mais pas forcément directement)
tel que:
pour champ1 :
nombre de valeur1 = tant
nombre de valeur2 =tant
-----
etc..
j'ai tous les résultas dans des tableaux à 2 dimensions
et c'est la que les ennuis commencent
mais si je peux transferer les tableaux dans des tables,
comme le suggérait J-Pierre, pourquoi pas mais ça à
l'air compliqué pour moi.

j'espère être assez clair.






Avatar
Raymond [mvp]
As-tu essayer par une requête regroupement ? complétée éventuellement par un
Dcount ou un Dsum ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:
toute les valeurs sont inscrites dans une table en permanence
et ces données peuvent être sortie dans une requête
de telle date à telle date

seules les nombre de valeurs identiques sont comptées par
mes procédures pour certaines périodes (année par exemple)

mais je n'ai rien trouvé dans la création d'état qui me fasse des
statistiques
directement (comptages des x valeurs pour y champs).
pour sortir le nombre de chaque valeur pour chaque champ

mais si ça existe ça m'arrangerait bien !

A+
Sergio


Avatar
Sergio
je crois bien avoir essayé au début mais es ce qu"il me faut une requête
pourchaque valeur de chaque champ ?.
je ne vois pas très bien comment faire tout ça.

ni comment en une seule requête, je peux sortir toutes les
Dcount de chaque champ.

ni comment d'un état je peux afficher tout ça

A+
Sergio


"Raymond [mvp]" a écrit dans le message de
news: OawW#
As-tu essayer par une requête regroupement ? complétée éventuellement par
un

Dcount ou un Dsum ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:
toute les valeurs sont inscrites dans une table en permanence
et ces données peuvent être sortie dans une requête
de telle date à telle date

seules les nombre de valeurs identiques sont comptées par
mes procédures pour certaines périodes (année par exemple)

mais je n'ai rien trouvé dans la création d'état qui me fasse des
statistiques
directement (comptages des x valeurs pour y champs).
pour sortir le nombre de chaque valeur pour chaque champ

mais si ça existe ça m'arrangerait bien !

A+
Sergio






Avatar
Raymond [mvp]
dans une requête regroupement sur la date et les différents autres codes sur
lesquels tu peux grouper, tu peux mettre tous les champ avec l'opération
compter ou somme etc... tous tes champs à compter sont bien sur la même
période, ils ont bien tous le même critère de sélection des enregistrements
? donc tu peux faire un regroupement.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:
je crois bien avoir essayé au début mais es ce qu"il me faut une requête
pourchaque valeur de chaque champ ?.
je ne vois pas très bien comment faire tout ça.

ni comment en une seule requête, je peux sortir toutes les
Dcount de chaque champ.

ni comment d'un état je peux afficher tout ça



Avatar
Sergio
j'ai éssayé ça mais ça me compte le nombre de champs correspondant
à la période mais pas le nombre de valeur1,valeur2 que les champs peuvent
prendre.

j'ai mis "regroupement" sur la date et "compte" sur les champs à compter....

A+
Sergio

"Raymond [mvp]" a écrit dans le message de
news: e$V7zV$
dans une requête regroupement sur la date et les différents autres codes
sur

lesquels tu peux grouper, tu peux mettre tous les champ avec l'opération
compter ou somme etc... tous tes champs à compter sont bien sur la même
période, ils ont bien tous le même critère de sélection des
enregistrements

? donc tu peux faire un regroupement.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sergio" a écrit dans le message de
news:
je crois bien avoir essayé au début mais es ce qu"il me faut une requête
pourchaque valeur de chaque champ ?.
je ne vois pas très bien comment faire tout ça.

ni comment en une seule requête, je peux sortir toutes les
Dcount de chaque champ.

ni comment d'un état je peux afficher tout ça







1 2