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

XXXL

XLDnaute Nouveau
Hi everyone,

Débutant en macro je pars de l'enregistreur et j'essaie d'améliorer ma macro au fur et à mesure en fonction de ce que je trouve sur le fofo. Mais la, ma macro prend 3 plombes à s'exécuter, c'est surement à cause de la fonction recherv et je pensais utiliser la fonction find à la place, mais impossible d'avancer.
Ci joint mon code:
Code:
Sub A()
'
' A Macro
' Macro enregistrée le 06/09/2013 par sauphanm
'

'
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
    Range("B2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(RC[-1],'Prd en Offres'!R2C1:R65536C2,2,0)),"""",VLOOKUP(RC[-1],'Prd en Offres'!R2C1:R65536C2,2,0))"
    Range("B2").Select
    Selection.AutoFill Destination:=Range("B2:B59429")
    Range("B1").AutoFilter Field:=2, Criteria1:="<>"
    Range("B1").Sort Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub

Merci d'avance.
 
Re : Accélérer Macro

Bonjour XXXL,


modifie ton code comme ceci (ajout de 2 lignes en début et fin de code)
Code:
Sub A()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'
'
'
' ton code
'
'
'
'
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


à+
Philippe
 
Re : Accélérer Macro

Merci de ta réponse, mais j'avais mis l'ancienne version du code entre temps j'avais intégré ces 2 lignes mais ça reste toujours incoryablement long (40sec minimum...)
Code:
Sub Rep()
'
' Rep Macro
' Macro enregistrée le 06/09/2013 par sauphanm
'
Application.ScreenUpdating = False
Application.Calculation = xlManual


    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
    Range("B2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(RC[-1],'Prd en Offres'!R2C1:R65536C2,2,0)),"""",VLOOKUP(RC[-1],'Prd en Offres'!R2C1:R65536C2,2,0))"
    Range("B2").Select
    Selection.AutoFill Destination:=Range("B2:B59429")
    Range("B2:B59429").Select
    Range("B1").Select
    Range("A1:B59429").Sort Key1:=Range("B1"), Order1:=xlDescending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("B65").Select
    Selection.End(xlDown).Select
    Range("B59428").Select
    Selection.End(xlUp).Select
    Selection.End(xlDown).Select
    Range("B59201").Select
    
    Application.Calculation = xlAutomatic
Application.ScreenUpdating = True

End Sub
 
Re : Accélérer Macro

Re,


sans voir le fichier,

est-il vraiment nécessaire de sélectionner toute la colonne ?
remplace:
Columns("A:A").Select
par:
Range("A1:A" & Range("A65535").End(xlUp).Row).Select (tu vas gagner en temps d'exécution)

le tri doit-il se faire jusqu'à la ligne 59429 😕


et en fin de code, est-ce que tout cela est utile 😕
Selection.End(xlDown).Select
Range("B59428").Select
Selection.End(xlUp).Select
Selection.End(xlDown).Select
Range("B59201").Select



à+
Philippe
 
Re : Accélérer Macro

En fait non c'est juste par sécurité pour ne rien louper, mais j'ai bien avancé, avec le code ci dessous ma macro a un temps d'éxécution "acceptable" lol
Code:
Sub A()
'
' A Macro
' Macro enregistrée le 06/09/2013 par sauphanm
'

'
    
 i = 1
    While ActiveSheet.Cells(i, 1) <> NullString
 
    i = i + 1

    Wend

    
    Columns("A:A").Select

    ActiveSheet.Range("B2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(value(RC[-1]),'Prd en Offres'!R2C1:R65536C2,2,0)),,VLOOKUP(value(RC[-1]),'Prd en Offres'!R2C1:R65536C2,2,0))"
    ActiveSheet.Range("B2").Select
    Selection.AutoFill Destination:=ActiveSheet.Range(Cells(2, 2), Cells(i - 1, 2))
    
 
    
        Calculate
    
     Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd
    
        ActiveSheet.Range(Cells(1, 1), Cells(i - 1, 2)).Sort Key1:=ActiveSheet.Range("B1"), Order1:=xlDescending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal


    
End Sub
 
Re : Accélérer Macro

Re,

avec le code ci dessous ma macro a un temps d'éxécution "acceptable" lol
pas convaincu ! d'autant plus qu'il y a maintenant une partie du code concernant la conversion des données qui a disparu 😡

sans voir le fichier et sans connaître sa finalité, je ne saurai pas t'aider davantage

à+
Philippe
 
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
10
Affichages
705
Réponses
5
Affichages
639
Réponses
7
Affichages
752
Réponses
1
Affichages
439
  • Question Question
Microsoft 365 Formules
Réponses
2
Affichages
738
Réponses
22
Affichages
3 K
Réponses
2
Affichages
1 K
Retour