[Résolu] Aide selection ListBox

Lone-wolf

XLDnaute Barbatruc
Bonsoir Le Forum,

j'aimerais éffectuer plusieurs actions avec la ListBox.

1 - Rechercher les participants avec leurs statuts et genre de contrat et les données de la Feuil3, comme le fait la liste en Feuil4.

2 - Lors de la sélection de plusieurs participants, copier les cellules de A1 à AO31 ( avec Step 3), et ceci pour autant de participants que j'aurais choisi, en affichant bien sûr, les données correspondantes.



Merci d'avance



A+ :cool:
 

Pièces jointes

  • TEST.xlsm
    69.6 KB · Affichages: 81
  • TEST.xlsm
    69.6 KB · Affichages: 90
  • TEST.xlsm
    69.6 KB · Affichages: 84
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Aide selection ListBox

Bonsoir

Lone-Wolf
Ce sont des patronymes non fictifs dans ton fichier?
Cela ne devrait pas l'être... puisque tu es inscrit depuis mars 2010 :rolleyes:

Si ce sont des noms "bidons" , alors tout va bien et je vais pouvoir regarder plus avant ton fichier et ta question ;)

NB: Ce serait peut-être pas plus mal que les commentaires soient neutres, non ?
(ou mieux carrément fictifs sans once de dénigrement inside ;))
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Aide selection ListBox

Bonsoir Jean-Marie,

Ce sont des patronymes non fictifs dans ton fichier?
Désolé, je ne comprends pas la question. Pour les noms, ils sont bien sûr fictifs. Pour les commentaires, comme le fichier vas être utilisé sur MAC, et que la personne ne peut imprimer les commentaires, c'est pour celà que j'ai utilisé cette solution.

NOTE: le fichier vas en s'agrandissant, je ne connaît pas encore le nombre de personnes et il vas y avoir une 40aine de postes au total.


A+ :cool:
 

Staple1600

XLDnaute Barbatruc
Re : Aide selection ListBox

Bonjour à tous

Lone-Wolf
Voir cet exemple tout simple
(exemple crée car j'avais des soucis avec les codes dans ta PJ, sans doute les Application.EnableEvents)
Code à mettre dans le code de la feuille (pas dans un module)
Test OK sur mon PC
J'utilise l'événement ListBox1_Click pour remplir la zone jaune.
En espérant que cela t'aide pour ta question.
EDITION:
NB: C'est la plage de de cellules qui est nommée base, pas la feuille.
Pour réduire la copie d'écran, j'ai mis la base de donnée sur la même feuille.
Mais cela fonctionnera aussi si tes données sont sur une autre feuille
(mais faudra alors récréer le nom base )Il faudra prévoir aussi un code qui actualise le nom base si tu rajoutes des données dans ta Base.
Un truc du genre:
Code:
Dim rngBd As Range
With Sheets("Feuil2")
Set rngBd = Range(Cells(1, 1), Cells(Rows.Count, 3).End(3))
rngBd.Name = "base"
End With
Code:
Private Sub ListBox1_Click()
Dim x As Range
With Range("AP1")
    Set x = .Offset(1, 0)
     x = ListBox1.Value
    .Offset(1, 1).Value = Application.VLookup(x, [Base], 2, 0)
    .Offset(1, 2) = Application.VLookup(x, [Base], 3, 0)
End With
End Sub
Code:
Private Sub Worksheet_Activate()
Dim a
a = Range(Cells(2, 1), Cells(Rows.Count, 1).End(3)).Value
ListBox1.List = a
End Sub
Private Sub Worksheet_Deactivate()
ListBox1.Clear
End Sub
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a
If Target.Column = 1 Then
If Not IsEmpty(Target) Then
a = Range(Cells(2, 1), Cells(Rows.Count, 1).End(3)).Value
ListBox1.List = a
End If
End If
End Sub
LoneWolf.png
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Aide selection ListBox

Re

Et comme ceci cela fonctionne toujours sur mon PC ;)
(Le code VBA est dans la feuille 1 contenant la ListBox1)
Private Sub ListBox1_Click()
Dim x As Range
With Range("C1")
Set x = .Offset(1, 0)
x = ListBox1.Value
.Offset(1, 1).Value = Application.VLookup(x, [DATAS], 2, 0)
.Offset(1, 2) = Application.VLookup(x, [DATAS], 3, 0)
End With
End Sub



Private Sub Worksheet_Activate()
Dim a, rngBD As Range, f As Worksheet
Set f = Sheets("BD")
Set rngBD = f.Range(f.Cells(2, 1), f.Cells(Rows.Count, 3).End(3))
rngBD.Name = "DATAS"
a = [DATAS]
ListBox1.List = a
End Sub
Private Sub Worksheet_Deactivate()
ListBox1.Clear
End Sub
Clique sur l'image pour afficher en taille réelle
LoneWolf2.png
 

Staple1600

XLDnaute Barbatruc
Re : Aide selection ListBox

Bonsoir à tous

