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 :

remplir une listview2 a l'aide d'une listview1


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Par défaut remplir une listview2 a l'aide d'une listview1
    Bonjour

    Voilà, j'aimerais remplir une listview2, soit en cochant une checkbox, soit en Dblclik sur la ligne d'une Listview1, mais je ne connais pas du tout la démarche pour remplir cette seconde listview. Voilà ce que j'ai pour l'instant.

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Private Sub UserForm_initialize()
     
    ' Dim hwnd As Long, exLong As Long, zFactor As Integer
     ' hwnd = FindWindowA(vbNullString, Me.Caption)
     ' exLong = GetWindowLongA(hwnd, -16)
     ' If exLong And &H880000 Then SetWindowLongA hwnd, -16, exLong And &HFF77FFFF
     ' zFactor = 100 * CInt(Application.Width / Me.Width)
     ' Me.Width = Application.Width
     ' Me.Height = Application.Height
    '                'Dim hwnd As Long
     ' hwnd = FindWindowA("Thunder" & IIf(Application.version Like "8*", "X", "D") & "Frame", Me.Caption)
     ' SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
     
    Dim t As Byte, x As Byte, j As Byte
    Dim c As Range
     
     
    '''''''''''''''''''''''Code pour couleur listview
    Dim i&: i = (ListView1.Width * 1 / 3) - 6 & (ListView2.Width * 1 / 3) - 6
    hwnd = GetWindow(FindWindow(vbNullString, Me.Caption), 5)
    With ListView1
    .View = lvwReport
    .FullRowSelect = True
    End With
    hFont = CreateFont(13, 0, 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, 0, "Cambria")
    OldProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WinProc)
     
    ''''''''''''''''''''''''''''''''''''
     
    'on remplit les entetes de colonnes de la listview
    With ListView1
            With .ColumnHeaders
                .Clear 'Supprime les anciens entêtes
     
                'Ajout des colonnes
                .Add , , "Désignation Matériel", 140, lvwColumnLeft 'obligatoire alignement a droite premiere colonne
                .Add , , "Nom", 140, lvwColumnCenter
                .Add , , "Type", 60, lvwColumnCenter
                .Add , , "Marque", 60, lvwColumnCenter
                .Add , , "Taille", 50, lvwColumnCenter
           End With
     
        .View = lvwReport 'affichage en mode Rapport
        .Gridlines = True 'affichage d'un quadrillage
        .FullRowSelect = True 'Sélection des lignes comlètes
     
     For i = 3 To Sheets("Matériel").Range("A65536").End(xlUp).Row
    .ListItems.Add , , Sheets("Matériel").Cells(i, 1) 'référence
    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Matériel").Cells(i, 2) 'désignation
    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Matériel").Cells(i, 3) 'qté en stock
    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Matériel").Cells(i, 4) ', "## ##0.00 €") 'PVHT
    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Matériel").Cells(i, 5) 'durée
    .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Matériel").Cells(i, 6) ', "# ##0.000") 'poids MA
     
     '==========Mise en forme de la troisième colonne première exclus (3)==========
     'If Sheets("Matériel").Cells(i, 16) > 0 Then
        .ListItems(.ListItems.Count).ListSubItems(1).ForeColor = &H4040
         'Else
        .ListItems(.ListItems.Count).ListSubItems(1).ForeColor = &HFF
        .ListItems(.ListItems.Count).ListSubItems(1).Bold = True
       ' End If:
    Next: End With
     
    End Sub
     
    Private Sub ListView1_Click()
     
    Dim t As Byte, x As Byte, j As Byte
    Dim c As Range
     
    ListView2.Visible = True
    'on remplit les entetes de colonnes de la listview
    With ListView2
            With .ColumnHeaders
                .Clear 'Supprime les anciens entêtes
     
                'Ajout des colonnes
                .Add , , "Désignation Matériel", 140, lvwColumnLeft 'obligatoire alignement a droite premiere colonne
                .Add , , "Nom", 140, lvwColumnCenter
                .Add , , "Type", 60, lvwColumnCenter
                .Add , , "Marque", 60, lvwColumnCenter
                .Add , , "Taille", 50, lvwColumnCenter
           End With
     
        .View = lvwReport 'affichage en mode Rapport
        .Gridlines = True 'affichage d'un quadrillage
        .FullRowSelect = True 'Sélection des lignes comlètes
     End With
     End Sub
    Merci a vous

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    Pour ma part, j'utilise des tables ou une zone de cellules comme source des Listes
    Il suffit d'ajouter un enregistrement dans une table ou la zone et de rafraichir l'affichage
    Simple, non ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Hello,

    Voici un exemple de ListView liées.

    ListView1 et ListView2 dans un UserForm et colle ces codes dans ce dernier..
    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
    Dim Derli As Long, i As Long
     
    Private Sub UserForm_Initialize()
     
        Derli = Feuil1.Range("A65536").End(xlUp).Row
     
        With ListView1
            .Gridlines = True
            .View = 3
            With .ColumnHeaders
                .Add , , "COLONNE ""A"" ", 100
            End With
            For i = 1 To Derli
                .ListItems.Add , , Feuil1.Cells(i, 1).Value
            Next i
        End With
     
        With ListView2
            .Gridlines = True
            .View = 3
            With .ColumnHeaders
                .Add , , "COLONNE ""B"" ", 100
            End With
        End With
     
    End Sub
    Private Sub ListView1_Click()
     
        With ListView2
            .ListItems.Clear
            For i = 1 To ListView1.ListItems.Count
                If ListView1.ListItems(i).Checked = True Then .ListItems.Add , , Feuil1.Cells(i, 2).Value
            Next i
        End With
     
    End Sub
    Dans ce code, les données sont supposées être en Feuil1 cellules A1:B...

    Bravo à Lii d'Excel Downloads !

    Cdt, Antoniom.

Discussions similaires

  1. Remplir un tableau a l'aide d'une boucle
    Par cefyou91 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/06/2015, 18h51
  2. [AC-2007] Créer/Remplir un sous-formulaire à l'aide d'une requête
    Par Prettyletter dans le forum VBA Access
    Réponses: 24
    Dernier message: 13/05/2014, 11h25
  3. Réponses: 1
    Dernier message: 29/06/2013, 18h26
  4. [AC-2003] remplir une table a l'aide d'une autre
    Par host22 dans le forum Access
    Réponses: 9
    Dernier message: 24/03/2010, 08h26
  5. Réponses: 2
    Dernier message: 02/08/2005, 09h40

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