IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut Listview / double clique pour ouverture usf / et / choix des colonnes à afficher
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    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
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Par défaut
    Bonjour,

    regardes beforedoubleclick je pense que ça correspond à ton problème

  3. #3
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    En effet cela semble être la solution

    Si je le traduit en français :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    '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

  4. #4
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub ListBox1_DblClick
    'Cette macro se déclenche uniquement sur DoubleClick de ta Listbox
     
    Dim CodeBaseValue as variant 'Je ne sais pas ce qu'il y a dans ta base, dans le doute, Variant
     
    'S'il ya un double clique sur une item 
    'A- Je récupére la valeur CODEBASE correspondante à la ligne cliquer
     
    With Listbox1
         CodeBaseValue = .list(.listIndex, X)          'X correspond au numéro de colonne dont tu veux l'information
    End with
    'Tu récupere la valeur sur laquelle tu as double Click
     
    '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.'
     Me.hide
    Load GESTIONPOSTE
     
    With GESTIONPOSTE
     
         checkbox1.value = CodeBaseValue
         'Do some stuff
     
    End with
     
    GESTIONPOSTE.show
     
    En Sub
    Je pense que tu peux t'inspirer de ça.
    J'aimerais par ailleurs de suggérer d'utiliser des variables tableaux plutôt que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    .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
    Tu stock la range dans un tableau, et tu la parcours à la vitesse de l'éclair (Vu que tu ne stock que des valeurs dans ton tableaux). Ici tu parcours des objets propre à Excel (Cells), ce qui implique tout un tas de truc, et prend plus de temps.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Par défaut
    Bonjour,

    je vais peut être dire une bétise ne peut on pas faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    .ListItems.Add , , Sheets("BASE EMPLOI").Cells(i, 1)
     
    For m = 2 to 120
     
               .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, m)

  6. #6
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    @ Nico Chg

    Pourquoi ListBox1_DblClick ???? alors que je traite pour une listview?

    J'ai esssayé de faire LISTBDD_DblClick ()

    LISTBDD étant le nom de ma listview

    mais j'ai un message d'erreur

    erreur de compilation : membre de méthode ou de données introuvable !!!!!



    @ had478

    Avec ton code : ne pourrait-on pas faire :

    Au lieu de déterminer les colonnes jusqu'a 120 --> le top serait de dire jusqu'a la derniére colonne ... comme ca la listview est adaptable


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .ListItems.Add , , Sheets("BASE EMPLOI").Cells(i, 1)
     
    For m = 2 to 120
     
               .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("BASE EMPLOI").Cells(i, m)

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/06/2014, 11h48
  2. [WRS] Choix des rapports à afficher avec un seul user
    Par StéphanieB. dans le forum Outils BI
    Réponses: 2
    Dernier message: 24/10/2012, 12h46
  3. [Dojo] Choix des colonnes a afficher avec enregistrement du choix dans une dataGrid
    Par devkaty dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 13/07/2009, 14h34
  4. DataGrid et Choix des colonnes
    Par ludogoal dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 09/04/2009, 20h03
  5. [CR 8.5][logiciel] choix des enregistrement à afficher
    Par fisto dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 31/10/2007, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo