Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Regrouper 2 macro très lentes

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 !

martinigi

XLDnaute Nouveau
Bonjour, je suis encore un peut débutant dans le monde du VBA et je bloque sur une macro. Résultat je doit l'exécuter en 2 fois et la macro est extrêmement lente de part la quantité de ligne à vérifier.
Merci de votre aide
Voici le code de mes macro :

Sub Macro12()
'Inscrit le code 89 ou 5
For i = 4 To 65000
If Cells(i, "C") = 1 Then Cells(i, "J").Value = 89 Else
If Cells(i, "J") = 89 Or Cells(i, "J") = "" Then If Cells(i, "C").Value = 1 Then Cells(i, "J").Value = 89 Else Cells(i, "J").Value = 5
Next i
End Sub

Sub macro13()
'Recherche les autre codes
For i = 4 To 65000
Cells(i, "K").Select
If Cells(i, "J") = 89 Then ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[4],Phases!R1C1:R100C6,3,FALSE)" Else 'colonne K
Next i
'Formules à integrer dans la macro
If Cells(i, "J") = 89 Then ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[3],Phases!R1C1:R100C6,4,FALSE)" Else 'colonne L
If Cells(i, "J") = 89 Then ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[2],Phases!R1C1:R100C6,5,FALSE)" Else 'colonne M
 
Hello

avec ceci peut etre?
VB:
Sub macro13()
application.screenupdating=false
'on cherche la dernière ligne
Fin = Sheets("Feuil3").UsedRange.Rows.Count

For i = 4 To Fin
    If Cells(i, "J") = 89 Then
        Cells(i, "K").FormulaR1C1 = "=VLOOKUP(RC[4],Phases!R1C1:R100C6,3,FALSE)" 'colonne K
        Cells(i, "L").FormulaR1C1 = "=VLOOKUP(RC[3],Phases!R1C1:R100C6,4,FALSE)" 'colonne L
        Cells(i, "M").FormulaR1C1 = "=VLOOKUP(RC[2],Phases!R1C1:R100C6,5,FALSE)" 'colonne M
    End If
Next i
application.screenupdating=true
End Sub
 
Bonsoir.
Je pense que je ferais quelque chose de plus rapide, comme ça :
VB:
Sub Macro12Et13()
With Intersect([4:65000], ActiveSheet.UsedRange)
   .Columns("AI").FormulaR1C1 = "=IF(RC3=1,89,IF(ISBLANK(RC10),5,RC10))"
   .Columns("J").Value = .Columns("AI").Value
   .Columns("AI").FormulaR1C1 = "=1/(RC10=89)"
   Intersect(.Columns("AI").SpecialCells(xlCellTypeFormulas, 1).EntireRow, .Columns("K:M")) _
      .FormulaR1C1 = "=VLOOKUP(RC15,Phases!R1C1:R100C6,COLUMN()-8,FALSE)"
   .Columns("AI").Delete: End With
End Sub
 
- 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
704
Réponses
4
Affichages
580
Réponses
8
Affichages
647
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Réponses
3
Affichages
834
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…