Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

 
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
 
Re

Comme tu as beaucoup de formules, mieux vaut utiliser le 2ème exemple que je t'ai montré. For each, rique de tourner longtemps avant d'afficher les résultats et de faire planter le programme.
 
- 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
663
Réponses
10
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…