chaine de variable

m92n

XLDnaute Nouveau
bonjour..
je commence en vb et j'essais de faire une fonction personnalisé.

Voici ce que je n'arrive pas a faire..

metton je pose une case égal à :
=perso(variable;var1;var2;var3....)

puis dans le code

function perso(variable as integer, var1 as single, var2 as single...) as integer
for i = 1 to (nombre de variable var"x")
if var"i" ...

je ne sais pas si je m'explique clairement.. je veux que je puisse rentrer autant de case que je veux et qu'il soit nommé var avec un nombre incrémenté de 1 chaque fois. puis jaimerai faire appelle à cette variable avec une autre variable.. par exemple losque i = 1, var"i" = var1...

Comment pourrais-je faire pour avoir quelque chose de semblable qui fonctionnerai??

merci
m92n
 

Pierrot93

XLDnaute Barbatruc
Re : chaine de variable

Bonjour,

pas tout compris du résultat attendu, mais si l'on doit comprendre que case = cellule ... peut être qu'une déclaration de type "range" devrait suffire :

Code:
Function perso(variable As Integer, var As Range) As Integer
Dim c As Range
For Each c In var

Next c
End Function

après tout dépend de ce que tu veux faire...

bonne journée.
@+
 

job75

XLDnaute Barbatruc
Re : chaine de variable

Bonjour m92n, salut Pierrot,

Tout à fait d'accord avec Pierrot : il faut dans la fonction utiliser une seule variable Range "var".

Quand on entre cette fonction dans une cellule, si l'on veut déterminer une plage constituée de cellules non adjacentes, écrire :

=perso(variable;(A1;B3;C5))

A+
 

m92n

XLDnaute Nouveau
Re : chaine de variable

Bonsoir,
encore moi..
cela marche bien mais est-il possible de faire une range avec différentes cellules de différentes feuilles?
j'ai esseyer simplement avec :
=perso(H10;('feuille1'!H10;'feuille2'!H10))
mais cela ne fonctionne pas :(

merci de m'aider
m92n
 

ROGER2327

XLDnaute Barbatruc
Re : chaine de variable

Bonjour
Un exemple à bricoler dans le classeur joint.
Code:
[COLOR="DarkSlateGray"][B]Function perso(ParamArray dat())
Dim i, s
   Application.Volatile
   For i = LBound(dat) To UBound(dat)
      s = s + dat(i)
   Next i
   perso = s
End Function[/B][/COLOR]
Commentaire :
Cette fonction prend comme argument une liste de cellules et renvoie la somme de leur contenu. (Ce n'est pas très utile, mais c'est un exemple...)

en A1, feuille "Feuil1"
=perso(B1;Feuil2!B1;Feuil3!B1)
renvoie la somme des valeurs des cellules B1 des feuilles "Feuil1", "Feuil2" et "Feuil3".

en A2, feuille "Feuil1"
=perso(B1:B2;Feuil2!B2;Feuil3!B2)
renvoie un erreur (#VALEUR!) parceque B1:B2 n'est pas une cellule, mais une plage de cellules.
en A3
=perso(B2;B3;Feuil2!B3;Feuil3!B3)
fonctionne.
Vous pouvez donner une liste de 4,5 cellules ou plus si besoin est.
=perso()
renvoie la valeur 0 (zéro).

en A4, feuille "Feuil1"
=perso(B4;Feuil2!B4;Feuil3!B4)
renvoie un erreur (#VALEUR!) parceque B4 est une cellule qui ne contient pas une valeur numérique.​
Bon courage.​
ROGER2327
#2090
 

Pièces jointes

  • temp.xls
    25.5 KB · Affichages: 36
  • temp.xls
    25.5 KB · Affichages: 41
  • temp.xls
    25.5 KB · Affichages: 37

Kobaya

XLDnaute Occasionnel
Re : chaine de variable

Bonjour m92n, bonjour à tous,

Une autre possibilité dans le classeur joint avec des arguments optionnels.
 

Pièces jointes

  • Classeur1.zip
    22 bytes · Affichages: 20
  • Classeur1.zip
    22 bytes · Affichages: 22
  • Classeur1.zip
    22 bytes · Affichages: 22

Discussions similaires

Statistiques des forums

Discussions
312 769
Messages
2 091 935
Membres
105 113
dernier inscrit
AOUJIL