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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <ksandre@discussions.microsoft.com> a écrit dans le message de
news:E5D177B4-F47C-41DD-80F8-734F176D360E@microsoft.com...
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
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
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
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" <ksandre@discussions.microsoft.com> a écrit dans le message de
news:E5D177B4-F47C-41DD-80F8-734F176D360E@microsoft.com...
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
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
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
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" <ksandre@discussions.microsoft.com> a écrit dans le message news:
E5D177B4-F47C-41DD-80F8-734F176D360E@microsoft.com...
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
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
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
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" <ksandre@discussions.microsoft.com> a écrit dans le message de
news:809A2982-BE1C-4EB4-AEE6-BBCBE946B5A0@microsoft.com...
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" <ksandre@discussions.microsoft.com> a écrit dans le message
de
( 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