Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Filtre et UserForm

  • Initiateur de la discussion Initiateur de la discussion billysteph
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

billysteph

Guest
Bonjour à tous,

J'ai un petit probleme sur les filtres....
j'ai effectuer un filtre dans VBA, cela fonctionne a merveille.
Sur la feuille ou se fait le filtre, j'ai dans "A1" l'intituler, par ex NOM,
et de "A2" a "A30" toutes mes valeurs.
Quand je filtre, je peux avoir la valeur qui se trouvait en "A10" dans la cellule "A2". En fait, les cellules de "A2" à "A9" deviennent cacher et laisse place à la valeur rechercher....
J'espere que vous me suivez....
Ma question, c'est comment faire pour recuperer la valeur que je vois et non pas celle qui sont cacher...

Je vous joins sur une feuille Excel une explication, ce serra plus comprehensible, j'espere.
Encore merci
 

Pièces jointes

Bonjour BillySteph, le Forum

Pour une première approche, tu as deux alternatives simples à ma connaissance :

Cas 1) Tu persistes avec un Filter et donc tu construis un Object Range avec la Méthode "SpecialCells" en lui adjoignant le type "xlCellTypeVisible".

Option Explicit

Sub FilterReturn()
Dim GlobalPlage As Range, Cell As Range
Dim FilterPlage As Range
Dim ReturnValue As String

With Sheets("Feuil1")
  Set GlobalPlage = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With

Set FilterPlage = GlobalPlage.SpecialCells(xlCellTypeVisible)

  For Each Cell In FilterPlage
      ReturnValue = Cell
  Next

MsgBox ReturnValue
End Sub



Cas 2) Tu abandonnes les Filters et tu construis tout en VBA, sans t'appuyer sur les Filtres d'Excel :

Sub VBAFilter()
Dim PlageToScan As Range, Cell As Range
Dim MyVar As String
Dim ReturnValue As String

MyVar = "Richard"


With Sheets("Feuil1")
  Set PlageToScan = .Range("B2:B" & .Range("B65536").End(xlUp).Row)
End With

  For Each Cell In PlageToScan
     If Cell = MyVar Then
        ReturnValue = Cell.Offset(0, -1)
     End If
  Next

MsgBox ReturnValue

End Sub

Il est entrendu que ces deux exemples sont basés pour ne retourner qu'un seul item même dans le cas de plusieurs occurrences retournées (dans ce cas, seul le dernier item sera retourné), si il y a besoin de plusieurs retours, alors il te faut plus utiliser un ActiveX TextBox mais une ListBox dans ton UserForm, exemple :

Cas 1 :
  For Each Cell In FilterPlage
     UserForm1.ListBox1.AddItem Cell
  Next


Cas 2:
  For Each Cell In PlageToScan
     If Cell = MyVar Then
       UserForm1.ListBox1.AddItem Cell
     End If
  Next


Bon Aprèm
@+Thierry
 
Bonjour @+Thierry, le forum,

Merci pour ta reponse tres rapide.
J'ai decider d'utiliser ta seconde methode, mais j'ai toujours un probleme...
J'ai un petit peu modifier ce que tu m'as donner, et ca marche bien.
Maintenant, je voudrai renvoyer la valeur dans un Textbox, mais sachant qu'il peu y avoir 2 fois le meme prenom.
Donc, me marquer chaque prenom dans un TextBox different...
Soit: TextBox1= A
TextBox2= D

Y a t il un moyen????
Merci si vous avez encore une idee pour moi.

Je joins le fichier que j'ai modifier.
Merci
 

Pièces jointes

=> DEMO UserForm Search Multi Retours d'Occurrences sur TextBox

Bonjour BillySteph, le Forum

Pourquoi se compliquer la vie avec des TextBox, vu qu'on a des ListBox faites exactement pour ceci...

Enfin le "Client" est Roi !

Voici en Multi Retours d'Occurrences sur TextBox !

NB j'ai laissé tes RowSources sur Formules nommées, mais si c'est pour les doublons, arf, marche plus lol !!

Bon je file déjeuner, bon appétit à tous et toutes

@+Thierry
 

Pièces jointes

Re......
Et oui, c'est encore moi...
Une derniere question, et apres, j'espere que j'arrete de vous embeter....
Merci pour ta reponse @+Thierry, je venais juste aussi de la trouver.
Mais c'est tres sympa a toi, je vois ainsi une autre maniere d'arriver a mes fins...

Ma derniere question est la suivante:
Quand je selectionne le Prenom "Robert" et qu'il y a plusieurs reponse possible (plusieurs Nom qui peuvent etre utiliser), comment les faire venir dans un combobox??? En fait, au lieu d'avoir 3 reponses dans 3 textBox, je les voudrai dans 1 Combobox.
Mon appli principal me servira pour faire des recherches multicriteres.
Merci encore pour les reponses,
@plus
 
Re Billy, le Forum

Heu ta dernière question c'est une Blague ?

C'est ce que je t'explique depuis mon post du 09-12-04 15:08 en bas... (Mets UserForm1.ComboBox.AddItem Cell... au lieu de UserForm1.ListBox1.AddItem Cell)

Bon Aprèm
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
352
Réponses
5
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…