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 :
Mes soucis/Questions :
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
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 matriculeClick sur bouton recherchesi 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.
Partager