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 :

Comment travailler sur des données stockées en mémoire, plutôt que sur une feuille [Toutes versions]


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 : 43
    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 Comment travailler sur des données stockées en mémoire, plutôt que sur une feuille
    Bonjour,

    Actuellement je suis en train d'apprendre VBA pour Excel par le biais d'un livre, et aussi grâce à vous sur ce forum

    Dans ce livre, l'auteur dit qu'un code VBA fonctionne plus rapidement en travaillant sur des données stocké en mémoire plutôt que sur une feuille

    Jusque là ok

    Mais dans mon cas je ne vois pas comment faire

    Car dans ma boite j'occuppe un poste de "chargé d'extraction", ça veut dire que je fais des extractions toute la journée puis je les remets en forme

    Voici ma méthode de travaille :

    Dans le logiciel d'extraction, je selectionne en format de sortie "Fichier Excel"

    Puis je développe une macro spécifique qui va remettre en forme ce fichier brut

    Dans les options de sorties, j'ai aussi "vers le presse papiers"

    Donc je comprends bien que c'est ce format de sortie qu'il faut privilégié, mais comme je ne vois pas les données, ça me semble abstrait comme technique

    Pourriez-vous me dire comment vous faite pour manipuler des données en mémoire ?

    Merci par avance

  2. #2
    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
    Bonjour
    Pour les mises en formes, tu n'as pas d'autre variantes que de travailler sur la feuille excel.
    Pour les opérations sur les valeurs des cellules par exemple, tu peux passer par un tableau intermédiaire, tu y travaille et enfin tu transmet le résultat sur la feuille. C'est en général plus rapide que de faire les mêmes opérations directement sur la feuille, surtout pour les quantités de données importantes.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  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 : 43
    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
    Est-ce que tu pourrais me donner un exemple d'opérations à l'aide d'un tableau intermédiaire stp ?

    Car j'ai encore un peu de mal avec les termes théorique, je comprends mieux lorsque je vois le code

    Merci

  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
    Par exemple; nous avons 70000 données numérique en colonne A et en colonne B on veux récupérer 2*A-5
    (Bon, c'est un mauvais exemple car en formule c'est direct)

    Teste ces 2 codes:
    1. Directement sur la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test1()
    Dim i As Long
     
    With Sheets("Feuil2")
        For i = 1 To 70000
            .Range("B" & i).Value = 2 * .Range("A" & i).Value - 5
        Next i
    End With
    End Sub
    2.A l'aide d'un tableau intermédiaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub Test2()
    Dim i As Long
    Dim Tb
     
    With Sheets("Feuil2")
        'On récuppère dans Tb les données de la colonne A (en bloc)
        Tb = .Range("A2:A70000")
        'On fait notre traitement sur le tableau Tb et non directement sur A2:A70000
        For i = 1 To UBound(Tb)
            Tb(i, 1) = 2 * Tb(i, 1) - 5
        Next i
        'On réinjecte les résultat (en bloc) sur la feuille
        .Range("B2:B70000") = Tb
    End With
    End Sub

    Edit: le premier code s'exécute en 23s, le deuxième en 0.35s
    D'où l'intérêt
    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 : 43
    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
    Excellent !!!!!!!!!!!

    je comprends maintenant !!!!


    Merci beaucoup pour tes explications qui vont m'aider à gagner beaucoup de temps (car je travaille souvent sur des fichiers de 91 000 lignes sur 13 colonnes) !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Récupérer des données dans doc.word pour mettre dans une feuille .xls
    Par casdidier dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2014, 11h33
  2. Réponses: 1
    Dernier message: 27/02/2012, 16h13
  3. [XL-2007] Appliquer des sous-totaux sur des données stockées en mémoire
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/04/2011, 10h07
  4. Stocker des données dans la mémoire pour exploitation sur feuilles excel
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/09/2008, 12h03
  5. Travailler sur des données qui doivent être triées
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/07/2003, 17h13

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