Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

GADENSEB

XLDnaute Impliqué
Bonjour le Forum,

je travaille sur une listview qui affiche une Bdd

1 ) Le début de code me renvoi les 20 premiéres colonnes de la Bdd, mais je voudrais selectionner que qq colonnes :
- par exemple : la 3 la 5 et 42 (au hasard)

Quelle partie du code à modifier (et à optimiser) ? --> Dans l'usf BDD


Code:
Sub IniListview()
Dim i As Long
Sheets("BASE EMPLOI").AutoFilterMode = False
With LISTBDD
   .ListItems.Clear
    With .ColumnHeaders
       .Clear
       .Add , , "1", 60
       .Add , , "2", 60
       .Add , , "3", 60
       .Add , , "4", 60
       .Add , , "5", 60
       .Add , , "6", 60
       .Add , , "7", 60
       .Add , , "8", 200
       .Add , , "9", 200
       .Add , , "10", 200
       .Add , , "11", 200
       .Add , , "12", 200
       .Add , , "13", 60
       .Add , , "14", 160
       .Add , , "15", 60
       .Add , , "16", 160
       .Add , , "17", 60
       .Add , , "18", 160
       .Add , , "19", 60
       .Add , , "20", 160
       .Add , , , 0
    End With

 .View = lvwReport
 .FullRowSelect = True
 .Gridlines = True
        
            For i = 2 To Sheets("BASE EMPLOI").Range("A65536").End(xlUp).Row
           .ListItems.Add , , Sheets("BASE EMPLOI").Cells(i, 1)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 2)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 3)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 4)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 5)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 6)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 7)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 8)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 9)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 10)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 11)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 12)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 13)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 14)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 15)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 16)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 17)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 18)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 19)
           .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, 20)
           .ListItems(.ListItems.Count).ListSubItems.Add , , i
        
        Next
    
    LISTBDD.ListItems(1).Selected = False
    Set LISTBDD.SelectedItem = Nothing

End With

End Sub



2) Je voudrais que la ligne que je double clique (code non commencé) dans la listview me permette d'ouvrir l'usf GESTIONPOSTE en récupérant les données de la ligne concernée dans le listview
Le pivot est la colonne CODEBASE...



Est-ce que c'est clair ?


Bonne aprem

Seb
 

Pièces jointes

  • BASE EMPLOI - DEMO.xlsm
    246.3 KB · Affichages: 63
  • BASE EMPLOI - DEMO.xlsm
    246.3 KB · Affichages: 81
  • BASE EMPLOI - DEMO.xlsm
    246.3 KB · Affichages: 91

GADENSEB

XLDnaute Impliqué
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

ListBox1_DblClick semble être la solution

Si je le traduit en français :


Code:
Sub ListBox1_DblClick

S'il ya un double clique sur une item 
A- Je récupére la valeur CODEBASE correspondante à la ligne cliquer 

B-Puis je lance l'userform  GESTIONPOSTE en remplissant tout les textbox en faisant une recherche verticale dans l'onglet BASE EMPLOI sur la valeur CODEBASE mise en mémoire.


En Sub


Pour le B on peut aussi utiliser la macro prévue à cet effet (a optimiser) stockée dans l'onglet GESTION


