Bonjour Flavie, Jean-Marie
Très interressant votre fil, si je peux me permettre, voici une version corrigée :
Option Explicit
Sub Flavie_JeanMarie()
'Dim vCombien As Long '<<< Superflu
'Dim NbLignes As Long '<<< SuperFlu
Dim S As Long
Dim vFois As Byte '<<< As Long est SurDimensionné, si plus de 255 retours alors As Integer
Dim TabValeurs As Variant 'Déclaration d'un tableau dynamique <<< NON PAS DYNAMIQUE !!
Dim vRecherche As String '<<< NON PAS VARIANT
'NbLignes = Worksheets("ARCHIVE").Range("A65536").End(xlUp).Row '<<< SuperFlu
With Worksheets("ARCHIVE")
TabValeurs = .Range("A1:A" & .Range("A65536").End(xlUp).Row) '<<< Tout en une étape
End With
vRecherche = Worksheets("DEBUT").Range("I9")
For S = 1 To UBound(TabValeurs)
If TabValeurs(S, 1) = vRecherche Then
vFois = vFois + 1
' vCombien = S '<<< SuperFlu
End If
Next S
MsgBox "La String " & vRecherche & " a été trouvée " & vFois & " fois, dans un tableau de " & S - 1 & " enregistrements"
End Sub
En fait on peut aller bien plus directement comme ceci...
Quelques Explications :
¤ Un Tableau Variant de Plage (comme ici "TabValeurs") n'est pas une Dynamic Array (Pour une Dynamique Array il est précisé les ()... comme dans le Post de Jean-Marie du 09-08-04 12:33
¤ Dans ce Cas on n'a pas besoin de trouver la dernière ligne "NbLignes" puisque qu'on peut dimensionner la Plage directement.
¤ La Variable "vCombien" est superflue, vu qu'on a la même chose dans "S", la seukle différence c'est qu'ayant un "Next" de plus en sortie, il faut penser à la synchroniser avec moins 1...
¤La variable "vRecherche" n'est pas Variant mais juste String, en fait même Variant peut créer des surprises selon ce que l'on cherche...
Voilà en espérant vous avoir éclairci un peu.
Bonne Journée
@+Thierry