XL 2010 SommeProd VBA avec variables

lutha

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin de vos lumières sur une formulation en VBA.

Contexte: Je voudrais dans la feuille "Indicateur" que en appuyant sur un bouton les calculs se fassent (un peu comme un TCD)

La formule en excel: =SOMMEPROD(SI(mois=10;(1/NB.SI('MRE Manuel'!F3:F1007;'MRE Manuel'!F3:F1007)))) (à valider en matricelle)

mois=10 étant le mois demandé via le bouton => Critére
La plage de donnée F3 à f1007 concerne les données à compter sans les doublons.

Sachant que la plage est amené à etre variable j'ai fais la formule sous VBA en intégrant les variables.

Voilà ce que j'ai sur VBA

Code:
Sub Macro3()

Sheets("MRE Manuel").Select

Dernligne = Range("f" & Rows.Count).End(xlUp).Row
PremLigne = Range("f3").Row
Dernlignec = Range("c" & Rows.Count).End(xlUp).Row
PremLignec = Range("c3").Row

Sheets("Indicateurs").Select

resultat = InputBox("Quel mois voulez vous mettre à jour ?", "Choisir le mois", "Mois en nombre")
Cellule = resultat + 4
Range("f" & Cellule).Select
ActiveCell.FormulaR1C1 = "=SUMPRODUCT(IF('MRE Manuel'!R" & PremLignec & "'MRE Manuel'!C:'MRE Manuel'!R" & Dernlignec & "'MRE Manuel'!C=resultat,1/COUNTIF('MRE Manuel'!R" & PremLigne & "'MRE Manuel'!C:'MRE Manuel'!R" & Dernligne & "'MRE Manuel'!C,'MRE Manuel'!R" & PremLigne & "'MRE Manuel'!C:'MRE Manuel'!R" & Dernligne & "'MRE Manuel'!C))"


End Sub

Le soucis: la partie de la formule ne fonctionne pas et je n'arrive pas à savoir pourquoi. De plus je ne sais pas trop comment la passer en matricielle.

Je vous met un fichier en PJ pour aider.

Merci !
 

Pièces jointes

  • Classeur1.xlsm
    23.9 KB · Affichages: 28

Hieu

XLDnaute Impliqué
Salut,
Quel résultat veux-tu sortir de ta formule ??

Premier point :
.FormulaR1C1: c'est pour taper des formules en relatif
.Formula: comme tu as utilisé (en anglais)
.FormulaLocal: en fr

Deuxieme point, pourquoi le veux-tu en matricielle ?
J'aurai surement la reponse, via ma premiere question

++
 

lutha

XLDnaute Nouveau
Finalement j'ai trouvé quelque chose de plus simple. (Prendre du recul ça aide...;))

Je garde la formule excel en mettant mes plages en dynamique
=SOMMEPROD(SI(mois=10;(1/NB.SI(chauffeur;chauffeur))))

La plage étant nommée avec ette formule: =DECALER('MRE Manuel'!$F$2;1;0;NBVAL('MRE Manuel'!$F:$F)-1;1)

Le seul soucis qu'il me reste c'est que c'est pas tellement fiable, je me demande si ce n'est pas parce que c'est des valeurs et non des nombres.

Par exemple j'ai 47.22 en résultat et si j'ajoute une ligne il met 47.27... au lieu de 48 par exemple.

Avez vous une idée du problème ?

Merci :)
 

lutha

XLDnaute Nouveau
Salut,
Quel résultat veux-tu sortir de ta formule ??

Premier point :
.FormulaR1C1: c'est pour taper des formules en relatif
.Formula: comme tu as utilisé (en anglais)
.FormulaLocal: en fr

Deuxieme point, pourquoi le veux-tu en matricielle ?
J'aurai surement la reponse, via ma premiere question

++

Salut !
J'ai oublie de préciser le résultat efffectivement... Le but est de compter le nombre de chauffeur par mois. Par exemple combien au mois de juillet (sans compter les doublons (plusieurs lignes par jour avec le même chauffeur)

ex: en PJ



Je le voulais en matiricelle car j'ai lu que la formule en excel devait être valider en matricielle pour fonctionner, donc je suppose que je dois le répercuter en VBA. (je ne connais pas grand chose en matricielle)

D'après toi je ferais mieux de prendre FormulaLocal au vu de mes références ?

Sinon entre temps j'ai trouvé une solution sans VBA mais elle marche pas très bien non plus :confused: (voir message ci dessous)

Merci de ta réponse
 

Pièces jointes

  • Classeur2.xlsx
    23.5 KB · Affichages: 22

Hieu

XLDnaute Impliqué
J'avais débuté un peu de modif de ton code.
Pas trop bien compris la formule que tu voulais utiliser.

Ci-joint une idée, en passant par un tableau transitoire
 

Pièces jointes

  • Classeur1_v0.xlsm
    25 KB · Affichages: 26
Dernière édition:

Discussions similaires

Réponses
12
Affichages
427
Réponses
5
Affichages
421

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i