XL 2016 moyen le plus rapide de copier plusieurs plages sur plusieurs feuilles sans time lag (delais)

  • Initiateur de la discussion Initiateur de la discussion chingilou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chingilou

XLDnaute Junior
bonjour je travail avec ce code pour transférer plusieurs rangées de cellules vers d'autres feuilles avec un ordre différend pour chaque feuille sans timelag
mais malheureusement il me copie aussi ce qui est au dessous du tableau (en dehors du tableau)
le tableau commence en cell 10.1 et se termine au maximum en cell 196.6
un conseil ?
VB:
Sub snb()
    Dim sn As Variant
    sn = Feuil1.Cells(10, 1).CurrentRegion.Offset(1)
    Feuil2.Cells(14, 1).Resize(UBound(sn), 4) = Application.Index(sn, Evaluate("row(7:" & UBound(sn) & ")"), Array(1, 2, 4, 3))
    Feuil3.Cells(14, 1).Resize(UBound(sn), 4) = Application.Index(sn, Evaluate("row(7:" & UBound(sn) & ")"), Array(1, 2, 5, 3))
    Feuil4.Cells(14, 1).Resize(UBound(sn), 4) = Application.Index(sn, Evaluate("row(7:" & UBound(sn) & ")"), Array(1, 2, 6, 3))
    Feuil5.Cells(19, 3).Resize(UBound(sn), 3) = Application.Index(sn, Evaluate("row(7:" & UBound(sn) & ")"), Array(1, 2, 4))
    Feuil5.Cells(19, 7).Resize(UBound(sn), 1) = Application.Index(sn, Evaluate("row(7:" & UBound(sn) & ")"), Array(3))
End Sub
 
Bonjour Chingilou,
Vraiment pas sur d'avoir bien compris.
Mais au moins cette macro ne donne pas des #N/A partout. 🙂
Code:
Sub snb()
    Dim sn As Variant, Taille%, Formule$
    sn = Feuil1.Cells(10, 1).CurrentRegion.Offset(1)
    Taille = UBound(sn) - 7
    Formule = "row(7:" & Taille + 7 & ")"
    Feuil2.Cells(14, 1).Resize(Taille, 4) = Application.Index(sn, Evaluate(Formule), Array(1, 2, 4, 3))
    Feuil3.Cells(14, 1).Resize(Taille, 4) = Application.Index(sn, Evaluate(Formule), Array(1, 2, 5, 3))
    Feuil4.Cells(14, 1).Resize(Taille, 4) = Application.Index(sn, Evaluate(Formule), Array(1, 2, 6, 3))
    Feuil5.Cells(19, 3).Resize(Taille, 3) = Application.Index(sn, Evaluate(Formule), Array(1, 2, 4))
    Feuil5.Cells(19, 7).Resize(Taille, 1) = Application.Index(sn, Evaluate(Formule), Array(3))
End Sub
Pour le fun, j'ai optimisé un peu. ( en passant ubound par une variable, ubound n'est évalué qu'une seule fois.)
 
Bonjour,
après ton initialisation sn jouate temporairement un sn.select et excute en pas-à-pas ... si le curentrégion te sélectionne une zone plus étendue que ce que tu veux, c'est que tes cellules adjacentes sont pas "Vides" de données ou propriétés.
Si tu te mets en feuill1!10,1 ... quand tu fait Ctrl + A à la main ... la sélection donne quoi ?

Avec un fichier exemple cela aurait été plus simple de t'aider ... mais bon
 
bonjour et merci pour la réponse et l'optimisation
Si tu te mets en feuill1!10,1 ... quand tu fait Ctrl + A à la main ... la sélection donne quoi ?

A2:L196 pouvez-vous expliquer ce que ca représente ?
ainsi que "Vides" de données ou propriétés.

les cellules concernées a espérer de ne pas être copier commencent en B200 et y'a rien entre 196 et 200

les cellules B10:F196 c'est des donnes pour remplir des proformas (a remplir manuellement) et aussi (pas encore su faitre) extraire les données de classeurs externes pour remplir ces cellules
je tacherai de donner un exemple merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
68
Affichages
8 K
Retour