OVH Cloud OVH Cloud

recherche une feuille de classeur

4 réponses
Avatar
ksandre
bonjour
je suis en train de créer un fichier client fidélité .
Chaque feuille correspond à un client et j'ai fait un index avec des liens
hypertexte pour pourvoir avoir accès directement au feuille.
Cependant , j'aimerais pourvoir taper le nom de mon client et qu'excel
m'ouvre la feuille correspondante, est-ce possible et comment faire?
J'ai essayé avec les formules recherche , trouve et cherche mais je
n'arrive pas à le faire

d'avance merci

4 réponses

Avatar
Jacky
Bonsoir Ksandre,
Un exemple:(a condition que les feuilles soient nommées du nom des
clients)
'------------------
Sub jj()
client = UCase(InputBox("Entrez un nom de client", "Recherche client"))
If client = "" Then Exit Sub
For i = 1 To Sheets.Count
If UCase(Sheets(i).Name) = client Then
Sheets(i).Select
Exit Sub
End If
Next
MsgBox "Client inexistant"
End Sub
'-------------------
Salutations
JJ


"ksandre" a écrit dans le message de
news:
bonjour
je suis en train de créer un fichier client fidélité .
Chaque feuille correspond à un client et j'ai fait un index avec des
liens

hypertexte pour pourvoir avoir accès directement au feuille.
Cependant , j'aimerais pourvoir taper le nom de mon client et
qu'excel

m'ouvre la feuille correspondante, est-ce possible et comment faire?
J'ai essayé avec les formules recherche , trouve et cherche mais je
n'arrive pas à le faire

d'avance merci


Avatar
ksandre
merci beaucoup..... c'est parfait .....
une derniére chose ( je débute dans excel ) comment fait-on pour mettre la
macro dans une cellule ...genre un bouton qui ouvre la fenêtre "entrer nom du
client" ?

Bonsoir Ksandre,
Un exemple:(a condition que les feuilles soient nommées du nom des
clients)
'------------------
Sub jj()
client = UCase(InputBox("Entrez un nom de client", "Recherche client"))
If client = "" Then Exit Sub
For i = 1 To Sheets.Count
If UCase(Sheets(i).Name) = client Then
Sheets(i).Select
Exit Sub
End If
Next
MsgBox "Client inexistant"
End Sub
'-------------------
Salutations
JJ


"ksandre" a écrit dans le message de
news:
bonjour
je suis en train de créer un fichier client fidélité .
Chaque feuille correspond à un client et j'ai fait un index avec des
liens

hypertexte pour pourvoir avoir accès directement au feuille.
Cependant , j'aimerais pourvoir taper le nom de mon client et
qu'excel

m'ouvre la feuille correspondante, est-ce possible et comment faire?
J'ai essayé avec les formules recherche , trouve et cherche mais je
n'arrive pas à le faire

d'avance merci







Avatar
Hervé
Bonsoir,
Autres pistes :
- 1° :
A l'ouverture du classeur un combobox est créé dans la barre principale avec
le nom des feuilles ainsi que deux lignes. La 1ère sert à actualiser le
combo si tu as, par exemple, renommé, ajouter ou supprimer une feuille, la
2ème sert de séparation.

A mettre dans un module standard :
'------------------------------------------------------------
Sub CreerControle()
Dim Cmb As CommandBarComboBox
Dim I As Integer
'crée le combo dans la barre principale
On Error Resume Next
With Application.CommandBars("Worksheet Menu Bar")
.Controls("Clients").Delete
Set Cmb = .Controls.Add(msoControlComboBox)
With Cmb
.Caption = "Clients"
.Width = 100
.OnAction = "ActiverFeuille"
End With
Charger Cmb
End With

Set Cmb = Nothing
End Sub

Sub ActiverFeuille()
Dim Fe As Worksheet
Dim I As Integer

On Error Resume Next
With CommandBars.ActionControl
'si clic sur "Actuliser" ou sur
'la ligne vide réatualise le combo
If .List(.ListIndex) = "Actualiser" Or _
.List(.ListIndex) = "" Then
Charger CommandBars.ActionControl
Exit Sub
End If
'sélectionne la feuille
Set Fe = Worksheets(.List(.ListIndex))
If Err.Number = 0 Then
Fe.Activate
Else
MsgBox "Feuille inexistante, " & _
"le contrôle va être actualisé !"
Charger CommandBars.ActionControl
End If
End With

Set Fe = Nothing
End Sub

