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 :

Recuperer une date d'une listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 60
    Par défaut Recuperer une date d'une listbox
    Bonjour, Suite à un premier Help, Theze m'a donné le code ci-dessous. Je n'arrive pas à l'adapter à mon fichier.
    Je souhaiterais que la valeur de LaDate soit celle que je selectionne dans une listbox.
    De plus quand les données se copient, il faudrait qu'une nouvelle recherche se copie à la suite de la première (actuellement, la seconde écrase la première).
    Merci d'avance
    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
    Sub test()
    Dim Tbl()
        Dim Plage As Range
        Dim Cel As Range
        Dim LaDate As Date
        Dim Adr As String
        Dim I As Integer
     
        'date cherchée (à adapter)
        LaDate = #8/31/2011#
     
        'plage où s'effectue la recherche de date (colonne A)
        Set Plage = Range([T1], [T65536].End(xlUp))
     
        'recherche la date
        Set Cel = Plage.Find(LaDate, , xlValues, xlWhole)
     
        'si trouvé
        If Not Cel Is Nothing Then
     
            'mémorise l'adresse de la 1ère cellule
            Adr = Cel.Address
     
            'boucle pour récupérer toutes les dates
            'et stocke les valeurs des colonnes A à D
            'dans un tableau
            Do
     
                I = I + 1
     
                ReDim Preserve Tbl(1 To 6, 1 To I)
     
                Tbl(1, I) = Cel
                Tbl(2, I) = Cel.Offset(0, 1)
                Tbl(3, I) = Cel.Offset(0, 2)
                Tbl(4, I) = Cel.Offset(0, 3)
                Tbl(5, I) = Cel.Offset(0, 4)
                Tbl(6, I) = Cel.Offset(0, 5)
                Set Cel = Plage.FindNext(Cel)
     
            Loop While Adr <> Cel.Address
     
        End If
     
        'colle le résultat à partir de la cellule G1
      Range(Cells(1, 7), Cells(UBound(Tbl, 2), 6 + UBound(Tbl, 1))) _
       = Application.WorksheetFunction.Transpose(Tbl())
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir gilou41,

    Dans mon exemple, la ListBox est une contrôle ActiveX incorporé dans Feuil1 (nom de la feuille dans le VBE et non celui d'Excel), Les valeurs sont collées les unes à la suite des autres dans la colonne G, adapte :
    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
     
    Sub Test()
     
        Dim Tbl()
        Dim Plage As Range
        Dim Cel As Range
        Dim LaDate As Date
        Dim Adr As String
        Dim I As Integer
        Dim L As Long
     
        'la date cherchée est celle choisie dans la ListBox
        '(Contrôle ActiveX située dans la Feuil1)
        'Nom dans le VBE = Feuil1
        With Feuil1.ListBox1
     
            'si pas de choix, message et fin
            If .ListIndex = -1 Then
     
                MsgBox "Vous devez faire un choix !"
                Exit Sub
     
            End If
     
            LaDate = .List(.ListIndex)
     
        End With
     
        'plage où s'effectue la recherche de date (colonne A)
        Set Plage = Range([T1], [T65536].End(xlUp))
     
        'recherche la date
        Set Cel = Plage.Find(LaDate, , xlValues, xlWhole)
     
        'si trouvé
        If Not Cel Is Nothing Then
     
            'mémorise l'adresse de la 1ère cellule
            Adr = Cel.Address
     
            'boucle pour récupérer toutes les dates
            'et stocke les valeurs des colonnes A à D
            'dans un tableau
            Do
     
                I = I + 1
     
                ReDim Preserve Tbl(1 To 6, 1 To I)
     
                Tbl(1, I) = Cel
                Tbl(2, I) = Cel.Offset(0, 1)
                Tbl(3, I) = Cel.Offset(0, 2)
                Tbl(4, I) = Cel.Offset(0, 3)
                Tbl(5, I) = Cel.Offset(0, 4)
                Tbl(6, I) = Cel.Offset(0, 5)
     
                Set Cel = Plage.FindNext(Cel)
     
            Loop While Adr <> Cel.Address
     
        End If
     
        'colle le résultat à partir de la première cellule vide en colonne G
        If [G65536].End(xlUp).Row = 1 Then L = 1 Else L = [G65536].End(xlUp).Row + 1
        Range(Cells(L, 7), Cells(L + UBound(Tbl, 2) - 1, 6 + UBound(Tbl, 1))) _
        = Application.WorksheetFunction.Transpose(Tbl())
     
    End Sub
    Hervé.

Discussions similaires

  1. [AC-2007] Comparer une date d'une table et une date saisie
    Par minooo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/03/2019, 21h40
  2. [DeskI XiR2] Comparaison d'une valeur à une date et à une date relative
    Par courti01 dans le forum Débuter
    Réponses: 1
    Dernier message: 07/11/2010, 21h39
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 20h16

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