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 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 tabloAP(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
A+
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
2
Affichages
69
Réponses
4
Affichages
372
Réponses
2
Affichages
429
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
517
Retour