Fonction qui renvoie un tableau multidimension

Résolu
marco62118 - 20 oct. 2013 à 17:07
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 21 oct. 2013 à 19:10
bonsoir à toutes et tous

est il possible de faire une fonction qui renvoie un tableau multidimension
Function DoublonsColonnes()  (1 To 9, 1 To 9, 1 To 2) As Integer

Dim ind As Integer, col As Integer, lig As Integer

    For ind = 1 To 9 
        For col = 1 To 9 
            For lig = 1 To 9 
                            DoublonIndColonne(ind, col, 1) = lig
                              DoublonIndColonne(ind, col, 2) = lig                      
                Next lig
        Next col
    Next ind

End Function


bien sur cette écriture ne fonctionne pas

merci d'avance pour votre aide

8 réponses

jordane45 Messages postés 36942 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 février 2023 341
20 oct. 2013 à 17:37
Bonjour;

Peux-tu dans un premier temps (histoire que l'on en soit bien sur) nous indiquer dans quelle déclinaison de VB tu travailles (VB6,VBA,VBScript,VB.NET) ??

Ensuite, je ne me souviens pas avoir déjà vu que l'on pouvait passer comme argument à une fonction des choses du genre "1 to 9" ... je pense que tu as déjà un souci à cet endroit....

Enfin, peux-tu nous expliquer exactement ce que tu souhaites faire... nous fournir un code qui ne fonctionne pas et nous demander ... je veux faire ça mais comment ... ça ne nous aide pas spécialement à comprendre;.....
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
Modifié par ucfoutu le 20/10/2013 à 21:21
Bonjour, jordane45,
Ta question est d'autant plus justifiée que marco62118 ba ouvert une autre discussion à la rubrique ... VB6 d'un autre site.
0
bonjour

je fais mon programme actuellement en VBA ( sur excel) , mais je crois que le problème est plus général même en VB. Je n'ai pas trouvé de réponse à la question précise

Ce n'est pas une faute que d'ouvrir cette même discussion sur un autre site! Il me semble qu'il y a plus dans deux têtes que dans une!

Si je donnais un code qui fonctionne je n'aurais plus à poser cette question!
Je ne veux pas passer à une fonction un tableau mais que cette fonction me renvoie un tableau mais multi-dimmension!
renvoyer un tableau simple je sais l'écrire mais un tableau multi-dimenssion est ce possible et si oui quel en est la syntaxe

je ne sais pas si je suis bien clair.

Je vous remercie pour votre intérêt
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
Modifié par ucfoutu le 21/10/2013 à 14:42
"je fais mon programme actuellement en VBA ( sur excel)"
Et tu es içi dans la section ... VB.Net !!!
" je crois que le problème est plus général même en VB"
VB.Net n'est pas VBA !*
Je déplace ta discussion dans la section adéquate (VBA) . Prends dorénavant soin d'ouvrir tes discussions VBA là où il convient.... C'est un minimum à observer, si tu veux de l'aide.

PS : je viens de voir que tu as eu ta réponse "ailleurs"... et qu'elle y est exacte ...
Bonne chance.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
jordane45 Messages postés 36942 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 février 2023 341
21 oct. 2013 à 15:36
Bonjour,

Pour ce qui est de la manipulation des tableaux, je t'invite à regarder ce très bon tuto :
http://silkyroad.developpez.com/vba/tableaux/



0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bonjour

merci à tous
j'ai trouvé, enfin je viens de comprendre mon erreur! en regardant correctement l'exemple

sub TabMultidim ()
dim multidim() as integer 'il ne faut pas donner de dimension

'appel de la fonction
multidim= fonctTabMultiTab

end sub

function fonctTabMultiTab() As integer() 'renvoie un tableau d'entier dont la dimension sera définie dans la fonction

dim i as integer, j as integer, z as integer
dim multiDimension(1 to 9, 1 to 9, 1 to 2) as integer 'ici est donné la dimension du tableau

for i = 1 to 9
for j=1 to 9
for z= 1 to 2
multiDim(i,j,z)=z
next z
next j
next i

fonctTabMultiTab=multiDimension ' sans parenthèse
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
21 oct. 2013 à 19:06
Ta fonction est quelque peu "pauvre".
Une fonction n'a d'intérêt que si on lui passe des paramètres et qu'elle retourne une variable (qui peut être un tableau dynamique) en fonction de ces paramètres.
Celle que tu as écrite là est figée et ne peut donc servir qu'une seule fois. Pourquoi l'écrire, dans ce cas, alors qu'il suffirait d'en reprendre le code dans le module qui l'appelle ? !
0
Oui je sais mais j'ai écrit simplement pour que l'exemple soit simple à lire qui réponds à ma question de départ.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
21 oct. 2013 à 19:10
Allez ... Regarde ce que ferait ceci (exemple) :
Private Sub CommandButton1_Click()
Dim x As Integer, y As Integer, z As Integer
x = 3: y = 2: z = 2
tptp = ftab(x, y, z)
'tout ce qui suit n'est là que pour preuve
For i = 1 To 3
For j = 1 To 2
For k = 1 To 2
MsgBox tptp(i, j, k)
Next
Next
Next
End Sub

Private Function ftab(a As Integer, b As Integer, c As Integer) As String()
ReDim houla(1 To a, 1 To b, 1 To c) As String
For i = 1 To a
For j = 1 To b
For k = 1 To c
houla(i, j, k) = "a" & i & " b" & j & " c" & k
Next
Next
Next
ftab = houla
End Function

tu devrais comprendre.
0
Rejoignez-nous