Lone-Wolf
Tu as tout ce qu'il faut pour mettre les mains dans le cambouis...
Tu as essayé au moins sur un classeur vierge de faire un des deux exemples que je t'ai soumis ?
Ont-ils fonctionné sur ton PC?

Si tu n'as pas pris la peine de faire cela, en vertu de quoi devrais-je faire plus ?

A te relire pour savoir ce qu'il en est ...
(L'as-tu fait ou pas le test ?)
 

Lone-wolf

XLDnaute Barbatruc
Re : Aide selection ListBox

Bonsoir Jean-Marie,

j'ai réussi à sortir mes mains du CAMP BOUIE ;). Je viens d'ajouter une nouvelle personne et je ne comprends pas pourquoi elle ne s'affiche pas dans la listbox; jai aussi un problème pour sélectionner 3 ou 4 personnes.

Sa serait sympa si tu y jette un oeil au moins... (par-ce que avec deux tu ne vois plus rien. ;)), pour corriger le tir.


A+ :cool:
 

Pièces jointes

  • EVALUATIONS.xlsm
    50.7 KB · Affichages: 52
  • EVALUATIONS.xlsm
    50.7 KB · Affichages: 51
  • EVALUATIONS.xlsm
    50.7 KB · Affichages: 66

Staple1600

XLDnaute Barbatruc
Re : Aide selection ListBox

Bonsoir à tous


Lone-Wolf
Set rngBD = f.Range(f.Cells(2, 1), f.Cells(Rows.Count, 3).End(3))
rngBD.Name = "DATAS"

Si ta plage diffère de rngBD, il faut adapter le code en conséquence.
(le nom [DATAS] s'actualise quand tu actives la feuille.

Si tu veux sélectionner plusieurs personnes dans la ListBox, il faut mettre la propriété MultiSelect sur true
(mais avec le code VBA que je t'ai soumis cela n'aurait pas de sens ...)

Je jette d'abord un œil sur mon abrutisseur de cervelles (la TV pour ne pas la nommer)
et je reviens plus tard regarder tes efforts, ta PJ, et tes marques de cambouis dans les cellules. ;)
 

Staple1600

XLDnaute Barbatruc
Re : Aide selection ListBox

Bonsoir à tous


Lone-Wolf
J'ai jeté un œil
(à part de VLookup, tu utilises du code VBA qui n'était pas dans mes propositions, donc pourquoi devrai-je aller plus loin ?) ;)

EDITION: Juste pour me faire plaisir (et accessoirement si cela peut t’intéresser ou intéresser), voici comment j'écrirai ces deux procédures:
Code:
Private Sub ListBox1_Click()
Dim z&, lig&, Wksh As Worksheet, p As Range
With Feuil1: Set p = .Range(.Cells(1, 1), .Cells(.Rows.Count, 3).End(3)): End With
With [D2]
    .Value = ListBox1.Value
    .Offset(, 1) = Application.VLookup(.Value, p, 2, 0): .Offset(, 7) = Application.VLookup(.Value, p, 3, 0)
End With
Set Wksh = Sheets("Competences"): lig = Wksh.Cells(Rows.Count, 1).End(3).Row
With Wksh.Range("A1:A" & lig)
    z = Application.Match([L2], .Range(.Address), 0)
    [B5].Resize(4) = Application.Transpose(Wksh.Cells(z, 1).Offset(, 1).Resize(, 4))
End With
End Sub

Code:
Private Sub Worksheet_Activate()
Dim p As Range
With Sheets(1): Set p = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(3)): End With: ListBox1.List = p.Value
End Sub
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Aide selection ListBox

Bonjour Jean-Marie,

Merci pour le code. Malgré les années sur le Forum, je vois que j'ai encore beaucoup de mal à écrire un code comme celui-ci.

Maintenant, pour finir le programme, j'aurais besoin encore de ton aide. Après de multiples tentatives avec des codes trouvés sur la toile, je n'arrive pas à trouver cette solution.

1. Selection Multi

2. Choix entre 1 et 4 noms de la liste

3. Copier de a1 à ak28 avec les noms - postes - contrats correspondants aux noms de la liste, pour chaque tableau.

4. Pour chaque tableau, le changement des jours-mois et années comme pour le 1er tableau.


Merci encore une fois pour ton aide :eek:


A+ :cool:
 

Lone-wolf

XLDnaute Barbatruc
Re : Aide selection ListBox

Re Jean-Marie,

pour la 4ème demande j'ai trouvé la solution.


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Integer, j As Integer, n As Integer, dat As Date
Application.EnableEvents = False
If Target.Count > 1 Then Exit Sub
On Error Resume Next
dat = CDate([B3] & "/" & [C3] & "/" & [B2])
For k = 4 To 36
n = n + 1
For j = 4 To 116 Step 29
Cells(j, k).Value = dat - Weekday(dat, vbMonday) + n
Cells(j, k).AutoFill Destination:=Cells(j, k), Type:=xlFillDefault
Cells(j, k).NumberFormat = "d"
Next j
Next k
Application.EnableEvents = True
End Sub


A+ :cool:
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 407
Membres
103 201
dernier inscrit
centrale vet