Code inachevé et très lent !!

BENNASR

XLDnaute Nouveau
bonjour
Je suis débutant en VBA et à l'aide de la net j'ai arrivé à développé ptite application de gestion de ma trésorerie
maintenant chui bloqué vu que ce code qui me permet d'éditer un extrait de chaque compte souffre de :
* très lent
* Copié les données depuis la cellule "A14" malgré que j'ai mis "A13" de la feuille "EDITION"
* Trie à l'inverse les données copiées depuis la feuille "mouvement"
merci d'avance pour un cou de main car chui bloqué
Code:
Sub GRAND_LIVRE()
 Dim plage As Range, cel As Range
    Application.ScreenUpdating = False
    valcherch = Sheets("EDITION").Range("B5")
    With Worksheets("Mouvement")
        derlig = .Range("A" & Rows.Count).End(xlUp).Row
        Set plage = .Range("A11:A" & derlig)
    End With
    For Each cel In plage
        If cel = valcherch Then
        cel(, 2).copy Worksheets("EDITION").Range("A13")
        cel(, 5).copy Worksheets("EDITION").Range("B13")
        cel(, 7).copy Worksheets("EDITION").Range("C13")
        cel(, 8).copy Worksheets("EDITION").Range("D13")
        Worksheets("EDITION").Range("A13").Select
        Selection.Insert Shift:=xlDown
        Worksheets("EDITION").Range("B13").Select
        Selection.Insert Shift:=xlDown
        Worksheets("EDITION").Range("c13").Select
        Selection.Insert Shift:=xlDown
        Worksheets("EDITION").Range("D13").Select
        Selection.Insert Shift:=xlDown
        End If
    Next cel
    Application.ScreenUpdating = True
End Sub
ci joint mon fichier simplifié avec des données fictives en souhaitant recevoir de l'aide
 

Pièces jointes

  • TRESORERIE TEST1.xlsm
    56 KB · Affichages: 17

Pierrot93

XLDnaute Barbatruc
Re : Code inachevé et très lent !!

Bonjour,

pas ouvert ton fichier, mais déjà en supprimant les "select" tu devrais gagner en rapidité...

Code:
Option Explicit
Sub GRAND_LIVRE()
  Dim plage As Range, cel As Range
     Application.ScreenUpdating = False
     valcherch = Sheets("EDITION").Range("B5")
     With Worksheets("Mouvement")
         derlig = .Range("A" & Rows.Count).End(xlUp).Row
         Set plage = .Range("A11:A" & derlig)
     End With
     For Each cel In plage
         If cel = valcherch Then
            cel(, 2).Copy Worksheets("EDITION").Range("A13")
            cel(, 5).Copy Worksheets("EDITION").Range("B13")
            cel(, 7).Copy Worksheets("EDITION").Range("C13")
            cel(, 8).Copy Worksheets("EDITION").Range("D13")
            Worksheets("EDITION").Range("A13").Insert Shift:=xlDown
            Worksheets("EDITION").Range("B13").Insert Shift:=xlDown
            Worksheets("EDITION").Range("c13").Insert Shift:=xlDown
            Worksheets("EDITION").Range("D13").Insert Shift:=xlDown
         End If
     Next cel
     Application.ScreenUpdating = True
 End Sub

bonne journée
@+
 

BENNASR

XLDnaute Nouveau
Re : Code inachevé et très lent !!

Merci pierrot93
super comme début mais pourquoi il commence de A14 et non pas A13 de la feuille "EDITION" comme indiqué dans le code ... aussi l'histoire du trie inverse à la feuille source "Mouvement"
Merci d'avance
 

Pierrot93

XLDnaute Barbatruc
Re : Code inachevé et très lent !!

Re,

regarde ceci :
Code:
Option Explicit
Sub GRAND_LIVRE()
Dim plage As Range, cel As Range
Dim valcherch As String, derlig As Long
    Application.ScreenUpdating = False
    valcherch = Sheets("EDITION").Range("B5")
    With Worksheets("Mouvement")
        derlig = .Range("A" & Rows.Count).End(xlUp).Row
        Set plage = .Range("A11:A" & derlig)
    End With
    For Each cel In plage
        If cel = valcherch Then
            cel(, 2).copy Worksheets("EDITION").Range("A13")
            cel(, 5).copy Worksheets("EDITION").Range("B13")
            cel(, 7).copy Worksheets("EDITION").Range("C13")
            cel(, 8).copy Worksheets("EDITION").Range("D13")
            Worksheets("EDITION").Rows(13).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
        End If
    Next cel
    Application.ScreenUpdating = True
End Sub

mais tu insère une ligne après enregistrement, ce qui te laisse penser que tu commence à la ligne 14 mais en fait tu commence bien à la 13... execute le code pas à pas, touche de fonction F8 dans l'éditeur vba...
 

BENNASR

XLDnaute Nouveau
Re : Code inachevé et très lent !!

Merci pour l'intérêt que t'as accordé à ma requête .. le code commence encore de la ligne 14 et encore les données en ordre inverse... bonne appétit ami .. je vais casser encore la tête et je vous informe des résultat
encore merci
 

Pierrot93

XLDnaute Barbatruc
Re : Code inachevé et très lent !!

Re,

Essaye ceci, attention la valeur "DATE" de l'onglet "EDITION" doit être positionnée en A12 et la cellule défusionnée... pas top en vba les cellules fusionnées ... Et un format date doit êgalement être appliqué à la colonne A puisque nous renvoyons maintenant que les valeurs...

Code:
Option Explicit
Sub GRAND_LIVRE()
Dim plage As Range, cel As Range
Dim valcherch As String, derlig As Long
    Application.ScreenUpdating = False
    valcherch = Sheets("EDITION").Range("B5")
    With Worksheets("Mouvement")
        derlig = .Range("A" & Rows.Count).End(xlUp).Row
        Set plage = .Range("A11:A" & derlig)
    End With
    For Each cel In plage
        If cel = valcherch Then
            Worksheets("EDITION").Cells(Rows.Count, 1).End(xlUp)(2) = cel(, 2)
            Worksheets("EDITION").Cells(Rows.Count, 1).End(xlUp)(1, 2) = cel(, 5)
            Worksheets("EDITION").Cells(Rows.Count, 1).End(xlUp)(1, 3) = cel(, 7)
            Worksheets("EDITION").Cells(Rows.Count, 1).End(xlUp)(1, 4) = cel(, 8)
        End If
    Next cel
    Application.ScreenUpdating = True
End Sub
 
Dernière édition:

Discussions similaires

Réponses
13
Affichages
2 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz