Bonjour à tous,
Je cherche à obtenir le comportement suivant avec deux plages A et B : pour chaque cellule X de la page A, j'ajoute dans la cellule suivante la valeur "ok" si une des cellules Y de la plage B est contenue dans la cellule X.
J'ai testé plein de trucs sans grand succès et suis arrivé à sortir cette macro qui semble fonctionner mais demande beaucoup de ressources (j'ai plus de 10 000 éléments par plage) :
Quelqu'un saurait-il comment optimiser tout ça ?
Merci par avance à tous ceux qui se penchent sur la question.
Je cherche à obtenir le comportement suivant avec deux plages A et B : pour chaque cellule X de la page A, j'ajoute dans la cellule suivante la valeur "ok" si une des cellules Y de la plage B est contenue dans la cellule X.
J'ai testé plein de trucs sans grand succès et suis arrivé à sortir cette macro qui semble fonctionner mais demande beaucoup de ressources (j'ai plus de 10 000 éléments par plage) :
Code:
Sub test()
Dim celb As Range 'déclare la variable celb (cellule de la plage B)
Dim cela As Range 'déclare la variable cela (cellule de la plage A)
Dim lg As Byte 'déclare la variable lg (LonGueur)
'boucle 1 : sur toutes les cellules de la plage A
For Each celb In Sheets("Feuil1").Range("A3:A10745")
'boucle 2 : sur toutes les cellules de la plage B
For Each cela In Sheets("Feuil2").Range("B2:B64371")
'définit la variable lg (position, en nombre de caractères, du texte de cela dans celb)
lg = InStrRev(celb.Value, cela.Value, -1, vbTextCompare)
If lg > 0 Then ' si lg est positif (donc si le texte de cela existe dans celb)
celb.Offset(0, 1).Value = "ok" 'place en colonne B la valeur
Exit For ' sort de la boucle 2
End If ' fin de la condition 1
Next cela 'prochaine cellule cela de la boucle 2
Next celb 'prochaine cellule celb de la boucle 1
End Sub
Quelqu'un saurait-il comment optimiser tout ça ?
Merci par avance à tous ceux qui se penchent sur la question.
Dernière édition: