Accelerer l'execution d'une macro

Delux

XLDnaute Occasionnel
Bonjour a tous,

Desole pour les accents je travaille sur qwerty.

Je commence a maitriser de plus en plus les macros grace a ce formidable forum, mais mon niveau ne me permet pas toujours d'obtenir des resultats vrament efficaces.

Je vous explique mon probleme:
J'ai un tableau qui s'etend de la colonne A a la colonne N. Dans celui-ci, toutes les cellules de chaque ligne ne sont pas toutes remplies.
Je souhaite donc effectuer un test qui va verifier ligne par ligne si une cellule est vide, et si cela se touve etre le cas, couper cette ligne et la coller sur une nouvelle page, pour me permettre d'obtenir un tableau propre sans ligne vide et une feuille regroupant toutes les lignes dont certaines informations sont manquantes.

Pour tester cela j'ai donc fait ce code :

Code:
Sub Export_blanks()

Dim Cel As Range
Dim mySource As Range
Dim Lg As Integer

Application.ScreenUpdating = False

Set mySource = Sheet1.Range("A5:N" & [A65536].End(xlUp).Row)

Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "TER blanks info"
Sheets("TER").Select

Lg = 5 'Activation of the 5th line

For Each Cel In mySource
    If Cel.Value = "" Then
        Sheet1.Range("X" & Lg).Formula = "=COUNTIF(A" & Cel.Row & ":N" & Cel.Row & ", """")"
        Lg = Lg + 1
    End If
    Next

End Sub

Le code reste a terminer pour le Couper/Coller sur une nouvelle feuille.
Cela fonctionne mais comme je possede plus de 10000 lignes, cela prend enormement de temps.

Pourriez-vous m'expliquer comment raccourcir le temps d'execution?

En vous remerciant par avance.

Cordialement,

Delux
 

Fred0o

XLDnaute Barbatruc
Re : Accelerer l'execution d'une macro

Bonjour Delux,

Voici une macro qui doit être plus rapide, à tester :
VB:
Sub Export_blanks()
    Dim mySource As Range
    Application.ScreenUpdating = False
    Set mySource = Sheet1.Range("A5:N" & [A65536].End(xlUp).Row)
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "TER blanks info"
    Sheets("TER").Select
    Sheet1.Range("X5:X" & mySource.Rows.Count + 4).FormulaR1C1 = "=COUNTIF(RC[-23]:RC[-10], """")"
End Sub

A+
 

Delux

XLDnaute Occasionnel
Re : Accelerer l'execution d'une macro

Re,

Non je ne peux pas mettre de fichier exemple car ma question est generale.

Par exemple, si je lance la macro suivante, l'execution prend enormement de temps. Je voulais donc savoir comment fait-on, si possible, pour accelerer l'execution de la macro?

Code:
Sub Import_Tag()
'Import informations from sources with TRIM

Dim Cell As Range
Dim mySource As Range
Dim myCible As Range
Dim Lg As Integer

Application.ScreenUpdating = False

Set mySource = Sheet3.Range("A4:A" & [A65536].End(xlUp).Row)
Set myCible = Sheet1.Range("A5:M" & [A65536].End(xlUp).Row)

myCible.ClearContents

Lg = 5 'Activation of the 5th line

For Each Cell In mySource
    If Cell.Value <> "" Then
        Sheet1.Range("A" & Lg) = Application.Trim(Sheet3.Range("F" & Cell.Row)) 'Tag Number
        Sheet1.Range("B" & Lg) = Application.Trim(Sheet3.Range("G" & Cell.Row)) 'Tag Description
        Sheet1.Range("C" & Lg) = Application.Trim(Sheet3.Range("AY" & Cell.Row)) 'Drawing Number
        Sheet1.Range("D" & Lg) = Application.Trim(Sheet3.Range("I" & Cell.Row)) 'EIS Class (equipment type)
        Sheet1.Range("E" & Lg) = Application.Trim(Sheet3.Range("J" & Cell.Row)) 'Superior Floc
        Sheet1.Range("F" & Lg) = Application.Trim(Sheet3.Range("K" & Cell.Row)) 'Unit
        Sheet1.Range("I" & Lg) = Application.Trim(Sheet3.Range("AW" & Cell.Row)) 'Manufacturer Name
        Sheet1.Range("J" & Lg) = Application.Trim(Sheet3.Range("O" & Cell.Row)) 'Weight
        Sheet1.Range("K" & Lg) = Application.Trim(Sheet3.Range("AB" & Cell.Row)) 'PO Number
        Lg = Lg + 1
    End If
    Next

End Sub

Cette macro ne fait que faire un copier/coller, mais elle prend un temps fou.

Si vous avez une solution generale je suis prenneur :)

Cordialement,

Delux
 

pierrejean

XLDnaute Barbatruc
Re : Accelerer l'execution d'une macro

Re

Salut à tous

Même si la question est generale , nous nous faisons un devoir de tester nos solutions et il nous faudrait creer un fichier test
En sus tous les contributeurs pourraient evaluer les differentes versions
Pour ma part je ne peux pas mettre de solution generale !!!!
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87