Aide Worksheetfunction VBA

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

@

@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
 
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
 
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å
 
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å
 
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

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@
 
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>
 
Bonsoir le forum

Merci pour le lien Jon on apprends tous les jours ici

Merci et bonne soirée

smiley_417.gif
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
332
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
213
Réponses
3
Affichages
518
Réponses
16
Affichages
947
Réponses
12
Affichages
419
Réponses
5
Affichages
442
Réponses
2
Affichages
691
Retour