Fonction qui renvoie un tableau multidimension [Résolu]

- 20 oct. 2013 à 17:07 - Dernière réponse :
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
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
Afficher la suite 

Votre réponse

9 réponses

Messages postés
23247
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
16 novembre 2018
- 20 oct. 2013 à 17:37
0
Merci
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;.....
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 20 oct. 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.
Commenter la réponse de jordane45
- 21 oct. 2013 à 13:52
0
Merci
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
Commenter la réponse de marco62118
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 21/10/2013 à 14:42
0
Merci
"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
Commenter la réponse de ucfoutu
Messages postés
23247
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
16 novembre 2018
- 21 oct. 2013 à 15:36
0
Merci
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/



Commenter la réponse de jordane45
- 21 oct. 2013 à 18:13
0
Merci
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
Commenter la réponse de marco62118
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 21 oct. 2013 à 19:06
0
Merci
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 ? !
Commenter la réponse de ucfoutu
- 21 oct. 2013 à 19:09
0
Merci
Oui je sais mais j'ai écrit simplement pour que l'exemple soit simple à lire qui réponds à ma question de départ.
Commenter la réponse de marco62118
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 21 oct. 2013 à 19:10
0
Merci
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.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.