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

  • Initiateur de la discussion Initiateur de la discussion miliev83
  • 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 !

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

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:
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:
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
 
- 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

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
7
Affichages
658
Réponses
10
Affichages
1 K
Retour