Nombre de lignes dans une variable tableau

Fermé
mathieulai - 13 avril 2015 à 21:33
 mathieulai - 14 avril 2015 à 16:00
Voici le code de la fonction personnalisée :
Function ArrM4(Montant As Variant) As Variant
Dim j As Integer
j = Montant.Count
ArrM4 = Application.Sum(Montant) * j
End Function
Quand l'argument Montant est une plage simple d'une feuille de calcul du type A1:A100 cette version fonctionne mais quand l'argument est un peu plus complexe : du type (A1:A100)*(A1:100>100) alors pour que ça fonctionne je dois remplacer j = Montant.Count par j = Ubound(Montant) (qui ne marche pas avec la plage simple pour sa part).
Je suis un peu perdu. J'ai bien essayé de faire un If IsError ... mais il ne veut rien savoir -> #VALEUR!
Merci de votre aide
A voir également:

3 réponses

eriiic Messages postés 24582 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 juin 2024 7 223
Modifié par eriiic le 14/04/2015 à 15:49
Bonjour,

Tu es sûr ça marche avec (A1:A100)*(A1:100>100) ?
Ca donne une matrice dont ta fonction ne voit que le 1er terme (?)
Et on ne voit pas trop le rapport entre les 2 calculs...

Quoiqu'il en soit avec ce que tu fournis pour différencier les deux tu peux essayer avec :
Function ArrM4(Montant As Variant) As Variant
    Dim j As Integer
    If IsArray(Montant) Then
        j = Montant.Count
    Else
        j = UBound(Montant)
    End If
    ArrM4 = Application.Sum(Montant) * j
End Function

eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
ccm81 Messages postés 10862 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 30 mai 2024 2 409
14 avril 2015 à 15:50
Bonjour

Comme tu n'as pas eu de retour depuis hier, je crois que ta demande n'est pas très claire.
Peux tu envoyer un bout de fichier, avec ta macro, au format excel 2003 sur cjoint.com et joindre le lien à ton prochain message. N'oublies pas d'y ajouter des explications sur ce que la fonction ArrM4 doit calculer et surtout à partir de quoi, et bien sur des exemples de résultat attendu

Cdlmnt
0
Merci pour vos retours, j'ai finalement trouvé la solution ou une solution : j'ai déclaré une nouvelle variable de type tableau Variant, j'alimente celle-ci avec la plage argument Montant et ainsi il arrive toujours à calculer le Ubound de ce nouveau tableau, je pense que c'est un problème de format.
0