XL 2016 OPTIMISATION CODE VBA

  • Initiateur de la discussion Initiateur de la discussion sevy1
  • 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 !

sevy1

XLDnaute Occasionnel
Bonjour à tous
J'ai un fichier avec deux onglets le premier est sous forme de plage et le second sous forme de tableau .
Je souhaiterais couper et coller les données de l'onglet 1 vers l'onglet 2 lorsque la date est saisie dans la colonne 13 de l'onglet 1. je ne coupe pas toute la ligne parce que dans l'onglet 2 j'ai 4 colonnes supplémentaires à la fin ou se trouvent les formules.
Mon Problème c'est que le code fonctionne mais il est excessivement lent car j'ai plus de 25000lignes dans l'onglet 1 comment puis-je améliorer ce code pour être rapide. Merci d'avance pour vos propositions

Code:
Dim sh1, sh2 As Worksheet
Sub Transfert_Donnees()
    Dim derlig, i, j As Long
    Set sh1 = Feuil4
    Set sh2 = PAYE
    derlig = sh2.Cells(Rows.Count, 1).End(xlUp).Row + 1
    j = sh1.Cells(Rows.Count, 1).End(xlUp).Row
    Application.ScreenUpdating = False
    For i = 2 To j
        If sh1.Cells(i, 9) > 0 Then
            sh1.Range(Cells(i, 1), Cells(i, 13)).Cut sh2.Cells(derlig, 1)
            derlig = derlig + 1
        End If
        Next
        For i = j To 2 Step -1
            If sh1.Cells(i, 1) = "" Then sh1.Range(Cells(i, 1), Cells(i, 13)).Delete shift:=xlUp
        Next
    Application.ScreenUpdating = True
End Sub
 
Bonjour à tous
Merci pour vos multiples solutions qui fonctionnent. Pour les explications j'ai bien compris que end (3) =end (xlup) après le (3) il y a soit 2 soit (1, 5) est ce à dire que on s arrêté à la ligne 2 pour la cas 1 et la ligne 1 pour le cas 2 commençant par le bas
 
Bonjour à tous

après le (3) il y a soit 2 soit (1, 5) est ce à dire que on s arrêté à la ligne 2 pour la cas 1 et la ligne 1 pour le cas 2 commençant par le bas

Chaque cellule de la feuille peut être vue comme la cellule (1,1) d'un tableau.
En disant Cells(3,2)(1,2) on dit:
Cells(3,2) = Cellule ($B$3)
La cellule $B$3(1,2) est la cellule sur la même ligne et sur la colonne à coté à droite soit $C$3

Donc, la partie
Code:
.Cells(.Rows.Count, 1).End(3)(1, 5)
Veux dire : la dernière cellule remplie en colonne 1 , même ligne, 5eme colonne. (dans ton exemple $E$8 )

Si on utilise
Code:
.Cells(.Rows.Count, 1).End(3)(2)
On dit La dernière cellule remplie en colonne 1 , ligne 2 soit la première cellule non remplie en colonne 1
On pourrait écrire
Code:
.Cells(.Rows.Count, 1).End(3)(2,1)
(ligne 2 colonne 1)

Cordialement
 
Dernière édition:
- 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
7
Affichages
215
Réponses
10
Affichages
286
Réponses
4
Affichages
194
Réponses
8
Affichages
474
Réponses
2
Affichages
207
Réponses
2
Affichages
124
Retour