Bonjour à tous,

Je fais appel à votre expertise sur la création d’un formulaire avec une zone de recherche.

Je travaille sur des indicateurs de fiabilisation qui sont répertoriés dans un classeur Excel selon des catégories, chaque catégorie est dans un onglet distinct.

Je souhaiterai créer une zone de recherche qui puisse selon le matricule m’afficher dans un onglet ‘destination’ les lignes caractéristiques du matricule.

Un matricule peut avoir plusieurs indicateurs dans une ou plusieurs familles, la volumétrie des informations étant importante (une vingtaine d’onglet avec 10K ligne mini) l’option ctrl F n’est pas adapté.
Par ailleurs j’ai tenté dans l’onglet ‘destination’ de créer des colonnes avec des rechercheV , pas très visuel et peu pratique (beaucoup de doublons sur les matricules, peu malléable) mon Excel est sensé être utilisé par des collaborateurs avec un niveau info proche du ….

Voici comment je compte m’y prendre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
PrivateSub textBox1_Change()
 
Dim y As Long
Dim i As Long
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim sel As Object   ' cellule trouvée
Dim c As Integer    ' colonne
Dim f As Integer    ' feuille
Dim l As Long       ' ligne
Set Sh1 = ThisWorkbook.Sheets("Source")
Set Sh2 = ThisWorkbook.Sheets("Destination")
 
Sheets("Source").Activate
 
x = Sh1.Range("A65536").End(xlUp).Row
y = Sh2.Range("A65536").End(xlUp).Row + 1
 
For f = 1 To Sheets.Count   ' boucle feuilles
With Sheets(f)
    l = 1: c = 1
    Do                      ' recherche
        Set sel = .Cells.Find(What:=NumMatricule, after:=.Cells(l, c), _
            LookIn:=xlValues, LookAt:=xlPart, _
            SearchOrder:=xlByColumns, _
            SearchDirection:=xlNext, MatchCase:=False)
 
If sel Is Nothing Then Exit Do
        If sel.Column <= c And sel.Row <= l Then Exit Do
        c = sel.Column
        l = sel.Row
        n = n + 1       ' élément trouvé : traitement
    Loop
 
 
    If « Matricule » est dans un ou pls onglets Then
        Sh1.Range("A" & i & ":y" & i).Copy Destination:=Sh2.Range("A" & y)
        i = i + 1
Else Msgbox “pas de matricule correspondant”
    End If
    y = Sh2.Range("A" & Rows.Count).End(xlUp).Row + 1
Next
 
End Sub
Mes soucis/Questions :
1. L’incorporation de la macro devrait se faire dans ce type de private sub
Private Sub CommandButton1_Click()
…..
End Sub
Je rentre un matricule dans la zone de texte j’appuie sur le bouton magique avec la macro derrière. Je bloque sur cette étape
2. La recherche multi onglet, multi colonne de ma variable ‘matricule’

Je sais c’est (un tout petit peu ) le boxon donc pour résumer :
Zone de recherche saisie du matriculeClick sur bouton recherchesi trouvé dans onglets copier caractéristiques dans onglet ‘destination’sinon ‘matricule indisponible’.

J’espère avoir été assez claire (tout du moins plus que la macro ci-dessus )

Merci d’avance à tous les contributeurs.