créer une liste à partir avec la RECHERCHEV

ARNAUD ZIRIPE

XLDnaute Occasionnel
Bonsoir le forum
je me tourne vers vous pour vous soumettre une préoccupation.
Je souhaiterais créer une liste avec la RECHERCHE V.
En effet j'ai une base de donnée dans ma feuil1. Dans cette base, j'ai dans la colonne "A"le matricule, dans la colonne "B" le Nom, le Prénom dans la colonne "C" et la classe dans la colonne "D". Dans la feuil3, en Cellule "F11" ce trouve une liste déroulante. Ce que je souhaiterais, c'est que dans la Feuil3 Apparaisse la liste de la classe qui se trouvera dans la Cellule "F11"
Exemple: Dans "F11" de la Feuille on écrit CM1
Automatiquement s'affiche la liste de tous les élèves de la classe de CM1 qui se trouvent dans la base. Comment puis-je réaliser cela.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Une suggestion: utiliser un tableau croisé dynamique (TCD)
On sélectionne la base, puis Insertion/Tableau Croisé Dynamique
TCD qu'on peut mettre sur la feuille active (comme ici)
ou sur une nouvelle feuille.

Pour plus, voir par exemple ce tutoriel
TCD_CM1.jpg
 

job75

XLDnaute Barbatruc
Bonjour ARNAUD ZIRIPE, Jean-Marie,

Problème moult fois traité sur XLD.

Solution par formule matricielle, à valider par Ctrl+Maj+Entrée en G11 :
Code:
=SIERREUR(INDEX(Feuil1!A:A;PETITE.VALEUR(SI((Feuil1!$D$2:$D$21=$F$11)+($F$11="");LIGNE(Feuil1!$D$2:$D$21));LIGNE(A1)));"")
Edit : j'avais fait une petite erreur dans la formule...

Solution par ces 2 macros VBA (dans le code de Feuil3) :
Code:
Private Sub Worksheet_Activate() 'pour le cas où Feuil1 a été modifiée
Worksheet_Change Cells 'lance la macro
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cible As Range, x$, vide As Boolean, t, rest(), i&, n&
Set cible = [F11] 'cellule à adapter
If Intersect(Target, cible) Is Nothing Then Exit Sub
x = CStr(cible): vide = x = ""
t = Feuil1.[A1].CurrentRegion.Resize(, 4) 'matrice, plus rapide, à adapter
ReDim rest(1 To UBound(t), 1 To 3)
For i = 2 To UBound(t)
  If CStr(t(i, 4)) = x Or vide Then
    n = n + 1
    rest(n, 1) = t(i, 1): rest(n, 2) = t(i, 2): rest(n, 3) = t(i, 3)
  End If
Next
If n Then
  With cible(1, 2).Resize(n, 3)
    .Value = rest
    .Sort cible(1, 2), xlAscending, Header:=xlNo 'tri
  End With
End If
cible(1, 2).Offset(n).Resize(Rows.Count - n - cible.Row + 1, 3) = "" 'RAZ en dessous
End Sub
Fichiers joints.

A+
 

Pièces jointes

  • Filtre formule matricielle(1).xlsx
    18.2 KB · Affichages: 41
  • Filtre VBA(1).xlsm
    26.2 KB · Affichages: 38
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonsoir ARNAUD
Bonsoir le Fil ,Nicole
Nicole , je te félicite de ce beau travail ,je me suis permis de modifier (Pas grand chose lol)
pour permettre le Choix de Tous les Produits
j'ai donc ajouté à la liste "<<TOUS>>"
Puis j'ai modifié le code ainsi.
Function FiltreBD(BD As Range, colCrit1, critere1, ColResult, Optional colcrit2, Optional critere2, Optional coltri)
a = BD
k = 1
Dim b()
critere1 = IIf(critere1 = "<<TOUS>>", "*", critere1) 'J'ai rajouté ceci
Nlignes = Application.Caller.Rows.Count
If IsArray(ColResult) Then
ReDim b(LBound(a) To Application.Caller.Rows.Count, 1 To UBound(ColResult) - LBound(ColResult) + 1)
Else
ReDim b(LBound(a) To Nlignes, 1 To 1)
End If
If IsMissing(colcrit2) Then colcrit2 = colCrit1: critere2 = critere1
For i = LBound(a, 1) To UBound(a, 1)
If a(i, colCrit1) <> "" Then
'Ici j'ai rajouté deux Like lol
If (UCase(a(i, colCrit1)) Like UCase(critere1) Or critere1 = "") And _
(UCase(a(i, colcrit2)) Like UCase(critere2) Or critere2 = "") Then
If IsArray(ColResult) Then
For c = LBound(ColResult) To UBound(ColResult)
col = ColResult(c, 1)
b(k, c) = a(i, col)
Next c
Else
b(k, ColResult) = a(i, ColResult)
End If
k = k + 1: If k > Nlignes Then FiltreBD = "pas assez de lignes": Exit Function
End If
End If
Next i
If Not IsMissing(coltri) Then Call TriCol(b, LBound(b), k - 1, coltri)
FiltreBD = b
End Function
Bonne fin de Soirée
Amicalement
Jean marie
 

ARNAUD ZIRIPE

XLDnaute Occasionnel
[URL='https://www.excel-downloads.com/members/bisson-nicole.206673/']Bonsoir le Forum
Bonsoir BISSON Nicole

Bonsoir job75
[/URL]
Ce lien n'existe plus

Je suis très heureux de votre travail, C'est justement ce que je cherchais.
J'ai une toute dernière préoccupation à vous soumettre pour achever mon projet loin de moi l'idée de vouloir abuser de votre temps et générosité.
En fait, la semaine dernière, j'avais soumis une préoccupation à laquelle BISON Nicole avait répondu favorablement en me faisant un fichier. Mon problème est que je peine à l'incorporer à mon projet. J'ai beau essayé mais rien. Je vous prie de bien vouloir m'aider SVP.
Eprimaire2 est mon projet

est le fichier que j'ai reçu est FormClasse3
L'idée ici est d'incorporer FormClasse3 à Eprimaire2 à la page "Résultat Scolaires"
Je vous envoie les deux Fichiers.
Merci d'avance.
 

Pièces jointes

  • FormClasse3.xls
    74 KB · Affichages: 37
  • Eprimaire2.xlsm
    31.5 KB · Affichages: 32

ChTi160

XLDnaute Barbatruc
Re Bonjour ARNAUD
Bonjour Le Fil ,Le Forum
pas trouvé de page "Résultat Scolaires"
voir fichier joint dans lequel j'ai ajouté un Bouton et importé le Userform nommé "Usf_Gestion"
pas sûr d'avoir compris ! Lol
Bonne journée
Amicalement
Jean marie
 

Pièces jointes

  • Eprimaire2-1.xlsm
    38.2 KB · Affichages: 31

ARNAUD ZIRIPE

XLDnaute Occasionnel
Bonjour Jean marie
Bonjour le forum.
Dans l'userForm1 se trouve une multipage et c'est dans cette multipage, à la page5 que se trouve "Résultat Scolaire". l'idée ici est d'incorporer l'userform Gestion à l'userform1 pour n'en faire qu'un. J'ai déjà Deux Combobox et une textbox à l'image de l'userform Gestion mais ils ne fonctionnent pas. il s'agit de les faire fonctionner comme dans l'userform Gestion.
Merci.
 

Discussions similaires

Réponses
9
Affichages
346

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo