• 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

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
Retour