Sub Charger(Cmb As CommandBarComboBox)
Dim I As Integer
With Cmb
.Clear
.AddItem "Actualiser"
.AddItem ""
For I = 1 To Worksheets.Count
.AddItem Worksheets(I).Name
Next I
End With
End Sub
'--------------------------------------------------------------

A mettre dans le module du classeur (ThisWorkbook) :
'--------------------------------------------------------------
Private Sub Workbook_Open()
'crée le combo
CreerCombo
End Sub

Private Sub Workbook_Activate()
On Error Resume Next
'affiche le combo
With Application.CommandBars("Worksheet Menu Bar")
.Controls("Clients").Visible = True
End With
End Sub

Private Sub Workbook_Deactivate()
On Error Resume Next
'cache le combo
With Application.CommandBars("Worksheet Menu Bar")
.Controls("Clients").Visible = False
End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
'supprime le combo
With Application.CommandBars("Worksheet Menu Bar")
.Controls("Clients").Delete
End With
End Sub
'----------------------------------------------------------------

- 2° :
Tu utilise un UserForm avec un Textbox, la feuille correspondante est
sélectionnée au fur et à mesure de la saisie :

A mettre dans le module de ta Form :
'----------------------------------------------------------------
Private Sub TextBox1_Change()
Dim Tbl() As String
Dim I As Integer

ReDim Preserve Tbl(1 To Worksheets.Count)
For I = 1 To UBound(Tbl)
Tbl(I) = Worksheets(I).Name
Next I

With TextBox1
For I = 1 To UBound(Tbl)
If .Text = Left(Tbl(I), Len(.Text)) Then
Worksheets(Tbl(I)).Activate
Exit For
End If
Next I
End With
End Sub

A mettre dans un module standard :

'-----------------------------------------------------------------
Sub CreerControle()
Dim Btn As CommandBarButton
'crée le bouton dans la barre principale
On Error Resume Next
With Application.CommandBars("Worksheet Menu Bar")
.Controls("Clients").Delete
Set Btn = .Controls.Add(msoControlButton)
With Btn
.Caption = "Clients"
.OnAction = "AfficherForm"
.FaceId = 5473
End With
End With

Set Btn = Nothing
End Sub

Sub AfficherForm()
UserForm1.Show
End Sub
'----------------------------------------------------------
Ce qui est à mettre dans le module du classeur pour le combo est aussi
valable pour le bouton.

Hervé.

"ksandre" a écrit dans le message news:

bonjour
je suis en train de créer un fichier client fidélité .
Chaque feuille correspond à un client et j'ai fait un index avec des
liens

hypertexte pour pourvoir avoir accès directement au feuille.
Cependant , j'aimerais pourvoir taper le nom de mon client et qu'excel
m'ouvre la feuille correspondante, est-ce possible et comment faire?
J'ai essayé avec les formules recherche , trouve et cherche mais je
n'arrive pas à le faire

d'avance merci


Avatar
Jacky
Re...
( je débute dans excel )
Le code d'Hervé, bien que plus compliqué, et un bon exemple pour bien



débuter, il faudra l'étudier module par module pour bien le comprendre.
Mais cela vaut le coup, du moins si l'on veut approfondir VBA.
Le mien reste très basic dans les deux sens du terme ;o((
Un exemple ici:
http://cjoint.com/?eca0WJvyuu

Bon courage
JJ

"ksandre" a écrit dans le message de
news:

merci beaucoup..... c'est parfait .....
une derniére chose ( je débute dans excel ) comment fait-on pour mettre
la

macro dans une cellule ...genre un bouton qui ouvre la fenêtre "entrer nom
du

client" ?

Bonsoir Ksandre,
Un exemple:(a condition que les feuilles soient nommées du nom des
clients)
'------------------
Sub jj()
client = UCase(InputBox("Entrez un nom de client", "Recherche
client"))


If client = "" Then Exit Sub
For i = 1 To Sheets.Count
If UCase(Sheets(i).Name) = client Then
Sheets(i).Select
Exit Sub
End If
Next
MsgBox "Client inexistant"
End Sub
'-------------------
Salutations
JJ


"ksandre" a écrit dans le message
de


news:
bonjour
je suis en train de créer un fichier client fidélité .
Chaque feuille correspond à un client et j'ai fait un index avec
des



liens
hypertexte pour pourvoir avoir accès directement au feuille.
Cependant , j'aimerais pourvoir taper le nom de mon client et
qu'excel

m'ouvre la feuille correspondante, est-ce possible et comment faire?
J'ai essayé avec les formules recherche , trouve et cherche mais
je



n'arrive pas à le faire

d'avance merci