Code:
'Génére l'userform GESTIONPOSTE en cliquant sur le CODEBASE
   On Error Resume Next
  ' Function link(c As Range)
 Dim j&
    j = Range("I36").End(xlDown).Row
    If Target.Row <= j And Target.Row >= 36 Then
    
        nNumeroDeLigne = Application.WorksheetFunction.Match(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:a2000"), 0)

         GESTIONPOSTE.CODEBASE = Cells(Target.Row, "I").Value
         GESTIONPOSTE.USER = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 2, False)
         GESTIONPOSTE.SOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 3, False)
         GESTIONPOSTE.ZONE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 4, False)
         GESTIONPOSTE.TYPESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 5, False)
         GESTIONPOSTE.NOMCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 7, False)
         GESTIONPOSTE.PRENOMCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 8, False)
         GESTIONPOSTE.FONCTIONCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 9, False)
         GESTIONPOSTE.TELEPHONECONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 10, False)
         GESTIONPOSTE.PORTABLECONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 11, False)
         GESTIONPOSTE.MAILCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 12, False)
         GESTIONPOSTE.ADRESSESCOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 14, False)
         GESTIONPOSTE.CPSOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 16, False)
         GESTIONPOSTE.VILLESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 17, False)
         GESTIONPOSTE.SITESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 18, False)
        
   
        GESTIONPOSTE.DATEINSCRIPTION = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 20)
        GESTIONPOSTE.DATEMAJ = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 21)
        GESTIONPOSTE.DATEANNONCE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 36)
        GESTIONPOSTE.DATEREPONSE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 37)
        GESTIONPOSTE.RELANCE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 38)
        GESTIONPOSTE.DATERETOUR = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 39)
    
        
        GESTIONPOSTE.LOGIN = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 22, False)
        GESTIONPOSTE.MDP = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 23, False)
        GESTIONPOSTE.ANNONCESBYMAIL = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 24, False)
        GESTIONPOSTE.COMMENTAIRES = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 25, False)
        GESTIONPOSTE.POSTE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 32, False)
        GESTIONPOSTE.CONTRAT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 33, False)
        GESTIONPOSTE.LIEU = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 34, False)
        GESTIONPOSTE.REMUNERATION = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 35, False)
        GESTIONPOSTE.TEXTECANDIDATURE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 40, False)
        GESTIONPOSTE.ANNONCE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 40, False)
        GESTIONPOSTE.COMMENTAIRESCANDIDATURE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 41, False)
        GESTIONPOSTE.NBENTRETIENS = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 46, False)
        GESTIONPOSTE.CRENTRETIENS = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB2000"), 52, False)
      
        GESTIONPOSTE.Show
        
    End If


Est-ce traduisible en macro ?

Bonne soirée

Seb
 

ChTi160

XLDnaute Barbatruc
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

Bonsoir Seb
Bonsoir le fil
Bonsoir le Forum

je n'ai pas compris ce que tu veux dire par :

"Le début de code me renvoi les 20 premiéres colonnes de la Bdd, mais je voudrais selectionner que qq colonnes :
- par exemple : la 3 la 5 et 42 (au hasard)"
mais afin de participer Lol
voila ce que j'ai modifié :
Code vba:
Sub IniListview()
Dim i As Long
Dim C As Byte
Dim LstItem As MSComctlLib.ListItem
Dim LstSitem As MSComctlLib.ListSubItem
Dim Ws_Source As Worksheet
Set Ws_Source = Worksheets("BASE EMPLOI")
Ws_Source.AutoFilterMode = False
With LISTBDD
.ListItems.Clear
With .ColumnHeaders
.Clear
.Add , , "1", 60
.Add , , "2", 60
.Add , , "3", 60
.Add , , "4", 60
.Add , , "5", 60
.Add , , "6", 60
.Add , , "7", 60
.Add , , "8", 200
.Add , , "9", 200
.Add , , "10", 200
.Add , , "11", 200
.Add , , "12", 200
.Add , , "13", 60
.Add , , "14", 160
.Add , , "15", 60
.Add , , "16", 160
.Add , , "17", 60
.Add , , "18", 160
.Add , , "19", 60
.Add , , "20", 160
.Add , , , 0
End With


.View = lvwReport
.FullRowSelect = True
.Gridlines = True

For i = 2 To Ws_Source.Range("A65536").End(xlUp).Row
Set LstItem = .ListItems.Add(, , Ws_Source.Cells(i, 1))
With LstItem
For C = 2 To 20
.ListSubItems.Add , , Ws_Source.Cells(i, C)
.ListSubItems.Add , , i
Next C
End With
Next i
.ListItems(1).Selected = False
Set .SelectedItem = Nothing
End With
End Sub




Dans l'attente d'explications !
Bonne fin de soirée
Amicalement
Jean Marie
 

GADENSEB

XLDnaute Impliqué
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

"Le début de code me renvoi les 20 premiéres colonnes de la Bdd, mais je voudrais selectionner que qq colonnes :
- par exemple : la 3 la 5 et 42 (au hasard)"

Veut dire que le code affiche les 20 premières colonnes de la base de données alors que moi je ne voudrais en sélectionner que qq unes sur l’ensemble des des colonnes de la bdd

Je viens d'avoir une idée
Le premier code doit renvoyer TOUTES les colonnes de la bdd

et un second code (par exemple une case à cocher) me permeterrais de ne renvoyer que qq colonnes prélablement choisies ....

Vois-tu ce que je veux dire ?



Merci pour ce code !


