VBA : function "matricielle"

Hervé

XLDnaute Barbatruc
Bonsoir tout le monde

petite question :

ci-dessous, une fonction personnalisée toute bete, qui ne sert que d'exemple.

je cherche à renvoyer une fonction 'matricielle' (je sais meme pas si ca s'appelle comme ca :S )

en effet cette fonction me copie dans un tablo toutes les occurences entre deux chiffres, et je voudrais renvoyer la totalité de ces occurences.

par exemple : =compte(1;5) placé en A1 devrait me renvoyer 1;2;3;4;5 de a1 à A5.

mais ca marche pas.


Public Function compte(min As Byte, max As Byte)
Dim tablo()
Dim i As Byte

ReDim tablo(min To max)

For i = min To max
        tablo(i) = i
Next i

compte = tablo
'c'est là que je sais pas faire
End Function

en espérant etre clair.

merci pour votre futur aide.

salut
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Hervé,

Avec cette version, ça devrait passer :
Function compte(min As Byte, max As Byte)
Dim tablo
Dim I As Byte
      ReDim tablo(min To max, 1 To 1)
      For I = min To max
            tablo(I, 1) = I
      Next I
      compte = tablo
End Function
Dans la feuille :[ol][li] Tu sélectionnes 5 cellules en colonne (ex : A1:A5)[/li]
[li]Tu tapes =compte(1;5)[/li]
[li]Et tu valides par Ctrl + Maj + Entrée (comme pour toute fonction matricielle)[/li][/ol]
Cordialement,
 

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

je me permet de faire remonter ce post.

je suis ennuyé avec le mode de validation (Ctrl + Maj + Entrée) de la fonction.

car dans la fonction que je 'développe', je ne sais pas précisément le nombre d'élément que je vais renvoyer.

en somme à l'aide de l'exemple ci-dessous comment eviter la validation par ctrlmachintruc.


Function compte(min As Byte)
Dim tablo
Dim max As Byte

max = Int(Rnd(2) * 100)

MsgBox max   
'pour controle

Dim I As Byte
           
ReDim tablo(min To max, 1 To 1)
           
For I = min To max
                        tablo(I, 1) = I
           
Next I
            compte = tablo
End Function


d'avance je vous remercie de votre aide.

salut
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Hervé,

J'avoue pour ma part que j'ai du mal à te suivre sur ce coup là Hervé...

J'avais cru comprendre que tu souhaitais créer une fonction personnalisée pour utilisation directe depuis une feuille de calcul, aussi, j'ai du mal à imaginer dans ce cas une fonction qui renverrait un nombre 'aléatoire' d'éléments (sur une plage non définie par l'utilisateur dans ce cas ?).

Ou alors, on sort du domaine de la 'Function' personnalisée qui, pour rappel, appelée depuis une feuille de calcul, ne peut agir que sur la valeur de la ou les cellule(s) appelante(s) et on se dirige vers la procédure Sub 'classique'...

A moins que d'autres aient une autre idée de la question...

Cordialement,
 

Hervé

XLDnaute Barbatruc
Bonjour

l'objectif de cette fonction est tout simplement de renvoyer les permutations d'une valeur, je ne sais donc pas à l'avance le nombre de caractère de la chaine passée en argument de la fonction.

mais apparement on ne peut se passer de la combinaison ctrl+alt+entree, alors je vais faire autrement.

salut
 

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 023
Membres
101 873
dernier inscrit
excellllll