bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
Benoit Compoint m'a dit:
Comme votre tableau a apparemment deux dimensions, vous devrez créer une
fonction VBA qui admette deux paramètres.
Vous appellerez cette fonction à partir de vos contrôles zones de texte
avec
la syntaxe suivante :
=MaFonction(3;2)
pour obtenir la valeur varyNB(3,2) de votre tableau.
Bonsoir Sergio
Mafonction n'est pas un tableau, tu peux au maximum retourner une valeur:
Mafonction = tableau(x,y)
Mais ça implique que MaFonction connaisse x et y (ou alors, se sont des
variables globales ?):
function MaFonction(x as integer, y as integer) as integer
Mafonction = tableau(x,y)
end function
Mais si c'est ça ton problème, MaFonction ne sert à rien, tu peux mettre
ça directement dans ton code.
MonChamp = tableau(x,y) au lieu de
MonChamp = MaFonction(x,y)
Sans doute ai-je mal compris.
J-Pierre
"Sergio" a écrit dans le message de news:
bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
Benoit Compoint m'a dit:
Comme votre tableau a apparemment deux dimensions, vous devrez créer une
fonction VBA qui admette deux paramètres.
Vous appellerez cette fonction à partir de vos contrôles zones de texte
avec
la syntaxe suivante :
=MaFonction(3;2)
pour obtenir la valeur varyNB(3,2) de votre tableau.
Bonsoir Sergio
Mafonction n'est pas un tableau, tu peux au maximum retourner une valeur:
Mafonction = tableau(x,y)
Mais ça implique que MaFonction connaisse x et y (ou alors, se sont des
variables globales ?):
function MaFonction(x as integer, y as integer) as integer
Mafonction = tableau(x,y)
end function
Mais si c'est ça ton problème, MaFonction ne sert à rien, tu peux mettre
ça directement dans ton code.
MonChamp = tableau(x,y) au lieu de
MonChamp = MaFonction(x,y)
Sans doute ai-je mal compris.
J-Pierre
"Sergio" <marchepas@aol.com> a écrit dans le message de news:
e0RbDyzxDHA.536@tk2msftngp13.phx.gbl...
bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
Benoit Compoint m'a dit:
Comme votre tableau a apparemment deux dimensions, vous devrez créer une
fonction VBA qui admette deux paramètres.
Vous appellerez cette fonction à partir de vos contrôles zones de texte
avec
la syntaxe suivante :
=MaFonction(3;2)
pour obtenir la valeur varyNB(3,2) de votre tableau.
Bonsoir Sergio
Mafonction n'est pas un tableau, tu peux au maximum retourner une valeur:
Mafonction = tableau(x,y)
Mais ça implique que MaFonction connaisse x et y (ou alors, se sont des
variables globales ?):
function MaFonction(x as integer, y as integer) as integer
Mafonction = tableau(x,y)
end function
Mais si c'est ça ton problème, MaFonction ne sert à rien, tu peux mettre
ça directement dans ton code.
MonChamp = tableau(x,y) au lieu de
MonChamp = MaFonction(x,y)
Sans doute ai-je mal compris.
J-Pierre
"Sergio" a écrit dans le message de news:
bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
bonsoir J-Pierre
mon problème initial , c'est que je calcule un tas de variables que je mets
dans
un tableau (plutôt 6 tableaux) de environ (60, 10)
et je voudrais sortir toutes ces valeurs (+ de 3000) dans un état
donc dans l'état, je dois appeler une fonction à chaque valeur
pour remplir une zone de texte... 3000 fonctions = pas question !
il me faut donc une fonction sous forme de tableau.
je ne peux pas appeler directement un tableau car je n'y ai pas accés
dans l'étatBenoit Compoint m'a dit:
Comme votre tableau a apparemment deux dimensions, vous devrez créer une
fonction VBA qui admette deux paramètres.
Vous appellerez cette fonction à partir de vos contrôles zones de texte
avecla syntaxe suivante :
=MaFonction(3;2)
pour obtenir la valeur varyNB(3,2) de votre tableau.
et donc je veux bien le croire
et j'essaie
et j'essaie
et j'essaie
A+
Sergio
"J-Pierre" a écrit dans le message de
news:Bonsoir Sergio
Mafonction n'est pas un tableau, tu peux au maximum retourner une valeur:
Mafonction = tableau(x,y)
Mais ça implique que MaFonction connaisse x et y (ou alors, se sont des
variables globales ?):
function MaFonction(x as integer, y as integer) as integer
Mafonction = tableau(x,y)
end function
Mais si c'est ça ton problème, MaFonction ne sert à rien, tu peux mettre
ça directement dans ton code.MonChamp = tableau(x,y) au lieu de
MonChamp = MaFonction(x,y)
Sans doute ai-je mal compris.
J-Pierre
"Sergio" a écrit dans le message de news:bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
bonsoir J-Pierre
mon problème initial , c'est que je calcule un tas de variables que je mets
dans
un tableau (plutôt 6 tableaux) de environ (60, 10)
et je voudrais sortir toutes ces valeurs (+ de 3000) dans un état
donc dans l'état, je dois appeler une fonction à chaque valeur
pour remplir une zone de texte... 3000 fonctions = pas question !
il me faut donc une fonction sous forme de tableau.
je ne peux pas appeler directement un tableau car je n'y ai pas accés
dans l'état
Benoit Compoint m'a dit:
Comme votre tableau a apparemment deux dimensions, vous devrez créer une
fonction VBA qui admette deux paramètres.
Vous appellerez cette fonction à partir de vos contrôles zones de texte
avec
la syntaxe suivante :
=MaFonction(3;2)
pour obtenir la valeur varyNB(3,2) de votre tableau.
et donc je veux bien le croire
et j'essaie
et j'essaie
et j'essaie
A+
Sergio
"J-Pierre" <pas.de.pub.jpberchtold@hotmail.com> a écrit dans le message de
news:
eHNMfj0xDHA.2544@TK2MSFTNGP10.phx.gbl...
Bonsoir Sergio
Mafonction n'est pas un tableau, tu peux au maximum retourner une valeur:
Mafonction = tableau(x,y)
Mais ça implique que MaFonction connaisse x et y (ou alors, se sont des
variables globales ?):
function MaFonction(x as integer, y as integer) as integer
Mafonction = tableau(x,y)
end function
Mais si c'est ça ton problème, MaFonction ne sert à rien, tu peux mettre
ça directement dans ton code.
MonChamp = tableau(x,y) au lieu de
MonChamp = MaFonction(x,y)
Sans doute ai-je mal compris.
J-Pierre
"Sergio" <marchepas@aol.com> a écrit dans le message de news:
e0RbDyzxDHA.536@tk2msftngp13.phx.gbl...
bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
bonsoir J-Pierre
mon problème initial , c'est que je calcule un tas de variables que je mets
dans
un tableau (plutôt 6 tableaux) de environ (60, 10)
et je voudrais sortir toutes ces valeurs (+ de 3000) dans un état
donc dans l'état, je dois appeler une fonction à chaque valeur
pour remplir une zone de texte... 3000 fonctions = pas question !
il me faut donc une fonction sous forme de tableau.
je ne peux pas appeler directement un tableau car je n'y ai pas accés
dans l'étatBenoit Compoint m'a dit:
Comme votre tableau a apparemment deux dimensions, vous devrez créer une
fonction VBA qui admette deux paramètres.
Vous appellerez cette fonction à partir de vos contrôles zones de texte
avecla syntaxe suivante :
=MaFonction(3;2)
pour obtenir la valeur varyNB(3,2) de votre tableau.
et donc je veux bien le croire
et j'essaie
et j'essaie
et j'essaie
A+
Sergio
"J-Pierre" a écrit dans le message de
news:Bonsoir Sergio
Mafonction n'est pas un tableau, tu peux au maximum retourner une valeur:
Mafonction = tableau(x,y)
Mais ça implique que MaFonction connaisse x et y (ou alors, se sont des
variables globales ?):
function MaFonction(x as integer, y as integer) as integer
Mafonction = tableau(x,y)
end function
Mais si c'est ça ton problème, MaFonction ne sert à rien, tu peux mettre
ça directement dans ton code.MonChamp = tableau(x,y) au lieu de
MonChamp = MaFonction(x,y)
Sans doute ai-je mal compris.
J-Pierre
"Sergio" a écrit dans le message de news:bonsoir a tous
voila mon probleme:
je n'arrive pas à transférer un tableau a 2 dimensions
dans une fonction.
voila ce que je fais(en résumé) dans un module.
je fais:
dim Montableau() as integer
(juste après option explicite).
puis j'ai une procedure qui me remplit
un tableau a 2 dimensions.
redim Montableau(nb1,nb2) as integer
Montableau(x,y) = valeur1 etc..
(le tableau est correctement rempli !)
je fais:
call MaFonction
puis:
'xxxxxxxxxxxxxxxxxxxxxxxxx
function MaFonction() as integer
Mafonction(x,y) = tableau(x,y)
end function
'xxxxxxxxxxxxxxxxxxxxxxxxx
il faut surement mettre quelque chose entre les
parenthèses après "MaFonction" mais j'ai tout éssayé
j'ai eu droit à tous les messages d'erreur existants
alors si quelqu'un peut m'aiguiller !
A+
Sergio
Sergio,
Solution possible:
avant d'ouvrir ton état, enregistrer les valeurs de tous tes tableaux dans
une table. Si on prend l'exemple de ton premier tableau
(60,10), la définition de ta table comprendra 10 champs. La table aura
aussi deux champs, une ID et une date.
L'ID est unique (voir ci-après) , la date est la date de création, comme
ça, quand tu ouvres ta base MDB, tu supprimes toutes les
lignes qui ne sont pas du jour.
Pour créer tes lignes, tu écris une fonction qui itérera sur ton tableau
pour faire un INSERT, si on reprends ton exemple, ta table
comprendra 60 lignes.
Pour obtenir une ID unique, voilà un extrait de fonction qui insère une
ligne dans une table et récupère l'autoNum. La table
comprend 3 champs:
T911_sequence autonum
T911_texte texte
T911_date valeur par défaut date()
----------------------------------------------
Function GetUniqueId(text) As Long
Dim strgSQL As String
Dim WrecordsAffected As Long
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Set cnn = CurrentProject.Connection
strgSQL = "SELECT TOP 1 T911_unique_id.* FROM T911_unique_id;"
rst.Open strgSQL, cnn, adOpenKeyset, adLockOptimistic
rst.AddNew
rst!T911_texte = text
On Error Resume Next
rst.Update
If cnn.Errors.Count > 0 Then
rst.Close
cnn.RollbackTrans
cnn.Close
Set cnn = Nothing
On Error GoTo 0
GetUniqueId = 0
Exit Function
End If
On Error GoTo 0
GetUniqueId = rst!T911_sequence
rst.Close
cnn.Close
Set cnn = Nothing
End Function
----------------------------------------------------
Enfin, si tu deuxième dimension est variable, reviens nous voir en donnant
plus de détails
J-Pierre
Sergio,
Solution possible:
avant d'ouvrir ton état, enregistrer les valeurs de tous tes tableaux dans
une table. Si on prend l'exemple de ton premier tableau
(60,10), la définition de ta table comprendra 10 champs. La table aura
aussi deux champs, une ID et une date.
L'ID est unique (voir ci-après) , la date est la date de création, comme
ça, quand tu ouvres ta base MDB, tu supprimes toutes les
lignes qui ne sont pas du jour.
Pour créer tes lignes, tu écris une fonction qui itérera sur ton tableau
pour faire un INSERT, si on reprends ton exemple, ta table
comprendra 60 lignes.
Pour obtenir une ID unique, voilà un extrait de fonction qui insère une
ligne dans une table et récupère l'autoNum. La table
comprend 3 champs:
T911_sequence autonum
T911_texte texte
T911_date valeur par défaut date()
----------------------------------------------
Function GetUniqueId(text) As Long
Dim strgSQL As String
Dim WrecordsAffected As Long
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Set cnn = CurrentProject.Connection
strgSQL = "SELECT TOP 1 T911_unique_id.* FROM T911_unique_id;"
rst.Open strgSQL, cnn, adOpenKeyset, adLockOptimistic
rst.AddNew
rst!T911_texte = text
On Error Resume Next
rst.Update
If cnn.Errors.Count > 0 Then
rst.Close
cnn.RollbackTrans
cnn.Close
Set cnn = Nothing
On Error GoTo 0
GetUniqueId = 0
Exit Function
End If
On Error GoTo 0
GetUniqueId = rst!T911_sequence
rst.Close
cnn.Close
Set cnn = Nothing
End Function
----------------------------------------------------
Enfin, si tu deuxième dimension est variable, reviens nous voir en donnant
plus de détails
J-Pierre
Sergio,
Solution possible:
avant d'ouvrir ton état, enregistrer les valeurs de tous tes tableaux dans
une table. Si on prend l'exemple de ton premier tableau
(60,10), la définition de ta table comprendra 10 champs. La table aura
aussi deux champs, une ID et une date.
L'ID est unique (voir ci-après) , la date est la date de création, comme
ça, quand tu ouvres ta base MDB, tu supprimes toutes les
lignes qui ne sont pas du jour.
Pour créer tes lignes, tu écris une fonction qui itérera sur ton tableau
pour faire un INSERT, si on reprends ton exemple, ta table
comprendra 60 lignes.
Pour obtenir une ID unique, voilà un extrait de fonction qui insère une
ligne dans une table et récupère l'autoNum. La table
comprend 3 champs:
T911_sequence autonum
T911_texte texte
T911_date valeur par défaut date()
----------------------------------------------
Function GetUniqueId(text) As Long
Dim strgSQL As String
Dim WrecordsAffected As Long
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Set cnn = CurrentProject.Connection
strgSQL = "SELECT TOP 1 T911_unique_id.* FROM T911_unique_id;"
rst.Open strgSQL, cnn, adOpenKeyset, adLockOptimistic
rst.AddNew
rst!T911_texte = text
On Error Resume Next
rst.Update
If cnn.Errors.Count > 0 Then
rst.Close
cnn.RollbackTrans
cnn.Close
Set cnn = Nothing
On Error GoTo 0
GetUniqueId = 0
Exit Function
End If
On Error GoTo 0
GetUniqueId = rst!T911_sequence
rst.Close
cnn.Close
Set cnn = Nothing
End Function
----------------------------------------------------
Enfin, si tu deuxième dimension est variable, reviens nous voir en donnant
plus de détails
J-Pierre