Aide Worksheetfunction VBA

  • Initiateur de la discussion @Christophe@
  • Date de début
@

@Christophe@

Guest
Bonjour a tous,

J'ai un problème VBA que je n'arrive pas à résoudre.

Sur une feuille VBA j'ai une formule:

=SOMMEPROD(NB.SI(Zone;Poste)*(Duree))

Elle fonctionne très très bien, mais maintenant j'aimerai la faire fonctionner par VBA dans un textbox sur un userform, donc j'utilise le code suivant, mais toujours et encore BUG, AAAAAAAAARRRRRRR, qui pourrait m'aider?

Private Sub UserForm_Initialize()
TextBox1.Value = WorksheetFunction.SumProduct(WorksheetFunction _
.CountIf(Range(ActiveSheet.Name & "!Zone"), Sheets("accueil").Range("poste")), (Sheets("accueil").Range("duree")))
End Sub


Info:

J'utilise des plages nommé, j'ai également essayé avec les ranges sans nom, et toujours BUG

Zone = Nom local de la page Active
Poste et Duree, nom globeaux de la page Acceuil

Merci d'avance de votre aide

@Christophe@

P.S. Joyeuse pâque a tous
 
@

@+Thierry

Guest
Salut @Xtof@

J'epère que tu as passé de bonnes fêtes !

Tiens là c'est moi qui vais te demander un fichier exemple, je voudrais bien t'aider mais j'ai pas envie de récréer un classeur avec les plages nommées et et tout pour avoir ton contexte, surtout que je sais pas quelles données on est sensé gérer...

@Suivre...
@+Thierry
 
M

Myta

Guest
Salut le Forum

Peut-etre avec application cela fonctionnerait mieux

textbox1.value = Application.WorksheetFunction.SumProduct _(Application.WorksheetFunction.CountIf(Range("Zone"), Range("poste")), Range("duree"))

A suivre Mytå
 
M

Myta

Guest
Re le forum

@Christophe@ je viens de verifier sur multi-plage cela fonctionne pas !!!!

J'irais alors par une cellule cacher

Sub UserForm_Initialize()
With Range("A1")
.FormulaR1C1 = "=SUMPRODUCT(COUNTIF(Zone,Poste)*(Duree))"
If Range("a1").Interior.ColorIndex < 0 Then
.Font.ColorIndex = 2
Else
.Font.ColorIndex = .Interior.ColorIndex
End If
End With
TextBox1.Value = Range("A1").Value
End Sub

Mytå
 
@

@christophe@

Guest
Bonjour,

Merci a vous deux, mais j'ai une mauvais nouvelle, cela marche pas.

Myta, ta deuxième solution est bonne, mais j'aimerai passer par VBA sans utilisé de cellule.

J'ai fait de multiple test dans le fichier joint, j'ai essayé CountIf seul, SommeProd seul, aucune problème
J'ai aussi essayé avec range nommé, sur multifeuille,... et toujours aucun problème.

Par contre dès que je combine les deux, rien a faire, bug, bug et rebug.


Pour Thierry, merci, j'ai passé de très bonne fête, j'ai je crois un peu trop abusé sur le chocolat, rire
Je te joint un fichier pour que tu y vois plus clair.


Merci beaucoup pour votre aide à tous.

@Christophe@
 

Pièces jointes

  • VBASommeProdEtNbSi.xls
    36.5 KB · Affichages: 132
@

@christophe@

Guest
Bonjour a tous

Ben Stéphane un grand grand merci, cela marche à merveille, mais pourquoi les parenthèse [] et pas de range, peux tu m'expliqué un peu parce que j'aime bien comprendre.

Merci d'avance

@Christophe@
 
J

Jon

Guest
ce sont des crochets :), ils constituent un raccourci syntaxique.

msgbox [2*4] => msgbox 8 => c'est un peu comme la fonction evaluate

il y a des infos dans cette page
<http://xlbysteph.free.fr/aideinformatique/actionfonction.htm>
 
M

Mytå

Guest
Bonsoir le forum

Merci pour le lien Jon on apprends tous les jours ici

Merci et bonne soirée

smiley_417.gif
 

Discussions similaires

Réponses
2
Affichages
592
Réponses
9
Affichages
1 K

Statistiques des forums

Discussions
314 650
Messages
2 111 541
Membres
111 199
dernier inscrit
mavoungou regis