Sub TrouverMotParArray()
Dim LigneLue%, LigneEcrite%, Mot$, Début%, Tablo, TabloOut, T0
T0 = Timer ' Mémorisation temps de départ
Range("B10:C10000").ClearContents ' Effacement des anciennes valeurs
Range("C5:C7").ClearContents
LigneLue = 1 ' Init pointeur de lecture dans array Tablo
LigneEcrite = 0 ' Init pointeur d'écriture dans array TabloOut
Mot = Range("C2") ' Lecture du mot à rechercher
Début = 0
With Sheets("012-MATERIAUX_SIMC_SAS") ' En utilisant cette page
DL = .Range("A65500").End(xlUp).Row ' Calcul de la dernière ligne utilisée
Tablo = .Range("A1:B" & DL) ' Transfert du tableau dans un array ( tableau VBA )
ReDim TabloOut(UBound(Tablo), 1)
For i = 1 To UBound(Tablo) ' Pour toutes les lignes du tableau, UBound(Tablo) donne la dernière ligne
If Tablo(i, 1) = Mot Then ' Si Mot trouvé
TabloOut(LigneEcrite, 0) = i - Début ' Calculer écart et l'écrire
TabloOut(LigneEcrite, 1) = Tablo(i, 2) ' Ecrire le mot trouvé
Début = i ' Re init de début
LigneEcrite = LigneEcrite + 1 ' Incrément ligne d'écriture
End If
Next i
End With
Range("C5") = UBound(Tablo) ' Ecrire le nombre de lignes trouvées
Range("C6") = LigneEcrite ' Ecrire le nombre d'occrence trouvées.
Range("C7") = Format(1000 * (Timer - T0), "0 ms") ' Ecrire le temps d'éxécution
Range("B10").Resize(UBound(TabloOut, 1), 2) = TabloOut ' Transfert de TabloOut dans la feuille
End Sub