Function FindAll(ByVal sText As String, ByRef oSht As Worksheet, ByRef sRange As String, ByRef arMatches() As String) As Boolean ' -------------------------------------------------------------------------------------------------------------- ' FindAll - To find all instances of the1 given string and return the row numbers. ' If there are not any matches the function will return false ' -------------------------------------------------------------------------------------------------------------- On Error GoTo Err_Trap Dim rFnd As Range ' Range Object Dim iArr As Integer ' Counter for Array Dim rFirstAddress ' Address of the First Find ' ----------------- ' Clear the Array ' ----------------- Erase arMatches Set rFnd = oSht.Range(sRange).Find(what:=sText, LookIn:=xlValues, lookAt:=xlPart) If Not rFnd Is Nothing Then rFirstAddress = rFnd.Address Do Until rFnd Is Nothing iArr = iArr + 1 ReDim Preserve arMatches(iArr) arMatches(iArr) = rFnd.Row 'rFnd.Address pour adresse complete ' rFnd.Row Pour N° de ligne Set rFnd = oSht.Range(sRange).FindNext(rFnd) If rFnd.Address = rFirstAddress Then Exit Do ' Do not allow wrapped search Loop FindAll = True Else ' ---------------------- ' No Value is Found ' ---------------------- FindAll = False End If ' ----------------------- ' Error Handling ' ----------------------- Err_Trap: If Err <> 0 Then MsgBox Err.Number & " " & Err.Description, vbInformation, "Find All" Err.Clear FindAll = False Exit Function End If End Function Sub Exemple_util_Findall() 'Recherche dans la feuille Feuil1 de toutes les cellules contenant ' le mot : test 'variable tableau pour la fonction Findall Dim arTemp() As String 'Valeur cherchée Dim ValCherchee As String ValCherchee = "test" 'Nom de la feuille où se fait la recherche Dim Nom_Feuil As String Nom_Feuil = "Feuil1" '--------------------------------------------------------------- bFound = FindAll(ValCherchee, Sheets(Nom_Feuil), ma_plage, arTemp()) '--------------------------------------------------------------- If bFound = True Then 'si on a trouvé des valeurs... Debug.Print "Nb occurences : " & UBound(arTemp) For X = 1 To UBound(arTemp) 'Numéros de lignes ou le text a été trouvé: Debug.Print arTemp(X) Next End If End Sub
Sub masquerFeuilles() Dim Sh As Worksheet 'On boucle sur les feuilles du classeur For Each Sh In ThisWorkbook.Sheets 'on ne peut masquer les feuilles que si il en reste au moins une.. ' Et si le nom de la feuille différent de DATA If Sh.Name <> "DATA" And NbFeuilVisible > 1 Then Sh.Visible = xlSheetHidden End If Next End Sub Function NbFeuilVisible() 'fonction permettant de connaitre le nombre de feuilles visibles Dim Sh As Worksheet Dim nbF As Integer 'On boucle sur les feuilles du classeur For Each Sh In ThisWorkbook.Sheets If Sh.Visible = xlSheetVisible Then nbF = nbF + 1 End If Next NbFeuilVisible = nbF End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question