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 :

Mise à jour classeurS


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 84
    Par défaut Mise à jour classeurS
    Bonjour,
    J 'ai un problème de "durée" de macro, et c'est parce que je fais mon traitement un peu à la barbarre, je vous explique.
    J 'ai un fichier de reference (Listeref.xls) et mon fichier actuellement ouvert (Traitement mensuel).
    J 'ai sensiblement les même données dans mes deux fichiers aux colonnes A et B (Sur mon fichier de ref, les colonnes sont inversés)
    Les même données, à quelques erreurs près, c'est pourquoi sur mon ficher B je "met à jour" ces données par rapport à mon fichier A de référence.
    Le problème est que dans mon second fichier, j'ai plus de 26000 lignes, et le traitement met plus de 3 minutes à s'executer.
    Connaitrez vous un moyen d'accelérer ce processus ? J'ai déjà tenté de masquer certains processus (Display/Interative/..) mais ça ne change quasiment rien..
    Voici le code utilisé pour cette MAJ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DerniereLigne = Range("B65536").End(xlUp).Row
    FastRun (False)
    Set wsa = Workbooks("Listeref.xls").Sheets("région")
    DerniereSoc = wsa.Range("A65536").End(xlUp).Row
    For i = 2 To DerniereLigne
         For j = 2 To DerniereSoc
              If Range("A" & i) = wsa.Range("B" & j) Then
                   Range("B" & i) = wsa.Range("A" & j)
              End If
         Next J
    Next i
    Merci d'avance !

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux essayer avec la méthode Range.Find
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Application.ScreenUpdating = False
        Application.Calculation = xlManual
        DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
        FastRun (False)
        Set Wsa = Workbooks("Listeref.xls").Sheets("région")
        DerniereSoc = Wsa.Range("B" & Rows.Count).End(xlUp).Row
        For i = 2 To DerniereLigne
            Set C = Wsa.Range("B2:B" & DerniereSoc).Find(Range("A" & i), , xlValues, xlWhole)
            If Not C Is Nothing Then Range("B" & i) = C.Offset(0, -1)
        Next i
        Application.Calculation = xlAutomatic
    Cordialement.

Discussions similaires

  1. [Toutes versions] Macro pour mise à jour classeur contenant références circulaires
    Par Sankae dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/08/2013, 00h12
  2. Créer un fichier journal suite à mise à jour de classeur Excel
    Par tinkye_winkye dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/11/2007, 20h18
  3. Macro mise à jour de liens sur des classeurs externes (excel)
    Par Border_xls dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2007, 10h04
  4. Détection mise à jour d'un classeur
    Par hkpsyco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/10/2007, 08h20
  5. comment effectuer des mises à jour entre classeurs excel ?
    Par benjamin.garbolino dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2006, 00h51

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