Bonjour Monique, Thomas
Malgré que je préfère les mises en application par formules (on ne se refait pas), un très beau boulot de Monique. je ne pense pas au vue du nombre de données, que la solution réside par les formules. Donc je te propose une solution par VBA
Public Sub ExtractionDico ()
Dim vFois, vCombien As Long 'Va contenir le résultat
Dim TabValeurs As Variant 'Déclaration d'un tableau dynamique
Dim TabRetour() As Variant 'Declaration d'un tableau à longueur variable
Dim NbLignes As Long
Dim I As Long, J As Long, L As Long
Dim vRecherche As Variant
Dim vLong As Byte
TabValeurs = Worksheets("dico").UsedRange 'met toutes les valeurs dans le tableau dynamique
with Worksheets("Recherche")
vRecherche = .Range("B2")
vLong=.Range("B1")
end with
L = 0
'Effacer les anciens mots
'ATTENTION tous données en dessous de A6 sont supprimées
Range("A6:A" & Range("A65536").end(xlUp).row).clearcontents
For I = 1 To UBound(TabValeurs, 1)
For J = 1 To UBound(TabValeurs, 2)
If Mid(TabValeurs(I, J), 1, Len(vRecherche)) = vRecherche and Len(TabValeurs(I, J)) >= vLong Then
If Int(Rnd() * 3) = 2 Then 'Test aléatoire évite d'avoir toujours les mêmes
ReDim Preserve TabRetour(L) 'Ajoute une donnée au tableau dynamique
TabRetour(L) = TabValeurs(I, J) 'Place la valeur dans la nouvelle du tableau
L = L + 1
End If
End If
Next J
Next I
'Place les données du tableau dynamique dans une plage de cellule variable
Range("A6:A" & UBound(TabRetour) + 5).Value = Application.Transpose(TabRetour)
End Sub
Je voudrais remercie les t'chateurs qui mon aiguillé et corrigé les codes tout au long de la journée, ils se reconnaîtrons. Merci, Merci
@+Jean-Marie