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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| Dim f, choix(), Rng, Ncol
'Début Userform =========================================================================================================================================================
Private Sub UserForm_Initialize()
Set f = ActiveSheet
Dim TblTmp()
n = 0
For Each s In ActiveSheet.Shapes
If s.Type <> 8 And s.Type <> 13 Then
n = n + 1
ReDim Preserve TblTmp(1 To 2, 1 To n)
TblTmp(1, n) = s.Name
On Error Resume Next
tmp = Replace(Replace(s.TextFrame.Characters.Text, Chr(11), " - "), Chr(10), " - ") 'Remplace les retour ligne ou ENTER par un caractère
On Error GoTo 0
TblTmp(2, n) = tmp
ReDim Preserve choix(1 To n)
choix(n) = choix(n) & TblTmp(1, n) & " * " & TblTmp(2, n)
End If
Next s
Ncol = 2
Me.ListBox1.List = Application.Transpose(TblTmp)
BoutonToday.Caption = Now() 'Affiche la date du jour sur le BoutonToday
Me.TextBox1.SetFocus 'Place le curseur dans la textbox
End Sub
'Recherche multicritéres séparé par un espace
Private Sub TextBox1_Change()
On Error Resume Next 'Evite le beug lorsque l'on saisi un espace pour commencer
If Me.TextBox1 <> "" Then
mots = Split(Trim(Me.TextBox1), " ")
Tbl = choix
For I = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(I), True, vbTextCompare)
Next I
n = 0: Dim b()
For I = LBound(Tbl) To UBound(Tbl)
A = Split(Tbl(I), "*")
n = n + 1: ReDim Preserve b(1 To Ncol, 1 To n)
For k = 1 To Ncol
b(k, I + 1) = A(k - 1)
Next k
Next I
If n > 0 Then
ReDim Preserve b(1 To Ncol, 1 To n + 1)
Me.ListBox1.List = Application.Transpose(b)
Me.ListBox1.RemoveItem n
End If
Me.Label1.Caption = UBound(Tbl) + 1
Else
UserForm_Initialize
End If
End Sub
'Au clique sélectionne l'étiquette trouvée
Private Sub ListBox1_Click()
For k = 0 To Ncol - 1
Me("TextBox" & k + 2) = Me.ListBox1.Column(k)
Next k
adr = f.Shapes(Trim(Me.ListBox1)).TopLeftCell.Address 'Déplace le document pour rendre visible l'étiquette
Range(adr).Select 'Déplace le document pour rendre visible l'étiquette
f.Shapes(Trim(Me.ListBox1)).Select
End Sub
'Pour fermer l'UserForm avec le bouton ESC, le CommandButton1 est caché au bas de l'UserForm
'La propriété Cancel du CommandButton1 doit être à TRUE
Private Sub CommandButton1_Click()
Unload Me
End Sub
'Rechercher la date aujourd'hui et déplacer au centre de l'écran
Private Sub BoutonToday_Click()
With Worksheets("Planning")
.Activate
.Rows(4).Find(Date).Select
End With
Unload Me
End Sub
'Fin Userform ========================================================================================================================================================= |
Partager