Accélérer ma Macro

Bonjour, je débute depuis très peu sur VBA .

J'ai fait une petite macro pour calculer une moyenne d'âge , le nombre d'agents par unité etc etc

Mais à chaque calcule , la macro refait une boucle donc il faut attendre environ 5 min pour qu'elle se termine.

Je sais qu'il existe un moyen pour que la Macro calcule tout d'un coup (en un seul passage)

Je compte donc sur vous pour m'aider à accélérer ma Macro

Merci d'avance !!!

Voici mon code à simplifier :

J'vous remercie encore!

Bonjour,

Si c'est pour faire un exercice en VBA il y a moyen de faire autrement mais ce serait beaucoup plus simple avec la fonction Excel NB.SI

Tu dis.

A+

Bonjour,

Merci d'avoir répondu aussi vite.

Mais je ne sais pas utiliser la fonction NB.SI . A quoi sert- elle ? Quelle est la syntaxe pour cette fonction ?

SVP

PS: par contre, faut que je le fasse en VBA et non sur Excel directement.

Bonjour,

je n'ai pas testé ton code, mais je pense que si tu fait une seule boucle avec tes conditions réunis dans la même boucle, tu devrais gagner du temps.

Do while ......
If ..... then
'ton code
elseif .....then
'ton code
elseif....then
'ton code
 end if

Loop

En VBA

Sub Population1()
Dim Um(1 To 12) As Integer
Dim Lig As Long, N As Integer

    For Lig = 2 To Cells(Rows.Count, 1).End(xlUp).Row
         On Error Resume Next
        'Sortir le N° dans la recherche
        N = Mid(Cells(Lig, "A"), 3, 2)
        Um(N) = Um(N) + 1
    Next Lig

    For Lig = 1 To 12
        Cells(Lig + 10, "D") = Um(Lig)
    Next Lig
End Sub

Pour te servir des fonctions Excel tu à l'assistant formules

A+

Joshua je te remercie pour ton idée mais lorsque je l'applique à ma Macro, les calcules ne s’exécute pas : les cellules se retrouve avec un "0" a la place de 1005 (par excemple)

Lermite je te remercie aussi mais je n'ai pas vraiment compris ton idée par contre.

Essaye là au moins...

Colle la procédure et lance la.

Ensuite ont verra pour expliquer ce que tu ne comprend pas.

Bien sur que je l'ai essayé lermite

Mais le débogage me fait remarquer plusieurs "erreurs".

Je colle ton code à la place de mien pourtant .

Tu a quoi comme erreur ?

Avec le On ERROR tu ne devrait pas en avoir.

Tu a peut-être copier le code avant ma modif, regarde si c'est bien le bon code que tu a copier.

Éventuellement poste ton classeur ou une copie allégée et sans donnée confidentielle.

Voici mon classeur (ultra simplifier) :

Je veux tout simple calculer le nombre d'unités (ex : combien y a-il de 1301M , 1312M ... ) en une fois .

Evidemment, tu dis pas que tes données sont dans une feuille et que tu veux le résultat dand une autre ..

EDIT : Version 2 avec NB.SI

34pfk95-retour-1.xlsm (60.53 Ko)
42pfk95-retour-2.xlsm (61.01 Ko)

Ouhla lermite !!! Je te remercie !

La rapidité du calcule est surprenante !!!

Il ne me reste plus qu'a comprendre ton code

Voir mon édit poste précédant pour le classeur 2 avec NB.SI

A+

J'ai regardé ton fichier.

Il est normal que la correction de ta macro donne 0 comme résultat car tu te postionne sur la cellule A2 en début de macro.

Si la cellule est vide, cela s'arrête de suite.

Dans ton exemple, les cellules a testé commence en C11. Ci joint le fichier modifié avec la macro. Par contre je n'ai pas fait avec les Else If.

A toi de voir.

@+

Rechercher des sujets similaires à "accelerer macro"