Problème NB.SI VBA

Bonjour à tous !!!

Voila j'ai un fichier volumineux et dans la Cellule C20 je dois faire le calcul suivant : =NB.SI($AA$1:$EB$3000;A20) ensuite la tirer selon la longueur de la colonne B.

Donc j'ai fait ça :

Sub Formule()

End Sub

Cela fonctionne mais c'est trop lent. Alors est-il possible d'accélérer la macro avec un truc du genre application.countif ??? j'ai essayer mais je n'arrive pas à le faire tirer jusqu'en bas

Bonjour,

essaye avec

Sub Formule()
Dim Lg%
    Application.ScreenUpdating = False
    Lg = Range("b" & Rows.Count).End(xlUp).Row
    Range("c20:c" & Lg) = "=COUNTIF($aa$1:eb" & Lg & ",a20)"
End Sub

Amicalement

Claude

dubois a écrit :

Bonjour,

essaye avec

Sub Formule()
Dim Lg%
    Application.ScreenUpdating = False
    Lg = Range("b" & Rows.Count).End(xlUp).Row
    Range("c20:c" & Lg) = "=COUNTIF($aa$1:eb" & Lg & ",a20)"
End Sub

Amicalement

Claude

Merci de te pencher sur le sujet mais c'est toujours aussi long est-il possible d'ecrire en dure avec worksheetapplication.countif ???

re,

Ce n'est pas cette petite formule qui te fait mouliner !

Tu dois avoir beaucoup d'autres formules, mets en Calcul manuel

Sub Formule()
Dim Lg%
    Application.Calculation = xlCalculationManual       'calcul manuel

    Application.ScreenUpdating = False
    Lg = Range("b" & Rows.Count).End(xlUp).Row
    With Range("c20:c" & Lg)
        .Formula = "=COUNTIF($aa$1:eb" & Lg & ",a20)"
        .Value = .Value                                 'en dur
    End With

    Application.Calculation = xlCalculationAutomatic    'calcul Auto
End Sub
dubois a écrit :

re,

Ce n'est pas cette petite formule qui te fait mouliner !

Tu dois avoir beaucoup d'autres formules, mets en Calcul manuel

Sub Formule()
Dim Lg%
    Application.Calculation = xlCalculationManual       'calcul manuel

    Application.ScreenUpdating = False
    Lg = Range("b" & Rows.Count).End(xlUp).Row
    With Range("c20:c" & Lg)
        .Formula = "=COUNTIF($aa$1:eb" & Lg & ",a20)"
        .Value = .Value                                 'en dur
    End With

    Application.Calculation = xlCalculationAutomatic    'calcul Auto
End Sub

Bonsoir,

J'ai essayé ta méthode mais ça mouline encore je n'ai que cette formule sur environ 4000 lignesen plus j'ai une autre colonne qui doit recevoir ce type de formule ...

Je pense que cela va se terminer par

Bonne soirée à vous !!!

PS: le fichier et trop gros je le coupe en deux donc il faudra faire un copier coller avec le deuxième en cellule AA

-- 31 Juil 2011, 21:05 --

Voici le deuxième mais vu le poids j'ai du supprimer des lignes donc n'hésitez pas à tirer vers le bas pour faire les calculs !!!

Merci de bien vouloir se pencher sur mon cas !!!

Bonne soirée

re,

C'est curieux !

ici, j'ai nommé les colonnes AA:EH "tablo"

Champ nommé

tablo =Feuil1!$AA:$HE

formule en D20

=NB.SI(tablo;B20)

çà ne mouline plus du tout

édit: çà marche même sans nommer le champ

avec en D20

=NB.SI(AA:HE;B20)

Si un "formuliste" passe par là, pour expliquer pourquoi çà moulinait

avec l'ancienne formule ?

Claude

Bonjour je vais essayer dans la journée et je te tiens au courant

Encore merci !!!

Bonjour,

Si un "formuliste" passe par là, pour expliquer pourquoi çà moulinait

avec l'ancienne formule ?

explication:

voici le bon code

Sub Formule()
Dim Lg%
    Application.ScreenUpdating = False
    Lg = Range("b" & Rows.Count).End(xlUp).Row
    With Range("d20:d" & Lg)
        .Formula = "=COUNTIF(aa$1:eb$" & Lg & ",b20)"
        '.Formula = "=COUNTIF($aa$1:eb" & Lg & ",b20)"  'ancienne formule faux
        .Value = .Value                                 'en dur
    End With
End Sub

sur cette ligne, il manquait le "$" (absolu de Lg)

        .Formula = "=COUNTIF(aa$1:eb$" & Lg & ",b20)"

donc, pas besoin de nommer la plage comme dit précédemment.

édit: ce n'est pas vraiment que la formule était fausse, mais la plage concernée était beaucoup + grande.

bonne journée

Amicalement

Claude

Bonjour j'ai suivi vos conseil et réduit considérablement la plage de calcul ... temps de calcul divisé par deux !!! si toutefois vous aviez une idée pour réduire encore le temps je suis preneur

Merci à tous pour votre aide

Bonsoir,

Pour optimiser davantage, il faut le fichier réel (nettoyé)

sinon,

Claude

Rechercher des sujets similaires à "probleme vba"