Sumproduct ...tu me gonfles

Le
merguez07
Bonjour à tous,
décidemment le calcul matriciel en VBA c'est pas de la tarte, il y a
toujours une syntaxe qui merdois


En l'occurence je souhaite faire (à titre d'exemple) un calcul tout simple

j'ai mis dans une colonne 5 valeurs :
B2="CE"
B3="CE"
B4="AM"
B5="AM"
B6="AM"

J'ai donné le nom "Champs" à ces 5 cellules

J'ai en G4 la variable que je veux comptabiliser dans Champs
J'ai nommé G4 en "Type"


Enfin je voudrais comptabiliser le nombre de variables "type" dans le
"Champs" en utilisant la fonction SUMPRODUCT

Je veux mettre le résultat en G6 cellule que j'ai nommé "Total"

Je déclenche mon calcul par un bouton qui envoie vers la macro suivante

Private Sub CommandButton1_Click()

Ty = Range("Type")
With Worksheets(1)
ChampsDeTest = .Name & "!" & .Range("Champs").Address
End With
x = Application.Evaluate("=SUMPRODUCT((" & ChampsDeTest & "=" & Ty
& ")*1)") ' C'est ici qu'il y a erreur 2029
Range("Total") = x

End Sub


Malheureusement le calcul de x ne marche pas j'ai une erreur 2029

Where is the problème ?
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
michdenis
Le #23159191
Bonjour,

Avec sommeprod : =SOMMEPROD((Champ=type)*1)

Il y a aussi ceci : =NB.SI(Champ;type)


MichD
--------------------------------------------
Charabeuh
Le #23159171
Bonjour merguez07,

Le code suivant devrait le faire:

Sub Test()
Range("Total") = Evaluate("=SUMPRODUCT(--(Champs=Type))")
End Sub




___________________________________________________
merguez07 a émis l'idée suivante :
Bonjour à tous,
décidemment le calcul matriciel en VBA c'est pas de la tarte, il y a toujours
une syntaxe qui merdois


En l'occurence je souhaite faire (à titre d'exemple) un calcul tout simple

j'ai mis dans une colonne 5 valeurs :
B2="CE"
B3="CE"
B4="AM"
B5="AM"
B6="AM"

J'ai donné le nom "Champs" à ces 5 cellules

J'ai en G4 la variable que je veux comptabiliser dans Champs
J'ai nommé G4 en "Type"


Enfin je voudrais comptabiliser le nombre de variables "type" dans le
"Champs" en utilisant la fonction SUMPRODUCT

Je veux mettre le résultat en G6 cellule que j'ai nommé "Total"

Je déclenche mon calcul par un bouton qui envoie vers la macro suivante

Private Sub CommandButton1_Click()

Ty = Range("Type")
With Worksheets(1)
ChampsDeTest = .Name & "!" & .Range("Champs").Address
End With
x = Application.Evaluate("=SUMPRODUCT((" & ChampsDeTest & "=" & Ty &
")*1)") ' C'est ici qu'il y a erreur 2029
Range("Total") = x

End Sub


Malheureusement le calcul de x ne marche pas j'ai une erreur 2029

Where is the problème ?
michdenis
Le #23159291
Si tu utilises des noms de plage, en vba, la formule est :

a = [Sumproduct((Champ=type)*1)]


MichD
--------------------------------------------
merguez07
Le #23160971
Merci ça marche



Le 26.02.2011 14:16, Charabeuh a écrit :
Bonjour merguez07,

Le code suivant devrait le faire:

Sub Test()
Range("Total") = Evaluate("=SUMPRODUCT(--(Champs=Type))")
End Sub




___________________________________________________
merguez07 a émis l'idée suivante :
Bonjour à tous,
décidemment le calcul matriciel en VBA c'est pas de la tarte, il y a
toujours une syntaxe qui merdois


En l'occurence je souhaite faire (à titre d'exemple) un calcul tout
simple

j'ai mis dans une colonne 5 valeurs :
B2="CE"
B3="CE"
B4="AM"
B5="AM"
B6="AM"

J'ai donné le nom "Champs" à ces 5 cellules

J'ai en G4 la variable que je veux comptabiliser dans Champs
J'ai nommé G4 en "Type"


Enfin je voudrais comptabiliser le nombre de variables "type" dans le
"Champs" en utilisant la fonction SUMPRODUCT

Je veux mettre le résultat en G6 cellule que j'ai nommé "Total"

Je déclenche mon calcul par un bouton qui envoie vers la macro suivante

Private Sub CommandButton1_Click()

Ty = Range("Type")
With Worksheets(1)
ChampsDeTest = .Name & "!" & .Range("Champs").Address
End With
x = Application.Evaluate("=SUMPRODUCT((" & ChampsDeTest & "=" & Ty &
")*1)") ' C'est ici qu'il y a erreur 2029
Range("Total") = x

End Sub


Malheureusement le calcul de x ne marche pas j'ai une erreur 2029

Where is the problème ?




merguez07
Le #23161021
Merci Mich, effectivement dans ce cas ça fonctionne.

Par contre j'ai encore des pb lorsque je nomme les plages dans la
procédure (le programme sort de la procedure au moment de la rencontre
avec le code

dim M as string
M="CE"
ThisWorkbook.Names.Add "type", M, False

Le 26.02.2011 14:42, michdenis a écrit :
Si tu utilises des noms de plage, en vba, la formule est :

a = [Sumproduct((Champ=type)*1)]


MichD
--------------------------------------------

michdenis
Le #23161491
Bonjour,

Si tu procèdes ainsi, il n'y a pas de raison que cela ne fonctionne pas...
Tu dois avoir un environnement particulier!

Tu dois créer le nom "type" avant de tenter d'évaluer la formule.
Ceci suppose que Champ est aussi une plage nommée.

'---------------------------
Sub test()
Dim M As String
M = "CE"
ThisWorkbook.Names.Add "type", M, False
a = [Sumproduct((Champ=type)*1)]
End Sub
'---------------------------


MichD
--------------------------------------------
"merguez07" a écrit dans le message de groupe de discussion : 4d6a01e9$0$10730$

Merci Mich, effectivement dans ce cas ça fonctionne.

Par contre j'ai encore des pb lorsque je nomme les plages dans la
procédure (le programme sort de la procedure au moment de la rencontre
avec le code

dim M as string
M="CE"
ThisWorkbook.Names.Add "type", M, False

Le 26.02.2011 14:42, michdenis a écrit :
Si tu utilises des noms de plage, en vba, la formule est :

a = [Sumproduct((Champ=type)*1)]


MichD
--------------------------------------------

Publicité
Poster une réponse
Anonyme