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

nasilo 34 Messages postés vendredi 18 avril 2008Date d'inscription 27 février 2009 Dernière intervention - 19 févr. 2009 à 08:34 - Dernière réponse : nasilo 34 Messages postés vendredi 18 avril 2008Date d'inscription 27 février 2009 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 févr. 2009 à 11:10
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
nasilo 34 Messages postés vendredi 18 avril 2008Date d'inscription 27 février 2009 Dernière intervention - 19 févr. 2009 à 11:20
3
Merci
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...

Merci nasilo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de nasilo
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 févr. 2009 à 08:48
0
Merci
oui.
Commenter la réponse de Renfield
nasilo 34 Messages postés vendredi 18 avril 2008Date d'inscription 27 février 2009 Dernière intervention - 19 févr. 2009 à 08:55
0
Merci
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
Commenter la réponse de nasilo
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 févr. 2009 à 08:56
0
Merci
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
Commenter la réponse de Renfield
nasilo 34 Messages postés vendredi 18 avril 2008Date d'inscription 27 février 2009 Dernière intervention - 19 févr. 2009 à 10:17
0
Merci
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
Commenter la réponse de nasilo
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 févr. 2009 à 10:21
0
Merci
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
Commenter la réponse de Renfield
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 févr. 2009 à 10:22
0
Merci
je devais pas être bien reveillé ^^ l'autre fonctionne, mais trop long pour ce qu'il a a faire :p
Commenter la réponse de Renfield
nasilo 34 Messages postés vendredi 18 avril 2008Date d'inscription 27 février 2009 Dernière intervention - 19 févr. 2009 à 11:05
0
Merci
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).
Commenter la réponse de nasilo
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 févr. 2009 à 11:23
0
Merci
ah oui, désolé, c'est .Text en VB6 et .Value en VBA ^^
Commenter la réponse de Renfield
nasilo 34 Messages postés vendredi 18 avril 2008Date d'inscription 27 février 2009 Dernière intervention - 19 févr. 2009 à 11:31
0
Merci
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
Commenter la réponse de nasilo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.