Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

vba matricielles

  • Initiateur de la discussion Initiateur de la discussion Hoareau
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hoareau

XLDnaute Occasionnel
Bonjour

Pourquoi cette macro ne fonctionne pas
Array_1 ne fait pas référence à une plage de feuille de calcul

Sub test_mat_array()
Array_1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
test_2 = Application.WorksheetFunction.Sum((Array_1 >= 1) * (Array_1 <= 5))
Cells(1, 1) = test_2

End Sub


merci
 
Re : vba matricielles

Salut,

Je ne suis pas un spécialiste des tablo, mais il me semble bien que tu as la réponse dans ta question. WorksheetFunction permet d'utiliser les fonctions des feuilles de calculs (c'est à dire via un Range ou quelque chose du genre), or dans ton cas, tu veux l'utiliser pour un Array...
Je pense qu'il faut boucler sur le tablo pour pouvoir faire ce que tu souhaites...
Mais peut etre qu'un spécialiste aura une autre solution à t'aaporter !

@+
 
Re : vba matricielles

c'est justement ce que je cherche par quoi remplacer Worsheetfunction pour avoir le nombre de valeurs entre deux plages de MyArray_1

MyArray_1 este en mémoire pas de référence sur la feuille
 
Re : vba matricielles

bonjour,

Tu peux utiliser worksheetfunction.sum pour un tableau mais tu ne peux pas utiliser de critères.
ce que tu as essayé peut fonctionner avec "sumif" mais via un range uniquement. donc je pense également que la meilleure solution est la boucle
 
Re : vba matricielles

re,

je dirai un truc de ce genre :
Code:
Sub test_mat_array()
Dim i As Integer
Array_1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
For i = 0 To UBound(Array_1)
    If Array_1(i) >= 1 And Array_1(i) <= 5 Then test_2 = test_2 + Array_1(i)
Next i
MsgBox "total " & test_2
End Sub

@+
 
Re : vba matricielles

Merci pour la solution proposée mais je ne voulais pas de boucle, le tableau est déjà dans une boucle, et les valeurs changent à chaque fois.
c'est pour cela que je cherchais une fonction.

Andrew Poulsom
MrExcel MVP

M'as donné ce code, si cela peut servir a quelqu'un d'autre

Sub test_mat_array()
With ActiveWorkbook
.Names.Add Name:="ArrTemp", RefersToR1C1:="={1,2,3,4,5,6,7,8,9,10}"
.ActiveSheet.Cells(1, 1).Value = Evaluate("=SUMPRODUCT(--(ArrTemp>=1),--(ArrTemp<=5))")
.Names("ArrTemp").Delete
End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
7
Affichages
306
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…