IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

utilisation de CountIf


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut utilisation de CountIf
    *bonjour,

    j'ai une feuille de 21341 ligne, sur une colonne je voudrai trouver le nombre d'occurrences donc je fait
    pour toute la colonne,

    problème:


    dans ma macro j'ai plusieurs formules a calculer, j'ai remarqué que le temps d'exécution était trop long donc en faisant un debug, le commande qui prenait le plus de temps (la quasi totalité du temps total est la ligne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("base").Columns("B").Calculate
    et c'est justement celle qui contient la formule countif



    une suggestion ?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Une idée, oui, déjà en mettant en début de macro, et si ce n'est déjà fait,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenUpdating
    que tu repasses à True en fin de macro.
    Ensuite, exécute ton Calculate sur la plage de cellules, non sur la colonne entière.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("base").Range("B1:B" & range("B65536).end(xlup).row).calculate
    Ça devrait améliorer "un peu" les choses
    Tu dis
    A+

  3. #3
    Membre expérimenté Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Par défaut
    Bonjour,

    Autre solution alternative en VBA:
    Tu réalise une double boucle avec un compteur qui calculera le nombre d'occurence de tes lignes pour chacune des valeurs que tu souhaite compter. L'avantage est que ton fichier n'aura pas de formule et tournera plus vite. L'inconvénient est que ton comptage ne sera pas mis à jour qu'avec la macro.

    Have a nice day

  4. #4
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    merci,
    le screen update je l'enlève toujours

    Application.Calculation est sur manuelle et je fait le calcul à la fin seulement pour les colonnes que je souhaite, mais je me dis

    vu que j'ai 24000 ligne et que je veux appliquer la formule pour toutes les ligne je vais avoir 24000*24000 comparaisons .... non ?

    je me dis c'est pas ennorme .... enfin ça ne devrais pas prendre 3min de calcul ... non ?

  5. #5
    Membre expérimenté Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Par défaut
    Re^^
    Ne serait il pas mieux que tu repartisse sur 2 Feuilles.
    Je m'explique une que l'on appelera Base avec Toutes tes lignes.
    L'autre compteur, ou tu laissera tes lignes en supprimant tous les doublons. (via une petite macro evidement :p )
    Le temps de calcul serait alors plus leger.

  6. #6
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    je n'ai jamais dis que je voulais les supprimer !!!, mais il ya une colonne REF. (Référence), et la colonne qui est à coter j'ai envie de savoir combien de fois cette référence à été utilisé (cité), par moment j'ai des feuilles de 50000 lignes, je n'ai pas eu à les utilisées pour le moment mais je me dis que si un jour..... le PC plantera pendant un cart d'heure le temps de me donner un résultat et franchement ..... c'est pas bien jolie , vous êtes d'accord!

  7. #7
    Membre expérimenté Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Par défaut
    Nan je ne te dit pas de les supprimers, mais de faire sur une feuille annexe, un lexique de toute les references a chercher sans les doublons. Et c'est sur cette feuille que tu comptera tes occurences^^
    Ca evitera de calculer ton nombre d'occurences par doublons^^

    Ou sinon je viens d'avoir une idée pourquoi pas un Tableau Croisé Dynamique^^ A voir je pense que ca peut marcher et c'est très rapide^^

Discussions similaires

  1. countif comment l'utiliser
    Par xema972 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/10/2011, 23h10
  2. [XL-2000] Utiliser la fonction CountIf() en VBA
    Par Tempio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/04/2011, 17h11
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo