Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SumProduct et variables tableaux

9 réponses
Avatar
DesseJ
Bonjour =E0 tous,

Curiosit=E9 du lundi matin,
je me demandais s'il =E9tait possible d'utiliser des variables tableaux
avec un SumProduct, dans un souci de c=E9l=E9rit=E9 de code,
mais bien s=FBr je n'y arrive pas ;o)))

Merci d'avance pour vos conseils et bonne journ=E9e
Steph

Sub test()
Dim Tab1, Tab2
Dim DerLig#
With ActiveSheet
DerLig =3D .[A65536].End(3).Row
ReDim Tab1(1 To DerLig, 1 To 1): ReDim Tab2(1 To DerLig, 1 To
1)
Tab1 =3D .Range("A1:A" & DerLig).Value
Tab2 =3D .Range("B1:B" & DerLig).Value
'MsgBox Application.Evaluate("sumproduct((" & Tab1 & "=3D1)*(" &
Tab2 & "))")
MsgBox Application.SumProduct((" & Tab1 & " =3D 1) * (" & Tab2 &
"))
End With
End Sub

9 réponses

Avatar
Daniel.C
Bonjour.
Dans la formule, les variables que tu insères doivent être de type string
(ou numériques) comme tu les écris dans les formules entrées manuellement
dans Excel.
Cordialement.
Daniel
"DesseJ" a écrit dans le message de news:

Bonjour à tous,

Curiosité du lundi matin,
je me demandais s'il était possible d'utiliser des variables tableaux
avec un SumProduct, dans un souci de célérité de code,
mais bien sûr je n'y arrive pas ;o)))

Merci d'avance pour vos conseils et bonne journée
Steph

Sub test()
Dim Tab1, Tab2
Dim DerLig#
With ActiveSheet
DerLig = .[A65536].End(3).Row
ReDim Tab1(1 To DerLig, 1 To 1): ReDim Tab2(1 To DerLig, 1 To
1)
Tab1 = .Range("A1:A" & DerLig).Value
Tab2 = .Range("B1:B" & DerLig).Value
'MsgBox Application.Evaluate("sumproduct((" & Tab1 & "=1)*(" &
Tab2 & "))")
MsgBox Application.SumProduct((" & Tab1 & " = 1) * (" & Tab2 &
"))
End With
End Sub
Avatar
DesseJ
Merci Daniel, oui j'ai toujours cette erreur de type quand j'utilise
le SumProduct, alors que pour la somme c'est OK, pas ex MsgBox
Application.Sum(Tab1) .

Je vais laisser tomber cette idée.

Bonne journée
Steph
Avatar
Daniel.C
Quand tu écris :
Application.Sum(Tab1)
tu exécutes une fonction VBA
Quand tu utilises "Evaluate", tu évalues une fonction Excel.
MsgBox Evaluate("sum(" & Tab1 & ")")
tu obtiens un message d'erreur.
Daniel
"DesseJ" a écrit dans le message de news:

Merci Daniel, oui j'ai toujours cette erreur de type quand j'utilise
le SumProduct, alors que pour la somme c'est OK, pas ex MsgBox
Application.Sum(Tab1) .

Je vais laisser tomber cette idée.

Bonne journée
Steph
Avatar
DesseJ
Ca y est, j'ai compris mon erreur avec mon Evaluate. Et comme je ne
peux convertir ma variable Tab1 en string ici, c'est cuit.

Merci
Avatar
Fredo P.
C'est sans doute cela dont tu rêves.

http://cjoint.com/?drupk3tlNh

"DesseJ" a écrit dans le message de news:

Ca y est, j'ai compris mon erreur avec mon Evaluate. Et comme je ne
peux convertir ma variable Tab1 en string ici, c'est cuit.

Merci


Avatar
Fredo P.
Ou ceci
Sub test()
Dim Tab1, Tab2
Dim DerLig#
DerLig = .[A65536].End(3).Row
ReDim Tab1(DerLig), Tab2(DerLig)
Set Tab1 = Range("A1:A" & DerLig)
Set Tab2 = Range("B1:B" & DerLig)
MsgBox Evaluate("=sumproduct((" & [Tab1].Address & " = 1) * " &
[Tab1].Address & ")")
End Sub

--
"DesseJ" a écrit dans le message de news:

Ca y est, j'ai compris mon erreur avec mon Evaluate. Et comme je ne
peux convertir ma variable Tab1 en string ici, c'est cuit.

Merci


Avatar
JB
Bonsoir,

Ce ne sont pas des tableaux en mémoire centrale mais des champs

JB.

On 17 mar, 20:30, "Fredo P."
wrote:
Ou ceci
Sub test()
    Dim Tab1, Tab2
    Dim DerLig#
           DerLig = .[A65536].End(3).Row
        ReDim Tab1(DerLig), Tab2(DerLig)
   Set Tab1 = Range("A1:A" & DerLig)
     Set Tab2 = Range("B1:B" & DerLig)
      MsgBox Evaluate("=sumproduct((" & [Tab1].Address & " = 1) * " &
[Tab1].Address & ")")
  End Sub

--
"DesseJ" a écrit dans le message de news:




Ca y est, j'ai compris mon erreur avec mon Evaluate. Et comme je ne
peux convertir ma variable Tab1 en string ici, c'est cuit.

Merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Fredo P.
--


Ce ne sont pas des tableaux en mémoire centrale mais des champs

Assurément JB
Avatar
DesseJ
Bonjour, Bonsoir,

Merci les gars, oui je m'imaginais qu'avec des tableaux en mémoire
centrale, je pourrais booster les calculs, mais cela reste relatif car
c'est déjà assez rapide ;o))

Merci pour vos conseils et bonne journée
Steph