Remplir un textbox ou une combobox avec le nom de plusieurs feuilles trouvées av

Résolu
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009 - 19 févr. 2009 à 08:34
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009 - 19 févr. 2009 à 11:31
Bonjour,

Encore une question....
Je travaille dans excel 2003 à la création d'une application personnelle sous VBA.
Pour le moment voici ce que je fais pour trouver les feuilles de mon classeur qui une même cellule avec la même valeur .
Dim I As Long, total As Long
For Each monobjet In Worksheets    If monobjet.Range("b19") monchoix Then total total + 1
Next
MsgBox "il y a " & total & " " & monchoix

For Each monobjet In Worksheets
If monobjet.Range("b19") = monchoix Then
monobjet.Select
Range("a1").Activate
Unload Frm_cherche_nom_produit
Exit Sub
End If
Next
MsgBox "Ce produit n'existe pas"
Ceci me dit donc combien il y a de feuilles correspondantes au critère monchoix et me sélectionne la permière seulement...
J'aimerais connaître s'il existe une méthode pour que les noms des feuilles trouvées s'affichent dans un textbox ou un combobox afin que je puisse sélectionner celle que je veux sélectionner.
Merci pour votre aide et bonne journée à toutes et à tous.

11 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
19 févr. 2009 à 11:10
le code que je t'ai fourni ne fonctionne-t'il pas ?

If Combo1.ListIndex<>-1 Then
With Worksheets(Combo1.Text)
.Select
.Range("A1").Activate
End With
Unload Frm_cherche_nom_produit
End If

a placer dans le code d'un click sur un bouton de validation
3
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
19 févr. 2009 à 11:20
Si ...il m'a fallu juste changer quelque nom comme text1 par exemple qui ne correspondait pas au nom exact que j'ai donné dans mon code.
par contre une piste svp...
Private Sub Cmd_affiche_Click()
Sheets(ComboBox_affiche_nom_feuille).Activate
End Sub
ce code me retourne une erreur ???
je cherche le code ou la méthode pour activer la feuille que j'aurai choisie dans mon combox...
je viens de trouver mon erreur j'ai omis le .value de ma combobox.
je suis vraiment pas dégourdi
En tout cas , sincèrement merci beaucoup pour cette aide
Bon je vais continueer a tenter d'améliorer mon application budget..j'ai largement de quoi occuer ma retraite...
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
19 févr. 2009 à 08:48
oui.
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
19 févr. 2009 à 08:55
Bonjour,
Merci pour cette réponse qui confirme ce que je pensais....
Qui cherche trouve parait-il... alors je vais continuer à chercher et si je ne trouve pas tant pis.. je retournerai à mon jardin
Bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
19 févr. 2009 à 08:56
bon, trêve de plaisanterie ^^
j'ai répondu à ta question, mais je pense que tu ne vas pas tarder à demander "comment ?"

à main levée, je dirait:

Dim sBuffer As String
Dim oSheet As WorkSheet
Dim xsList() As String
Dim i As Long
For Each oSheet In Worksheets
If oSheet.Range("B19") = Text1.Text Then
If Lenb(sBuffer) Then
sBuffer = sBuffer & ";"
End If
sBuffer = sBuffer & oSheet.Name
End If
Next oSheet

xsList = Split(sBuffer, ";")
Combo1.Clear
For i=0 To Ubound(xsList)
Combo1.AddItem xsList(i)
Next i

If Combo1.ListCount then
Combo1.ListIndex = 0
MsgBox "il y a " & Combo1.ListCount & " " & Text1.Text
Else
MsgBox "Ce produit n'existe pas"
End If


et pour activer ta feuille, rien de plus simple :

If Combo1.ListIndex<>-1 Then
With Worksheets(Combo1.Text)
.Select
.Range("A1").Activate
End With
Unload Frm_cherche_nom_produit
End If
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
19 févr. 2009 à 10:17
rebonjour,
je cherche depuis tout à l'heure et voici ce que j'ai trouvé pour le moment...

Private Sub Cmd_cherche_Click()
monobjet = Worksheet
monchoix = ComboBox_cherche_nom_produit.Value
Dim I As Long, total As Long
For Each monobjet In Worksheets    If monobjet.Range("b18") monchoix Then total total + 1
Next
MsgBox "il y a " & total & " " & monchoix
For Each monobjet In Worksheets
If monobjet.Range("b18") = monchoix Then
ComboBox_affiche_nom_produit.Value = monobjet.Name
Exit Sub
End If
Next
MsgBox "Ce produit n'existe pas"
End Sub

Avec ce code je réussi donc (et pour moi c'est déjà presque un exploit) à copier dans un combobox le nom d'une feuille la première et pas les autres (dans mon cas j'ai deux feuilles qui correspondent au critère de recherche...)..
en tout cas merci pour le code fourni (oupsssssssssssss). je voyais cela plus simple. Je vais essayer ....

A tout a l'heure sans doute...
merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
19 févr. 2009 à 10:21
plus simple ?

Dim oSheet As WorkSheet
Combo1.Clear
For Each oSheet In Worksheets
If oSheet.Range("B19") = Text1.Text Then
Combo1.AddItem oSheet.Name
End If
Next oSheet

If Combo1.ListCount then
Combo1.ListIndex = 0
MsgBox "il y a " & Combo1.ListCount & " " & Text1.Text
Else
MsgBox "Ce produit n'existe pas"
End If
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
19 févr. 2009 à 10:22
je devais pas être bien reveillé ^^ l'autre fonctionne, mais trop long pour ce qu'il a a faire :p
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
19 févr. 2009 à 11:05
Merci pour cette aide précieuse et indispensable vu mon âge avancé et ma tardive mise en apprentissage de vba pour excel...
Après quelques modifications afin que cela tourne correctement chez moi ça marche super..
Le nom des feuilles concernées s'affichent bien dans ma combo. A présent je cherche la méthode pour activer une des feuilles qui s'affichent dans ma combo;
mes essais de code pour le moment ne me procure que des erreurs (rires).
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 72
19 févr. 2009 à 11:23
ah oui, désolé, c'est .Text en VB6 et .Value en VBA ^^
0
nasilo Messages postés 34 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 27 février 2009
19 févr. 2009 à 11:31
Tu n' as pas a être désolé....
sans ton aide je ne serai arrivé à rien....
Tous ces codes, ces syntaxes, ces méthodes etc sont encore pour moi plus que floues...
L'heure du repas approchant...Bon appêtit
0