SumProduct et variables tableaux

Le
DesseJ
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #5227241
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"
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
DesseJ
Le #5227201
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
Daniel.C
Le #5227171
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"
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
DesseJ
Le #5227161
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
Fredo P.
Le #5226711
C'est sans doute cela dont tu rêves.

http://cjoint.com/?drupk3tlNh

"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


Fredo P.
Le #5226681
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"
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


JB
Le #5226631
Bonsoir,

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

JB.

On 17 mar, 20:30, "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"



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 -



Fredo P.
Le #5226591
--


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

Assurément JB
DesseJ
Le #5226261
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
Publicité
Poster une réponse
Anonyme