XL 2010 Afficher résultat formule nb.si.ens macro

miliev83

XLDnaute Occasionnel
Bonjour à tous,

J'ai un fichier qui fait 15 000 lignes pour 50 colonnes qui me sert de base de données (feuille bdd) pour calculer des nb.si.ens (au moins 50)
> le problème c'est que du coup les formules sont vachement longues à s'exécuter.

J'aurai aimé pour optimiser mes formules les lancer par macro et afficher les résultats dans les cellules du tableau de la feuille "resultat"

J'ai trouvé comment afficher le résultat mais cela m'affiche également la formule, chose que je ne souhaite pas pour ne pas alourdir mon fichier

>> Comment faire pour lancer les nb.si.ens en même temps et afficher seulement le résultat obtenu ?

Merci à vous
 

Pièces jointes

  • nb.si.ens2.xlsm
    14.7 KB · Affichages: 34

Lone-wolf

XLDnaute Barbatruc
Bonjour miliev

Ton fichier en retour, regarde si ça te convient. A prendre comme exemple. Le lancement de la macro se fait à partir de l'évenement Change de la feuille bdd.
 

Pièces jointes

  • nb.si.ens-V3.xlsm
    18.8 KB · Affichages: 43

miliev83

XLDnaute Occasionnel
Merci pour ton travail,
à un détail près c'était parfait lol car il ne faut pas tenir compte du critère "Article"

Exemple : Nombre de prix à 10 de couleur noir différent de NULL = 4
Ma formule est
=NB.SI.ENS(bdd!B:B;"20";bdd!C:C;"<>NULL";bdd!D: D;">0")

Le problème c'est que dans mon vrai fichier, je peux avoir au moins 6 ou 7 critères dans la formule c'est pour ça que je l'écris directement dans la formule

Est-ce réalisable ?
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re

Une autre façon de faire

VB:
Sub Resultats()
        With Sheets("resultat").Range("b2")
            .FormulaLocal = "=NB.SI.ENS(bdd!B:B;""10"";bdd!C:C;""OK"";bdd!D:D;"">0"")"
            .Value = .Value
        End With
     
        With Sheets("resultat").Range("b3")
            .FormulaLocal = "=NB.SI.ENS(bdd!B:B;""20"";bdd!C:C;""OK"";bdd!D:D;"">0"")"
            .Value = .Value
        End With
     
        With Sheets("resultat").Range("c2")
            .FormulaLocal = "=NB.SI.ENS(bdd!B:B;""10"";bdd!C:C;""OK"";bdd!E:E;"">0"")"
            .Value = .Value
        End With
     
         With Sheets("resultat").Range("c3")
            .FormulaLocal = "=NB.SI.ENS(bdd!B:B;""20"";bdd!C:C;""OK"";bdd!E:E;"">0"")"
            .Value = .Value
        End With
End Sub

resultats.gif
 
Dernière édition:

miliev83

XLDnaute Occasionnel
Yes merci, ca fonctionne bien :)

Après recomptage, il y aurait en fait pratiquement 400 formules à lancer en même temps,
En fouillant un peu, j'ai trouvé un bout de code qui à l'air de fonctionner mais comme j'y connais pas grand chose, quel code est le plus optimiser pour mon fichier entre le tien et celui là

Code:
Sub test()
Dim Cel As Range
Dim myRange As Range
Range("B2") = "=COUNTIFS(bdd!C,""10"",bdd!C[1],""<>NULL"",bdd!C[2],"">0"")"
Set myRange = Range("B2:C10")
For Each Cel In myRange
Cel.FormulaLocal = Cel
Next Cel
End Sub

Merci encore
 

Discussions similaires

Réponses
10
Affichages
810

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes