1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| Sub Recherche()
Dim Message, Titre, ValeurRecherchee
Application.ScreenUpdating = False
Dim Col_Fr As Long, Col_An As Long, Lig_Res As Long
Dim c As Long, Cpt As Long, i As Long
Dim Lig_v As Long, Col_v As Long
Dim v As Object
Message = "Quelle est la valeur recherchée"
Titre = "Valeur recherchée"
ValeurRecherchee = UCase(InputBox(Message, Titre)) 'Demande quelle est la valeur à rechercher
Col_Fr = 2 'colonne des résultats pour le fichier français
Col_An = 3 'colonne des résultats pour le fichier anglais
ReDim Valeur(0) As String
ReDim Trouve(0) As String
For c = 1 To 2
If c = 1 Then Classeur = "Français.xlsx" Else Classeur = "Anglais.xlsx"
Windows(Classeur).Activate 'on active le classeur
For i = 1 To Sheets.Count 'on passe toutes les feuilles en revue
'Cpt = ""
Set v = Sheets(i).Cells.Find(ValeurRecherchee, LookIn:=xlValues, lookat:=xlPart) 'on cherche la valeur
If Not v Is Nothing Then 'si la valeur est trouvée
Lig_v = Sheets(i).Cells(v.Row, "A").MergeArea.Cells(1, 1).Value 'on récupère la valeur de la cellule fusionnée en colonne A
Col_v = Sheets(i).Cells(2, v.Column).MergeArea.Cells(1, 1).Value 'on récupère la valeur de la cellule fusionnée en ligne 2
Valeur(Cpt) = Sheets(i).Name & Lig_v & Col_v 'on associe le nom de la feuille avec celles de la ligne et de la colonne
Trouve(Cpt) = Sheets(i).Cells(v.Row, v.Column) 'on récupère la valeur recherchée
Cpt = Cpt + 1 'incrémentation du compteur des valeurs trouvées
ReDim Preserve Valeur(Cpt)
ReDim Preserve Trouve(Cpt)
End If
Next i
Windows("Resultats.xlsm").Activate
If Cpt <> 0 Then
If c = 1 Then
Lig_Res = Sheets("Res").Range("A" & Rows.Count).End(xlUp).Row + 1 'recherche de la première ligne libre colonne "français"
Sheets("Res").Cells(Lig_Res, Col_Fr).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Valeur) 'restitution des valeurs dans le classeur "Résultats"
Else
Lig_Res = Sheets("Res").Range("A" & Rows.Count).End(xlUp).Row + 1 'recherche de la première ligne libre colonne "anglais"
Sheets("Res").Cells(Lig_Res, Col_An).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Valeur) 'restitution des valeurs dans le classeur "Résultats"
End If
'Sheets("Res").Cells(Lig_Res, "A") = ValeurRecherchee
Sheets("Res").Cells(Lig_Res, 1).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Trouve) 'restitution des valeurs dans le classeur "Résultats"
Cpt = 0
End If
Next c
Set v = Nothing
End Sub |
Partager