Nombre de lignes dans une variable tableau
mathieulai
-
mathieulai -
mathieulai -
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
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:
- Excel vba nombre de lignes d'un tableau
- Trier un tableau excel - Guide
- Tableau word - Guide
- Imprimer un tableau excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Liste déroulante excel - Guide
3 réponses
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 :
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
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
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
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
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.