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 :

Appliquer des sous-totaux sur des données stockées en mémoire


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut Appliquer des sous-totaux sur des données stockées en mémoire
    Bonjour,

    Suite à mon sujet (lien : http://www.developpez.net/forums/d10...lutot-feuille/ )

    J'essaie d'améliorer la rapidité des sous-totaux car je n'en peux plus d'attendre des heures (pour un fichier de 71 137 lignes il est arrivé à 20% au bout de... 30min )

    Voici ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ooooo()
    Application.ScreenUpdating = False
     
    Dim tb
     
    With ActiveWorkbook.ActiveSheet
        tb = .Range("a1:t70137")
        .Cells.Delete
        tb.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(12, 13, 15, 16, 17, 18, 19, 20), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
        .Range("a1") = tb
    End With
     
    Application.ScreenUpdating = True
    End Sub
    Mais ça ne fonctionne pas car il me dit "Objet Requis" à la ligne Subtotal

    Merci par avance pour votre aide

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Sans avoir etudié le reste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim tb as range
     
    With ActiveWorkbook.ActiveSheet
        set tb = .Range("a1:t70137").....
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Ca me donne le même message

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Il ne faut surtout pas se mélanger les pinceaux.
    Tu ne peux pas appliquer les méthodes d'un Range à une variable tableau.
    Exemple Subtotal pour ton cas.
    Cette méthode crée les sous-totaux de la plage (ou de la zone active si la plage ne comporte qu'une seule cellule).
    Syntaxe

    expression.Subtotal(GroupBy, Function, TotalList, Replace, PageBreaks, SummaryBelowData)

    expression Variable qui représente un objet Range.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Ok donc si je mets tb.Subtotal... il ne comprends pas car il attends une variable Range

    Alors comment je pourrais écrire mon code stp ?

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Améliorons ton code qui fais 30 minutes pour 20% du travail
    Je propose que tu mettes ce code en entier ici pour pouvoir améliorer ses performances.
    Il y a des choix à faire quand à l'utilisation des variables tableaux ou des fonctions innées d'Excel.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    C'est mon code en entier au dessus

    Mon seul but c'est d'ameliorer la rapidité des sous-totaux d'Excel

    J'ai été voir l'Admin de ma boite pour lui exposer mon soucis, alors il m'a mis tout seul sur un serveur pour bénéficier de toute la puissance disponible, mais c'est toujours aussi long

    Donc c'est bien la fonction Sous-total qui pose problème, car elle travaille directement sur la feuille

    Alors je me suis dit qu'il fallait ordonner à cette fonction de travailler sur des données stocké en memoire

  8. #8
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Je viens de lire dans mon livre qu'il existait les matrices multidimensionnelles

    Je vais faire des tests pour voir si c'est ça la clé

Discussions similaires

  1. [XL-2003] Tri sur des sous totaux
    Par devdev dans le forum Excel
    Réponses: 2
    Dernier message: 16/11/2011, 10h29
  2. [Toutes versions] Comment travailler sur des données stockées en mémoire, plutôt que sur une feuille
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/04/2011, 13h35
  3. Travailler sur des vues ou sur des tables, vs performance ?
    Par carjo dans le forum Administration
    Réponses: 3
    Dernier message: 06/02/2009, 13h46
  4. [MySQL] Comment faire des sous-totaux ?
    Par renaud26 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/02/2006, 15h56
  5. Problème d'id sur des sous formulaires.
    Par antier dans le forum Access
    Réponses: 4
    Dernier message: 07/01/2006, 16h53

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