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

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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.)
 

Deadpool_CC

XLDnaute Accro
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
 

chingilou

XLDnaute Junior
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
 

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 779
Membres
101 816
dernier inscrit
Jfrcs