OVH Cloud OVH Cloud

Problème sumproduct en vba

7 réponses
Avatar
René Delcourt
Bonjour,
Qu'est ce qui cloche dans cette formule?
--------------------------------
Public Compagnie, Nom_Cie, Agence, Agent, Nom_Agent, No_AVS As String
Public NbreCom as integer
Sub Copie()
...
NbreCom = Application.Function.SumProduct((Range("z2:z10000") = Compagnie) *
(Range("aa2:aa10000") = Agence) * (Range("ab2:ab10000") = Agent))
---------------------------------
Merci de votre aide.
--
René Delcourt

7 réponses

Avatar
LSteph
Bonjour,
Ce qui clocherait?

le peu que tu en donnes ne me permet pas de trouver ipso facto un bug et
d'ailleurs par rapport à quoi?
toutefois spontanément ce qui me vient c'est que tu peux penser que tes
vatriables sont typées
et bien ce n'est le cas que pour No_AVS qui est le seul réellement as
string et NbrCom as integer.

lSteph


"René Delcourt" a écrit dans le message de news:

Bonjour,
Qu'est ce qui cloche dans cette formule?
--------------------------------
Public Compagnie, Nom_Cie, Agence, Agent, Nom_Agent, No_AVS As String
Public NbreCom as integer
Sub Copie()
...
NbreCom = Application.Function.SumProduct((Range("z2:z10000") = Compagnie)
*
(Range("aa2:aa10000") = Agence) * (Range("ab2:ab10000") = Agent))
---------------------------------
Merci de votre aide.
--
René Delcourt


