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 :

Optimiser VBA insertion et copie de lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut Optimiser VBA insertion et copie de lignes
    Bonjour à tous

    Tout d'abord merci d'avance à ceux (celles) qui vont lire ce sujet.

    Mon problème est simple, j'ai une macro (bouton Valider) qui me sert à insérer une ligne et venir copier des données précedemment saisie (avec des cellules vérouillées qui contiennent des formules) dans cette même ligne et ainsi de suite.

    Cependant lorsque j'arrive vers 400 lignes c'est de plus en plus long à valider alors qu'avant tout se passe très bien, et sur l'ancien fichier (sous 2003) il y avait 5 fois plus de lignes et la validation était toujours aussi rapide(excel 2003 n'est plus présent sur les postes suite à une mise à jour serveur...)

    Je suis actuellement à environ 15s, il me semble que ça fait beaucoup pour seulement 400 lignes...

    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
    16
    17
    18
    19
    Sub Valider1()
    '
    ' Valider Macro
    '
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
     
    Rows("10:10").Insert Shift:=xlDown
    Rows("4:4").Copy
    Rows("10:10").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Rows("10:10").PasteSpecial Paste:=xlPasteFormats
    Range("t4:w4,y4,aa4:Ac4,Af4,Ah4,Aj4:Al4,Ao4,Aq4,At4:Au4").ClearContents
    Range("t4").Select
     
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
     
    End Sub
    Explication:
    Je sélectionne ma ligne 10, j'insère une ligne
    Je sélectionne la ligne 4, je copie les données puis je viens les copier en ligne 10
    Je supprime certaines données lignes 4 et j'en garde d'autres en mémoire
    Je viens ranger le curseur en t4 pour la prochaine saisie.

    Merci d'avance pour vos lumières
    Cdt

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut
    Bonjour à tous

    Je pense avoir trouvé.

    Dans ma ligne 4 j'ai de nombreuses mise en forme conditionnelle, lorsque je la copie en ligne 10 les mises en formes condi' se copient aussi. Du coup plus le temps passe et plus la copie par la macro est longue...
    En effet lorsque je supprime toute les mises en formes conditi' le temps de validation est de 1s contre 40s pour 35000 lignes !!!

    J'aimerais donc savoir s'il est possible d'ajouter une ligne dans le VBA qui me permettrait de copier que "la couleur de remplissage" (donnée par la mise en forme condi') et non directement les formules de mes mises en forme conditionnelle ?!

    Peut être quelque chose du style PasteSpecial Paste:=xlPaste...
    Mon code est déjà présent un peu plus haut.

    Merci d'avance !

  3. #3
    Membre éclairé Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Par défaut
    Bonjour,

    Je ne sais pas lequel xlPasteType tu as besoin mais j'ai trouvé sa : http://msdn.microsoft.com/fr-fr/library/ff837425.aspx

    (kiki, si tu passes sur ce topic, dsl de t'avoir piqué ton job)

Discussions similaires

  1. Optimiser l'insertion de très nombreuses lignes depuis .NET
    Par zegreatclan dans le forum Accès aux données
    Réponses: 3
    Dernier message: 12/10/2009, 08h05
  2. [VBA]Problème de copie de ligne
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/06/2007, 09h47
  3. [VBA-E] Selection et copy de lignes conditionelle.
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 17h58
  4. [VBA-E]insertion automatique d'une ligne dans un tableau
    Par janus82 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/04/2006, 15h42
  5. [VBA-E]sélec./copie lignes remplies vers feuille
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/01/2006, 15h35

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