Rechercher, résultat liste déroulante en VBA

  • Initiateur de la discussion Initiateur de la discussion Ilino
  • 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 !

Ilino

XLDnaute Barbatruc
Bonjour Forum
Je vous rejoins encore pour déficeler mon souci le suivant (apparemment je me suis mouillé dans la solution déjà obtenue bref)
Dans mon classeur j’ai deux feuilles (LISTES et FSE)
Dans la feuille LISTES (ou après je vais la considérée comme ma base de données), je fais rentrer des données selon leurs significatives
Dans la feuille FSE j’ai 17 colonnes mon souci est basé maintenant sur les deux premières colonnes
(Désignation & Fournisseur) je souhaiterai faire une application (en code VBA) de la fonction RECHERCHER la donnée saisi dans la colonne Fournisseur dans le tableau de la feuille LISTES et afficher le résultat dans la colonne Désignation et dans le cas ou on trouve plusieurs résultats je souhaiterai afficher une liste déroulante. ( voir l’exemple dans le fichier rattaché
Merci Gracie et Bon week end
 

Pièces jointes

Dernière édition:
Re : Rechercher, résultat liste déroulante en VBA

Bonsoir Ilino,

peut on avoir un help de votre part ?

With a little help from my friend :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(ActiveCell, [A3:A65000]) Is Nothing Then Exit Sub
Dim c As Range, liste As String
For Each c In Feuil1.[1:1].SpecialCells(xlCellTypeConstants)
  If Application.CountIf(c.EntireColumn, ActiveCell(1, 2)) _
    Then liste = liste & "," & c
Next
With ActiveCell.Validation
  .Delete
  If liste <> "" Then .Add xlValidateList, Formula1:=Mid(liste, 2, 999)
End With
End Sub
Notez qu'avec cette méthode le nombre de caractères de la liste déroulante est limité (255 ou 256).

Fichier joint.

A+
 

Pièces jointes

Re : Rechercher, résultat liste déroulante en VBA

Re,

En utilisant la feuille auxiliaire Feuil3 on n'a plus la contrainte des 255 caractères :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Feuil3 est le CodeName de la feuille auxiliaire
If Intersect(ActiveCell, [A3:A65000]) Is Nothing Then Exit Sub
Dim c As Range, lig As Integer
For Each c In Feuil1.[1:1].SpecialCells(xlCellTypeConstants)
  If Application.CountIf(c.EntireColumn, ActiveCell(1, 2)) Then
    lig = lig + 1
    Feuil3.Cells(lig, 1) = c
  End If
Next
With ActiveCell.Validation
  .Delete
  If lig Then
    ThisWorkbook.Names.Add "Liste", Feuil3.[A1].Resize(lig)
    .Add xlValidateList, Formula1:="=Liste"
  End If
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

Re : Rechercher, résultat liste déroulante en VBA

Bonsoir Forum, BONSOIR JOB
un grand Thinks for my friend
gracie gracie gracie... bonne nouvelle pour le debut de ma semaine comme ça je peu bosseR ...
mais juste a little Q :
"En utilisant la feuille auxiliaire Feuil3 on n'a plus la contrainte des 255 caractères " peut on avoir plus d'explication if you wante ???
@+ AMIGOS
 
Re : Rechercher, résultat liste déroulante en VBA

Re,

Quand on crée une liste de validation en y entrant a;b;c;d... on est limité à 255 caractères.

Quand on la crée avec une plage nommée par la formule =Liste pas de limitation.

A+
 
Re : Rechercher, résultat liste déroulante en VBA

Re Bonsoir JOB
si tu permet une other Q pour ton code
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Feuil3 est le CodeName de la feuille auxiliaire
If Intersect(ActiveCell, [A3:A65000]) Is Nothing Then Exit Sub
Dim c As Range, lig As Integer
For Each c In Feuil1.[1:1].SpecialCells(xlCellTypeConstants)
  If Application.CountIf(c.EntireColumn, ActiveCell(1, 2)) Then
    lig = lig + 1
    Feuil3.Cells(lig, 1) = c
  End If
Next
With ActiveCell.Validation
  .Delete
  If lig Then
    ThisWorkbook.Names.Add "Liste", Feuil3.[A1].Resize(lig)
    .Add xlValidateList, Formula1:="=Liste"
  End If
End With
End Sub

je souhaiterai dans le resultat de recherche si j'ai une seule donnée donc il affichera directement dans la cellule sinon liste deroulante ( comme tu as fait )
merci
 
Re : Rechercher, résultat liste déroulante en VBA

Re Bonsoir JOB
si tu permet une other Q pour ton code
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Feuil3 est le CodeName de la feuille auxiliaire
If Intersect(ActiveCell, [A3:A65000]) Is Nothing Then Exit Sub
Dim c As Range, lig As Integer
For Each c In Feuil1.[1:1].SpecialCells(xlCellTypeConstants)
  If Application.CountIf(c.EntireColumn, ActiveCell(1, 2)) Then
    lig = lig + 1
    Feuil3.Cells(lig, 1) = c
  End If
Next
With ActiveCell.Validation
  .Delete
  If lig Then
    ThisWorkbook.Names.Add "Liste", Feuil3.[A1].Resize(lig)
    .Add xlValidateList, Formula1:="=Liste"
  End If
End With
End Sub
je souhaiterai dans le resultat de recherche si j'ai une seule donnée donc il affichera directement dans la cellule sinon liste deroulante ( comme tu as fait )
merci
Bonsoir FORUM, Bonsoir JOB
PUIS JE AVOIR UNE SOLUTION OU PROPOSITION IF YOU WANT ?
Merci
 
Dernière édition:
Re : Rechercher, résultat liste déroulante en VBA

Bonjour Ilino, le forum,

Vous auriez pu faire ça tout seul non ?

Code:
If lig = 1 Then ActiveCell = Feuil3.[A1]
If lig > 1 Then
  ThisWorkbook.Names.Add "Liste", Feuil3.[A1].Resize(lig)
  .Add xlValidateList, Formula1:="=Liste"
End If
Fichier (3).

A+
 

Pièces jointes

Re : Rechercher, résultat liste déroulante en VBA

Re,

On peut aussi prévoir d'effacer la cellule active, là c'est un peu plus compliqué :

Code:
If lig = 0 Then ActiveCell = ""
If lig = 1 Then ActiveCell = Feuil3.[A1]
If lig > 1 Then
  ThisWorkbook.Names.Add "Liste", Feuil3.[A1].Resize(lig)
  .Add xlValidateList, Formula1:="=Liste"
  If Application.CountIf([Liste], ActiveCell) = 0 Then ActiveCell = ""
End If
Fichier (4).

A+
 

Pièces jointes

Re : Rechercher, résultat liste déroulante en VBA

Bonjour Ilino, le forum,

Vous auriez pu faire ça tout seul non ?

A+

Bonsoir Forum , Bonsoir JOB
Pourquoi je vous sollicite ? parce que je suis ( si vous permettez Forum) Nul et sincèrement j’apprend et je suis entrain d’apprendre
En tous les cas MERCI JOB pour les solutions (je l’ai considère comme des cours )
Grazie
 
- 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

Discussions similaires

Réponses
40
Affichages
1 K
Réponses
15
Affichages
473
Réponses
8
Affichages
727
Retour