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

XL 2016 boucle VBA jusqu'à un nombre de lignes précis

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 !

MR.O

XLDnaute Junior
Bonjour à tous,

Je souhaiterais savoir comment définir une boucle jusqu'à 170 000 lignes par exemple.

Voici mon mon code mais il ne fonctionne que pour la première ligne :

Sub If_Conditions_Multiples()

If Range("AD2").Value = "CM" Then
Range("AP2").Value = Range("AC2") / 100
ElseIf Range("AD2").Value = "MM" Then
Range("AP2").Value = Range("AC2") / 1000
ElseIf Range("AD2").Value = "DE" Then
Range("AP2").Value = Range("AC2") / 10

End If

End Sub

Merci d'avance pour votre aide,

Cordialement,
 
Solution
Bonjour MR.O, Deadpool_CC

Avec 170 000 lignes il ne faut surtout pas traiter les cellules une par une.

Utiliser des tableaux VBA :
VB:
Sub If_Conditions_Multiples()
Dim tabloAC, tabloAD, tabloAP, i&
tabloAC = [AC2:AC170000] 'matrice, plus rapide
tabloAD = [AD2:AD170000] 'matrice, plus rapide
tabloAP = [AP2:AP170000] 'matrice, plus rapide
For i = 1 To UBound(tabloAC)
    If IsNumeric(tabloAC(i, 1)) Then
        If tabloAD(i, 1) = "CM" Then
            tabloAP(i, 1) = tabloAC(i, 1) / 100
        ElseIf tabloAD(i, 1) = "MM" Then
            tabloAP(i, 1) = tabloAC(i, 1) / 1000
        ElseIf tabloAD(i, 1) = "DE" Then
            tabloAP(i, 1) = tabloAC(i, 1) / 10
        End If
    End If
Next
[AP2:AP170000] = tabloAP 'restitution...
Bonjour MR.O, Deadpool_CC

Avec 170 000 lignes il ne faut surtout pas traiter les cellules une par une.

Utiliser des tableaux VBA :
VB:
Sub If_Conditions_Multiples()
Dim tabloAC, tabloAD, tabloAP, i&
tabloAC = [AC2:AC170000] 'matrice, plus rapide
tabloAD = [AD2:AD170000] 'matrice, plus rapide
tabloAP = [AP2:AP170000] 'matrice, plus rapide
For i = 1 To UBound(tabloAC)
    If IsNumeric(tabloAC(i, 1)) Then
        If tabloAD(i, 1) = "CM" Then
            tabloAP(i, 1) = tabloAC(i, 1) / 100
        ElseIf tabloAD(i, 1) = "MM" Then
            tabloAP(i, 1) = tabloAC(i, 1) / 1000
        ElseIf tabloAD(i, 1) = "DE" Then
            tabloAP(i, 1) = tabloAC(i, 1) / 10
        End If
    End If
Next
[AP2:AP170000] = tabloAP 'restitution
End Sub
Edit : corrigé une petite coquille.

A+
 
Dernière édition:
Bonjour Job75,

Merci beaucoup, cela fonctionne parfaitement.

encore merci,

Cordialement,
 
- 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
333
Réponses
2
Affichages
182
Réponses
4
Affichages
499
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…