XL 2010 VBA recherche find nom bénévoles

TotallyWorkaholic

XLDnaute Nouveau
Bonjour,
J'ai repris un fichier Excel type sur le web pour la gestion des bénévoles.
Bénévole moi même pour une association je souhaite avoir un planning ou sont repris les données de base de base des bénévoles mais aussi leurs disponibilités.

1 j'ai créé une mise en forme en conditionnelle pour les disponibilités c'est ok

2 je souhaite que si je cherche le nom du bénévole toutes les lignes concernant uniquement le bénévole soit affichées.

3 je souhaite que si je cherche un type de poste tout les bénévoles ayant ce type de poste sortent sur la feuille.

Le tout dans une même feuille avec donc ces deux champs de recherche en haut à gauche.

Je m'y connais pas assez en VBA j'ai essayé de comprendre et de trouver le code le plus simple possible.
Je pensais lavoir trouvé mais ça ne fonctionne pas ..

Si vous avez des conseils merci ! :

EN A3 ma cellule ou je choisis le nom bénévole
En A8 début du tableau avec tout les bénévoles et dans cette colonne il ya le nom que je veux chercher.

Dans ce code je n'ai pas inclus le point 3 avec la recherche par poste... La cellule ou je choisis le type de poste est en b3 et le début du tableau avec les postes commence en b8.

Sub Trouverbenevole()

Dim Cellule As Range
Dim Art As String

Art = InputBox("Nom/prénom")

With ActiveSheet.Range("A8:A100")
Set Cellule = .Find(Art, Lookat:=xlWhole)
If Not Cellule Is Nothing Then
firstAddress = Cellule.Address
Do
MsgBox Cellule.Offset(0, 1).Value
Exit Sub
Set Cellule = .FindNext(Cellule)
Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
End If
End With
MsgBox "Rien trouvé"
End Sub
 

Pièces jointes

  • Planning_V CD 07 ext.xlsm
    178.6 KB · Affichages: 15

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Une manière de faire via un filtre avancé. Le code dans le fichier est commenté.
Il existe des tas d'autres manières de faire...
Le code est dans le module de la feuille "Tout"
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig As Long
   If Intersect(Target, Range("a3,b3")) Is Nothing Then Exit Sub
   If Me.FilterMode Then Me.ShowAllData
   derlig = Cells(Rows.Count, "a").End(xlUp).Row
   If derlig = 6 Then Exit Sub
   Range("A6:B" & derlig).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A2:B3"), Unique:=False
End Sub
 

Pièces jointes

  • TotallyWorkaholic- Planning_V CD 07 ext- v2.xlsm
    181.4 KB · Affichages: 12

TotallyWorkaholic

XLDnaute Nouveau
Merci pr le fichier commenté, ça me permet de comprendre ! Par contre je souhaitai que soit également gardé la ligne 7 pour les horaires de disponibilité une fois que la recherche filtrée apparaît.

J'ai bien compris que je dois changer le range en A7 pour le début de la plage filtrée mais avec ce code il ne m affiche aucune cellule.
J'ai trouvé le problème, la fusion des cellules A6/A7 et B6/B7. Si j'enlève la fusion et que les titres sont en ligne 7 aucun soucis tout fonctionne

Ya t'il un moyen de corriger le code pour le problème des cellules fusionnées ?
Sinon je garde uniquement les titres en ligne 7.

Merci beaucoup
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Voir le fichier joint. Les en-têtes des colonnes A et B ont été déplacés en ligne n° 7 et le code un peu modifié. On a bien sûr "défusionné" les cellules.
En général, il faut éviter les cellules fusionnées dans des tables devant servir de base de données. Cela pose des problèmes au niveau des tris et des filtres.
 

Pièces jointes

  • TotallyWorkaholic- Planning_V CD 07 ext- v3.xlsm
    181.8 KB · Affichages: 7

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @TotallyWorkaholic,

Une tout autre méthode qui n'utilise pas de filtre mais qui masque ou affiche les lignes selon que leurs cellules des colonnes A et B répondent ou non aux critères. On laisse les cellules fusionnées. Le code du fichier est commenté.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig As Long, t, refNom, refPoste, i As Long
   Application.ScreenUpdating = False
   If Intersect(Target, Range("a3,b3")) Is Nothing Then Exit Sub
   If Me.FilterMode Then Me.ShowAllData
   UsedRange.EntireRow.Hidden = False
  
   derlig = Cells(Rows.Count, "a").End(xlUp).Row
   If derlig <= 7 Then Exit Sub
  
   t = Range("a8:b" & derlig).Value
  
   refNom = Range("a3").Value & "*"
   refPoste = Range("b3").Value & "*"
  
   For i = 1 To UBound(t)
      Rows(i + 7).Hidden = Not (t(i, 1) Like refNom And t(i, 2) Like refPoste)
   Next i
End Sub
 

Pièces jointes

  • TotallyWorkaholic- Planning_V CD 07 ext- v4.xlsm
    183.1 KB · Affichages: 12

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 069
Messages
2 085 040
Membres
102 763
dernier inscrit
NICO26