Problème de lenteur .

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 !

murainesouspatate

XLDnaute Occasionnel
Bonjour,
je me trouve bien ennuyé dans mon travail,
J'effectue des extractions de fichier brut à retravailler pour faire une base de donnée sous Access.
Pour retravailler mon fichier brut , je fais une mise en forme qui dure presque 1h15, la plus longue (suppression des lignes vides).
Celui-ci comprend 38015 lignes et presque une sur deux de vide.
Pourriez vous me donner une astuce pour diminuer ce temps ?

voici ma macro :

Sub DétruireLigne()
derniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = derniereLigne To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub
 
Re : Problème de lenteur .

Bonjour,
Mon tableau commence en A2 contient 24207 lignes et 42 colonnes
je met au propre le tableau en éliminant les lignes et colonnes vides.
Il me servira de base de données pour un tableau access, et en même temps un tableau de visu pour les utilisateur en fonction de leurs divisions afin de retrouver du matériel en un coup d'oeil.
La mise au propre comprend aussi une couleur différente 1 ligne sur 2 , un quadrillage par cellule , filtres automatique sur la ligne 1 , un tri descendant de la 1ère colonne et un ajustage des colonnes.

En un deuxième temps , il fera parti d'un des tableaux access qui servira à sortir des bilans mensuels (chez nous nous appelons ça des tableaux de bord) sur des retards ou des attendus de matériels pour des vérifications métrologiques.

C'est pour cela que je recherche la meilleur façon de gagner du temps sur la macro qui fonctionne bien.

PS: je travaille dans le domaine aéronautique en laboratoire métrologique.

Cordialement.
 
Re : Problème de lenteur .

😎Bonjour laetitia,

Quelques infos supplémentaires:
fichier extrait en brut contenant 38500 lignes et 42 colonnes.

En un premier temps, je supprime les lignes et colonnes vides.
il démarre sur la cellule A2. Je lui applique un filtre automatique, j'ajuste les colonnes,je colore 1 ligne sur 2 pour plus de clarté,
je fais un quadrillage complet du tableau,je fige les volets ligne 1 et mon tableau est prêt à être exploité par un opérateur en métrologie.

En un deuxième temps, ce même tableau me servira pour un autre programme access afin de sortir des tableaux de bord (retards, travail fait, travaille en prévision sur des vérification métrologique à venir sur du matériel aéronautique).

C'est pour cela que je cherche à gagner du temps sur l'exécution de la macro, 1h30 c'est trop long !
Il est vrai qu'au boulot nous n'avons pas des bêtes de course comme pc .

Cordialement .
 
Re : Problème de lenteur .

re, deja pour simplifier au depart
Sub es()
Dim c
Application.ScreenUpdating = False
Range("A2" & ":iv" & Cells.Find("*", , , , , xlPrevious).Row).Sort Key1:=Range("a2"), Order1:=xlAscending, Header:=xlGuess
For c = Cells.Find("*", , , , , xlPrevious).Column To 1 Step -1
If Application.CountA(Columns(c)) = 0 Then Columns(c).Delete
Next c
End Sub

code brut supprime les lignes vides & colonnes vide rows variable colonne je vais jusqu'a iv pas de risque🙂

apres on verra ben!! pour le reste plus le temps de rester week-end oblige
 
Re : Problème de lenteur .

Pour muraine

comprends pas cette erreur, peut être du à excel 2007 ?
j'ai modifié le code pour éviter d'appeler la totalité de la feuille

@+

Code:
Sub Supprimer_Lignes_Vides()
    'définition des variables
    Dim Compteur As Long, Compteur2 As Long, Compteur3 As Integer
    Dim Tab_Donnees As Variant, Tab_Donnees2 As Variant
    Dim Der_Cel As Range
    
    'désactivation de l'affichage écran pour gagner en rapidité
    Application.ScreenUpdating = False
    
    'désactivation du calcul automatique pour gagner en rapidité
    Application.Calculation = xlCalculationManual
    
    Set Der_Cel = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell)
    ReDim Tab_Donnees(1 To Der_Cel.Row, 1 To Der_Cel.Column)
    Tab_Donnees2 = ActiveSheet.Range("A1:" & Der_Cel.Address).Value
    Compteur2 = 0
    
    For Compteur = 1 To Der_Cel.Row
        If Not Application.CountA(ActiveSheet.Rows(Compteur)) = 0 Then
            Compteur2 = Compteur2 + 1
            For Compteur3 = 1 To Der_Cel.Column
                Tab_Donnees(Compteur2, Compteur3) = Tab_Donnees2(Compteur, Compteur3)
            Next Compteur3
        End If
    Next Compteur
    ActiveSheet.Range("A1:" & Der_Cel.Address).Value = Tab_Donnees
    
    'réactivation de l'affichage écran
    Application.ScreenUpdating = True
    
    'réactivation du calcul automatique
    Application.Calculation = xlCalculationAutomatic
    
End Sub
 
Re : Problème de lenteur .

re,tous🙂
tu peus faire un truc comme cela moins de 2 secondes chez moi

Code:
Sub es()
 Dim c As Long
 With Application
 .Calculation = xlCalculationManual: .ScreenUpdating = False: .DisplayAlerts = False
 ActiveSheet.UsedRange.Sort Key1:=[A2], Order1:=xlAscending, Header:=xlGuess
 For c = Cells.Find("*", , , , , xlPrevious).Column To 1 Step -1
 If Application.CountA(Columns(c)) = 0 Then Columns(c).Delete
 Next c
 ActiveSheet.ListObjects.Add(xlSrcRange, ActiveSheet.UsedRange, , xlNo).Name = "Tableau3"
 ActiveSheet.UsedRange
 ActiveSheet.ListObjects("Tableau3").TableStyle = "TableStyleMedium2"
 Range("a2").Select
 ActiveWindow.FreezePanes = True
 .Calculation = xlCalculationAutomatic: .ScreenUpdating = True: .DisplayAlerts = True
 End With
End Sub

ps: tu aurais pu preciser qu'un tri marchais cela evite de X les posts
 
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
5
Affichages
909
S
  • Résolu(e)
Réponses
6
Affichages
2 K
Serge6926
S
L
Réponses
9
Affichages
1 K
O
  • Question Question
Microsoft 365 Problème Exit sub
Réponses
9
Affichages
1 K
omario1995
O
N
Réponses
5
Affichages
3 K
Nicocotte125
N
L
Réponses
6
Affichages
2 K
lukes67
L
A
Réponses
3
Affichages
2 K
Alex6942
A
Réponses
6
Affichages
1 K
G
Réponses
9
Affichages
1 K
Réponses
6
Affichages
1 K
Retour