As-tu vu mon poste de 21h12 ?

Bonne soirée

seb
 

ChTi160

XLDnaute Barbatruc
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

Re
avant d'aller au Dodo lol
Oui j'ai regarde ton deuxième post (pas encore étudié)
la détermination des colonnes a prendre en compte doit se faire quant ?
car tu dis :
et un second code (par exemple une case à cocher) me permeterrais de ne renvoyer que qq colonnes prélablement choisies ....
Bonne soirée
je regarde ta réponse demain .
Amicalement
Jean Marie
 

Regueiro

XLDnaute Impliqué
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

Bonsoir le Fil
un exemple de remplissage pour les entêtes de colonnes
Toujours à partir d'un tableau
Ici mon tableau à 2 colonnes

Code:
Option Explicit
Private Sub UserForm_Initialize()
Dim WS As Worksheet
Dim LST As ListObject
Dim Temp
Dim y
Dim NbCol
Dim Largeur

Set WS = Worksheets("DATA")
Set LST = WS.ListObjects("Tableau1")
MsgBox LST.DataBodyRange.Columns.Count
NbCol = LST.DataBodyRange.Columns.Count
With Me.ListView1
.Gridlines = True
.HideColumnHeaders = False
.View = lvwReport
    With .ColumnHeaders
        For y = 1 To NbCol
            Largeur = LST.DataBodyRange.Columns(y).Width * 1.1
            .Add , , y, Largeur
        Next y
    End With
    
 With .ListItems
           .Add , , "Riri"
           .Add , , "Fifi"

         End With
End With

End Sub
A+
 

GADENSEB

XLDnaute Impliqué
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

@ ChTi160 :
Je cherche :
- Un code qui me rapatrie toutes les colonnes de la bdd
- Un code (par exemple en cliquant sur un bouton ou case a cocher) qui me fait appparaitre que les colonnes A-C-D-E-AF

As-tu une idée pour le second code

@grisan29 :
Yes j'ai mis le topic sur les 2 forums.
Quand j'ai un gros doute, je poste sur les 2 mais à chaque fois je diffuse les réponses sur les deux forums :eek:


@Regueiro :
Joli code !
Pourquoi passer par un tableau ?



Merci à tous les trois

Bonne journée

Seb
 

ChTi160

XLDnaute Barbatruc
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

Bonjour Seb,le Fils
Bonjour le Forum

1° pour repondre a la place de Regueiro(que je salue)
il l'a dit :"C'est plus rapide" lol
2° pour ce qui est de ton exemple :
Un code (par exemple en cliquant sur un bouton ou case a cocher) qui me fait appparaitre que les colonnes A-C-D-E-AF
a:tu veux dire masquer dans la ListView les autres Colonnes ?
b:comment déterminer les colonnes a conserver ?
merci par avance
Amicalement
Jean Marie
 

GADENSEB

XLDnaute Impliqué
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

Re !

a - Oui masquer les autres colonnes dans la listview

b - Les colonnes à conserver sont celles qui correspondent aux colonnes A-C-D-E-AF de la base de données (onglet BASEMPLOI).


Bonne aprem

seb
 

ChTi160

XLDnaute Barbatruc
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

Re
une idée comme une autre
sélectionner les entêtes dans une listView
voir Fichier joint
image : Selection Colonnes.jpg
Bonne fin de Journée
Amicalement
Jean Marie
 

ChTi160

XLDnaute Barbatruc
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

Arff
je n'avais pas lu ton dernier post
ok juste les colonnes prédéfinies soit :A-C-D-E-AF
je regarde après "je suis dans la peinture lol
Amicalement
Jean Marie
 

GADENSEB

XLDnaute Impliqué
Re : Listview / double clique pour ouverture usf / et / choix des colonnes à afficher

Ca marche !
J'aime beaucoup ta maniere de selectionner les entete de colonnes

JE VALIDE !!!

en attendant j'ai trouvé un fichier qui pourrait répondre à la parte B de mon premier poste ! --> l'ouverture d'un second USF

Une piste à creuser

Bonne peinture
 

Pièces jointes

  • Test_Listview1.xlsm
    38.4 KB · Affichages: 73
  • Test_Listview1.xlsm
    38.4 KB · Affichages: 102
  • Test_Listview1.xlsm
    38.4 KB · Affichages: 115

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 983
Membres
103 419
dernier inscrit
mk29