Avatar
Jacquouille
Bonsoir René
Bien que n'étant qu'un humble salarié de la SPA, je me permets de supposer
(comme les politiciens s'autorisent à penser. Confert Coluche)....
SP fait la somme de produits. Ceux-ci s'obtiennent par Vrai ou Faux qui
sont =1 ou =0. Si tu demandes l'analyse d'une plage avec une variable et
que cette variable contient du texte, je me demande dans quelle mesure il ne
faudrait pas bidouiller un truc du genre="""&tavar&""".
Maintenant, je laisse le soin à AV, Grand Maître de SP et Président de la
SPA.
A vous, O Maître Vénéré. Vous avez la parole.

--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.

"René Delcourt" a écrit dans le message de news:

Bonjour,
Qu'est ce qui cloche dans cette formule?
--------------------------------
Public Compagnie, Nom_Cie, Agence, Agent, Nom_Agent, No_AVS As String
Public NbreCom as integer
Sub Copie()
...
NbreCom = Application.Function.SumProduct((Range("z2:z10000") = Compagnie)
*
(Range("aa2:aa10000") = Agence) * (Range("ab2:ab10000") = Agent))
---------------------------------
Merci de votre aide.
--
René Delcourt


Avatar
anonymousA
Bonjour,

n'y aurait t-il pas un problème de Function au lieu de WorksheetFunction
avant d'aller plus loin ?
par ailleurs, que sont Compagnie Agent et Agence ?

A+


Bonjour,
Qu'est ce qui cloche dans cette formule?
--------------------------------
Public Compagnie, Nom_Cie, Agence, Agent, Nom_Agent, No_AVS As String
Public NbreCom as integer
Sub Copie()
...
NbreCom = Application.Function.SumProduct((Range("z2:z10000") = Compagnie) *
(Range("aa2:aa10000") = Agence) * (Range("ab2:ab10000") = Agent))
---------------------------------
Merci de votre aide.


Avatar
René Delcourt
Bonjour et merci pour vos multiples avis.
J'ai simplifié le problème et arrive toujours à une incompatibilité de type
(13)

La zone suivante comprend 3 fois "000024".
Je devrais donc recevoir NbreCom=3. (public NbreCom as integer)

NbreCom = WorksheetFunction.SumProduct((Range("aa200:aa202") = "000024") * 1)
PS : En inscrivant la formule dans une cellule, cela fonctionne.


--
René Delcourt



Bonjour,

n'y aurait t-il pas un problème de Function au lieu de WorksheetFunction
avant d'aller plus loin ?
par ailleurs, que sont Compagnie Agent et Agence ?

A+


Bonjour,
Qu'est ce qui cloche dans cette formule?
--------------------------------
Public Compagnie, Nom_Cie, Agence, Agent, Nom_Agent, No_AVS As String
Public NbreCom as integer
Sub Copie()
...
NbreCom = Application.Function.SumProduct((Range("z2:z10000") = Compagnie) *
(Range("aa2:aa10000") = Agence) * (Range("ab2:ab10000") = Agent))
---------------------------------
Merci de votre aide.





Avatar
René Delcourt
Bonjour Anonymous,
Ce sont des variables de type string (à mon avis)
Exemples
Compagnie : "024SO" ou "00002"
Agence : "000024"
Agent : "00000549"

Cependant, Excel récupère ces données comme "nombre stockés sous forme de
texte" sauf pour le type "024SO".
J'ai lu dans l'aide SommeProd que les valeurs du range doivent être du même
type...l'erreur provient probablement de là?
--
René Delcourt



Bonjour,

n'y aurait t-il pas un problème de Function au lieu de WorksheetFunction
avant d'aller plus loin ?
par ailleurs, que sont Compagnie Agent et Agence ?

A+


Bonjour,
Qu'est ce qui cloche dans cette formule?
--------------------------------
Public Compagnie, Nom_Cie, Agence, Agent, Nom_Agent, No_AVS As String
Public NbreCom as integer
Sub Copie()
...
NbreCom = Application.Function.SumProduct((Range("z2:z10000") = Compagnie) *
(Range("aa2:aa10000") = Agence) * (Range("ab2:ab10000") = Agent))
---------------------------------
Merci de votre aide.





Avatar
Alain CROS
Bonjour.

Sub Test()
MsgBox [SUMPRODUCT((AA200:AA202="000024")*1)]
End Sub

Alain CROS

"René Delcourt" a écrit dans le message de news:
| Bonjour et merci pour vos multiples avis.
| J'ai simplifié le problème et arrive toujours à une incompatibilité de type
| (13)
|
| La zone suivante comprend 3 fois "000024".
| Je devrais donc recevoir NbreCom=3. (public NbreCom as integer)
|
| NbreCom = WorksheetFunction.SumProduct((Range("aa200:aa202") = "000024") * 1)
| PS : En inscrivant la formule dans une cellule, cela fonctionne.
|
|
| --
| René Delcourt
Avatar
Jacquouille
Bonjour
Après lecture des différentes réponses, j'en reviens à mon idée première.
AMHA, une variable enregistre sa valeur comme texte.
Ensuite, je me demande s'il est bien nécessaire de mettre (Range(A1:AO)="A).
Perso, je supprimerais Range().
Bonne chance et attendons la réaction d'AV.

--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.

"René Delcourt" a écrit dans le message de news:

Bonjour Anonymous,
Ce sont des variables de type string (à mon avis)
Exemples
Compagnie : "024SO" ou "00002"
Agence : "000024"
Agent : "00000549"

Cependant, Excel récupère ces données comme "nombre stockés sous forme de
texte" sauf pour le type "024SO".
J'ai lu dans l'aide SommeProd que les valeurs du range doivent être du
même
type...l'erreur provient probablement de là?
--
René Delcourt



Bonjour,

n'y aurait t-il pas un problème de Function au lieu de WorksheetFunction
avant d'aller plus loin ?
par ailleurs, que sont Compagnie Agent et Agence ?

A+


Bonjour,
Qu'est ce qui cloche dans cette formule?
--------------------------------
Public Compagnie, Nom_Cie, Agence, Agent, Nom_Agent, No_AVS As String
Public NbreCom as integer
Sub Copie()
...
NbreCom = Application.Function.SumProduct((Range("z2:z10000") =
Compagnie) *
(Range("aa2:aa10000") = Agence) * (Range("ab2:ab10000") = Agent))
---------------------------------
Merci de votre aide.