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 :

code Listbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut code Listbox
    Bonjour,

    J'ai un soucis dans mon code et j'arrive pas à voir pourquoi. A vrai dire je débute en VBA

    J'arrive pas à afficher plus de 10 (j'en ai 12 à afficher) éléments dans le tableau. Des que je rajoute dans le code pour afficher d'autre lignes j'ai un bug.


    Autres questions:
    Je n'ai pas de doublons dans ma sélection de critères sauf pour mes colonnes contenant juste des nombres => J'ai réussi à enlever mes doublons sur mes colonnes contenant des nombres en forçant le type de donnée en format "texte". Y a t'il une autre solution, car ca m'oblige à double cliquez sur mes cellules puis à faire "entrée" pour valider.

    Merci par avance de votre aide

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    et ça coince à quelle ligne exactement, ici, ça à l'air de fonctionner mais bon...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    Ah ce niveau la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .List(.ListCount - 1, 8) = Range("I" & lgLigDeb).Value
    .List(.ListCount - 1, 9) = Range("J" & lgLigDeb).Value
    Des que je rajoute une ligne comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .List(.ListCount - 1, 10) = Range("K" & lgLigDeb).Value
    ça plante

  4. #4
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour

    ColumnCount a une limite de 10 (0 a 9)

    Désolé



    Bon courage

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    Merci de la réponse rapide.

    Arfff Çà m'embête beaucoup ça.

  6. #6
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    tu peux peu être en mettre deux cote à cote et regler le probleme

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    oui pas bête

    Sinon j'ai vu ce code sur internet et il marche. J'arrive à avoir plus de 10 colonnes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Plg as Variant
     
    With Sheets("Données1)
    Plg = .Range("A0:K40")
    End With
     
    With ListBoxParquet
    .Clear
    .ColumnCount = 11
    .ColumnWidths = "33;65;35;30;57;48;65;35;52;35;35"
    .List = Plg
    End With

    Mais est ce qu'il est adaptable avec mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .List(.ListCount - 1, 8) = Range("I" & lgLigDeb).Value
    .List(.ListCount - 1, 9) = Range("J" & lgLigDeb).Value
    etc, etc

  8. #8
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    tu peux tester cette adaptation

    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
        Dim Tableau() As Variant
        Dim i As Integer
     
     
        ' Boucle de la 2me à la dernière ligne de la feuille
        For lgLigDeb = 2 To Range("A" & Cells.Rows.Count).End(xlUp).Row
     
            If Range("A" & lgLigDeb).Value Like Critere1 And Range("B" & lgLigDeb).Value _
                Like Critere2 And Range("D" & lgLigDeb).Value Like Critere3 And _
                Range("E" & lgLigDeb).Value Like Critere4 And Range("F" & _
                lgLigDeb).Value Like Critere5 And Range("G" & lgLigDeb).Value _
                Like Critere6 And Range("H" & lgLigDeb).Value Like Critere7 Then
     
                i = i + 1
                ReDim Preserve Tableau(1 To 11, 1 To i)
     
                Tableau(1, i) = Range("A" & lgLigDeb).Value
                Tableau(2, i) = Range("B" & lgLigDeb).Value
                Tableau(3, i) = Range("C" & lgLigDeb).Value
                Tableau(4, i) = Range("D" & lgLigDeb).Value
                Tableau(5, i) = Range("E" & lgLigDeb).Value
                Tableau(6, i) = Range("F" & lgLigDeb).Value
                Tableau(7, i) = Range("G" & lgLigDeb).Value
                Tableau(8, i) = Range("H" & lgLigDeb).Value
                Tableau(9, i) = Range("I" & lgLigDeb).Value
                Tableau(10, i) = Range("J" & lgLigDeb).Value
                Tableau(11, i) = lgLigDeb
            End If
        Next lgLigDeb
     
        ListBoxLocataire.List() = Application.Transpose(Tableau)


    bonne soirée
    michel

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    Bonjour,

    Nickel, c'est ce qu'il me fallait. Merci

    Je commence à en voir le bout, j'ai juste quelques détails à régler:

    1. Quand on clic sur prix en bas a droite, si on met un chiffre avec une point => bug. Mais avec un virgule ça fonctionne très bien. On peut y remédier?

    2. J'ai modifié le code pour que lorsque l'on sélectionne des critères, la colonne de ses critères ne s'affiche pas dans mon tableau. Ca fonctionne bien mais si je sélectionne un critère non présent dans ma listbox => bug.

    3. Et enfin. J'ai une colonne dans mon fichier excel qui contient le nom d'un fichier PDF. J'aimerai que lorsque l'on clic sur une ligne de la listbox, il m'ouvre le fichier pdf correspondant. J'arrive à avoir un fichier pdf en cliquant sur une ligne mais avec un chemin absolu et sans recherche du bon fichier (cf code)

    PS: dans la pièce jointe je n'ai mis qu'un fichier pdf.

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    1. Quand on clic sur prix en bas a droite, si on met un chiffre avec une point => bug. Mais avec un virgule ça fonctionne très bien. On peut y remédier?
    Oui, sans doute, si tu nous dis de quel contrôle il s'agit
    Le mieux est que tu montres où ça bug (la ligne concernée)... et donc... avec le code

    2. J'ai modifié le code pour que lorsque l'on sélectionne des critères, la colonne de ses critères ne s'affiche pas dans mon tableau. Ca fonctionne bien mais si je sélectionne un critère non présent dans ma listbox => bug.
    Où sélectionnes-tu ce critère ? Pas dans la liste puisqu'il n'existe pas... Sans le code pas de salut...

    3. Et enfin. J'ai une colonne dans mon fichier excel qui contient le nom d'un fichier PDF. J'aimerai que lorsque l'on clic sur une ligne de la listbox, il m'ouvre le fichier pdf correspondant.Pour ça, on peut te dépanner, mais le mieux est de le faire à partir de ton code

    J'arrive à avoir un fichier pdf en cliquant sur une ligne mais avec un chemin absolu et sans recherche du bon fichier (cf code)
    C'est gentil de mettre le pdf mais ce qui serait intéressant serait de pouvoir tester ce code... et là, tu nous obliges à tout ré-écrire...
    En outre, il toujours intéressant de placer le code sur le forum. Ton fichier joint disparaîtra bientôt, le code reste. Ainsi, si une solution t'es donnée, il sera possible de la retrouver

    NB - Je sais que tes questions concernent un même fichier, mais essaie autant que possible de ne poser qu'une question par discussion. Sinon, les réponses qui vont t'être données devront rappeler chaque fois la question concernée.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    Merci pou cette rapidité . En effet je poste tous ici (peut être à tord) pour éviter d'ouvrir autant de sujet que de questions.

    Pour le code désolé, je pensais que la pièce jointe contenant la base et le code suffirait.

    Pour cette discution je continue ici? En notant pour la prochaine fois de faire d'autres post suivant le type de mes questions.

    1.
    Voici ou ça bloque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                If parametres.bouton_pv = True Then
                    Tableau(j, i) = Range("L" & lgLigDeb).Value * parametres.Coeff.Value
                Else
                    Tableau(j, i) = Range("L" & lgLigDeb).Value
                End If
    2.
    Le code modifié pour enlever les colonnes en fonction des critères:
    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
        ' Boucle de la 2me à la dernière ligne de la feuille
        For lgLigDeb = 2 To Range("A" & Cells.Rows.Count).End(xlUp).Row
     
            If Range("A" & lgLigDeb).Value Like Critere1 And Range("B" & lgLigDeb).Value Like Critere2 And Range("D" & lgLigDeb).Value Like Critere3 And _
                Range("E" & lgLigDeb).Value Like Critere4 And Range("F" & lgLigDeb).Value Like Critere5 And Range("G" & lgLigDeb).Value Like Critere6 And _
                Range("H" & lgLigDeb).Value Like Critere7 And Range("I" & lgLigDeb).Value Like Critere8 And Range("J" & lgLigDeb).Value Like Critere9 And _
                Range("M" & lgLigDeb).Value Like Critere10 Then
     
                i = i + 1
                j = 1
                ReDim Preserve Tableau(1 To 13, 1 To i)
     
                If RechercheC1.Value = "" Then
                    Tableau(j, i) = Range("A" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC2.Value = "" Then
                    Tableau(j, i) = Range("B" & lgLigDeb).Value
                    j = j + 1
                End If
                Tableau(j, i) = Range("C" & lgLigDeb).Value
                j = j + 1
                If RechercheC3.Value = "" Then
                    Tableau(j, i) = Range("D" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC4.Value = "" Then
                    Tableau(j, i) = Range("E" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC5.Value = "" Then
                    Tableau(j, i) = Range("F" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC6.Value = "" Then
                    Tableau(j, i) = Range("G" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC7.Value = "" Then
                    Tableau(j, i) = Range("H" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC8.Value = "" Then
                    Tableau(j, i) = Range("I" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC9.Value = "" Then
                    Tableau(j, i) = Range("J" & lgLigDeb).Value
                    j = j + 1
                End If
                Tableau(j, i) = Range("K" & lgLigDeb).Value
                j = j + 1
     
                If parametres.bouton_pv = True Then
                    Tableau(j, i) = Range("L" & lgLigDeb).Value * parametres.Coeff.Value
                Else
                    Tableau(j, i) = Range("L" & lgLigDeb).Value
                End If
                'j = j + 1
                'Tableau(j, i) = lgLigDeb
            End If
        Next lgLigDeb
     
        ListBoxParquet.List() = Application.Transpose(Tableau)

    3.

    Le code ma fonction pour afficher le pdf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ListBoxParquet_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
            Shell "cmd /c start acrord32.exe ""C:\Documents and Settings\FABIEN.ARB114\Bureau\Demande de prix parquet\Fiches techniques\quorum.pdf"""
     
    End Sub
    pour l'instant il ouvre quoiqu'il arrive le même fichier pdf.


    Merci pour votre précieuse aide


    PS: la totalité de mon code:

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
     
    Private Sub Aff_parametres_Click()
        parametres.Show
    End Sub
     
    Private Sub Imprimer_Click()
        If Application.Dialogs(xlDialogPrinterSetup).Show = True Then Recherche.PrintForm
    End Sub
     
    Private Sub ListBoxParquet_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        'pour ouvrir un fichier pdf
            Shell "cmd /c start acrord32.exe ""C:\Documents and Settings\FABIEN.ARB114\Bureau\Demande de prix parquet\Fiches techniques\quorum.pdf"""
     
    End Sub
     
    Private Sub RechercheC1_Change()
        ' Rechercher les données en fonction des critères sélectionnés
        Call Rechercher
    End Sub
     
    Private Sub RechercheC2_Change()
        Call Rechercher
    End Sub
     
    Private Sub RechercheC3_Change()
        Call Rechercher
    End Sub
     
    Private Sub RechercheC4_Change()
        Call Rechercher
    End Sub
     
    Private Sub RechercheC5_Change()
        Call Rechercher
    End Sub
     
    Private Sub RechercheC6_Change()
        Call Rechercher
    End Sub
     
    Private Sub RechercheC7_Change()
        Call Rechercher
    End Sub
     
    Private Sub RechercheC8_Change()
        Call Rechercher
    End Sub
     
    Private Sub RechercheC9_Change()
        Call Rechercher
    End Sub
     
    Private Sub RechercheC10_Change()
        Call Rechercher
    End Sub
     
    Private Sub UserForm_Initialize()
        Range("A2").Select
     
        ' Initialiser les listes des critères
        Call InitCombo(RechercheC1, "A")
        Call InitCombo(RechercheC2, "B")
        Call InitCombo(RechercheC3, "D")
        Call InitCombo(RechercheC4, "E")
        Call InitCombo(RechercheC5, "F")
        Call InitCombo(RechercheC6, "G")
        Call InitCombo(RechercheC7, "H")
        Call InitCombo(RechercheC8, "I")
        Call InitCombo(RechercheC9, "J")
        Call InitCombo(RechercheC10, "M")
     
        ' Rechercher les données en fonction des critères sélectionnés
        ' ce call est pas obligatoire, tester sans
        Call Rechercher
    End Sub
     
    Private Sub Rechercher()
        ' Rechercher les données en fonction des critères
        Dim rCel As Range
        Dim lgLig As Long
        Dim lgLigDeb As Long
        Dim i As Integer
        Dim j As Integer
     
        Dim Critere1 As String
        Dim Critere2 As String
        Dim Critere3 As String
        Dim Critere4 As String
        Dim Critere5 As String
        Dim Critere6 As String
        Dim Critere7 As String
        Dim Critere8 As String
        Dim Critere9 As String
        Dim Critere10 As String
     
        Critere1 = "*"
        If RechercheC1.Value <> "" Then Critere1 = RechercheC1.Value
        Critere2 = "*"
        If RechercheC2.Value <> "" Then Critere2 = RechercheC2.Value
        Critere3 = "*"
        If RechercheC3.Value <> "" Then Critere3 = RechercheC3.Value
        Critere4 = "*"
        If RechercheC4.Value <> "" Then Critere4 = RechercheC4.Value
        Critere5 = "*"
        If RechercheC5.Value <> "" Then Critere5 = RechercheC5.Value
        Critere6 = "*"
        If RechercheC6.Value <> "" Then Critere6 = RechercheC6.Value
        Critere7 = "*"
        If RechercheC7.Value <> "" Then Critere7 = RechercheC7.Value
        Critere8 = "*"
        If RechercheC8.Value <> "" Then Critere8 = RechercheC8.Value
        Critere9 = "*"
        If RechercheC9.Value <> "" Then Critere9 = RechercheC9.Value
        Critere10 = "*"
        If RechercheC10.Value <> "" Then Critere10 = RechercheC10.Value
     
        ListBoxParquet.Clear
     
        Dim Tableau() As Variant
     
        ' Boucle de la 2me à la dernière ligne de la feuille
        For lgLigDeb = 2 To Range("A" & Cells.Rows.Count).End(xlUp).Row
     
            If Range("A" & lgLigDeb).Value Like Critere1 And Range("B" & lgLigDeb).Value Like Critere2 And Range("D" & lgLigDeb).Value Like Critere3 And _
                Range("E" & lgLigDeb).Value Like Critere4 And Range("F" & lgLigDeb).Value Like Critere5 And Range("G" & lgLigDeb).Value Like Critere6 And _
                Range("H" & lgLigDeb).Value Like Critere7 And Range("I" & lgLigDeb).Value Like Critere8 And Range("J" & lgLigDeb).Value Like Critere9 And _
                Range("M" & lgLigDeb).Value Like Critere10 Then
     
                i = i + 1
                j = 1
                ReDim Preserve Tableau(1 To 13, 1 To i)
     
                If RechercheC1.Value = "" Then
                    Tableau(j, i) = Range("A" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC2.Value = "" Then
                    Tableau(j, i) = Range("B" & lgLigDeb).Value
                    j = j + 1
                End If
                Tableau(j, i) = Range("C" & lgLigDeb).Value
                j = j + 1
                If RechercheC3.Value = "" Then
                    Tableau(j, i) = Range("D" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC4.Value = "" Then
                    Tableau(j, i) = Range("E" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC5.Value = "" Then
                    Tableau(j, i) = Range("F" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC6.Value = "" Then
                    Tableau(j, i) = Range("G" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC7.Value = "" Then
                    Tableau(j, i) = Range("H" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC8.Value = "" Then
                    Tableau(j, i) = Range("I" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC9.Value = "" Then
                    Tableau(j, i) = Range("J" & lgLigDeb).Value
                    j = j + 1
                End If
                Tableau(j, i) = Range("K" & lgLigDeb).Value
                j = j + 1
     
                If parametres.bouton_pv = True Then
                    Tableau(j, i) = Range("L" & lgLigDeb).Value * parametres.Coeff.Value
                Else
                    Tableau(j, i) = Range("L" & lgLigDeb).Value
                End If
                'j = j + 1
                'Tableau(j, i) = lgLigDeb
            End If
        Next lgLigDeb
     
        ListBoxParquet.List() = Application.Transpose(Tableau)
    End Sub
     
    Private Sub InitCombo(LCombo As Object, nomCol As String)
        Dim lig As Long
        Dim nbElement As Integer
        Dim trouveElm As Boolean
     
        LCombo.Clear
     
        ' Boucle de la ligne 2 à la dernière ligne dans la colonne nomCol
        For lig = 2 To Range(nomCol & Cells.Rows.Count).End(xlUp).Row
            trouveElm = False
     
            ' Vérifier que l'élément à ajouter dans la liste n'existe pas déjà
            For nbElement = 0 To LCombo.ListCount - 1
                ' L'élément est déjà présent dans la liste, sortie de la boucle
                If LCombo.List(nbElement) = Range(nomCol & lig).Value Then
                    trouveElm = True
                    Exit For
                End If
            Next nbElement
     
            ' Elément non trouvé dans la liste, l'ajouter
            If trouveElm = False Then LCombo.AddItem Range(nomCol & lig).Value
     
        Next lig
    End Sub

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu ne dis pas sur quelle ligne mais bon... teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             If parametres.bouton_pv Then 's'il s'agit d'un checkbox ou d'un booléen, pas besoin de "= true"
                    'si c'est un textbox...
                    Tableau(j, i) = Range("L" & lgLigDeb).Value * Val(parametres.Coeff.Value)
    A la deux ...
    A+

    Edit
    2. Sur quelle ligne le problème ?

    3. Utilise ShellExecute, évite d'avoir à nommer l'application
    'Utilise la fonction ShellExecute Lib etc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Déclaration en tête de module
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
     
    Private Sub ListBoxParquet_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        NomFich = "C:\Documents and Settings\FABIEN.ARB114\Bureau\Demande de prix parquet\Fiches techniques\quorum.pdf"
        ShellExecute 0, vbNullString, NomFich, vbNullString, vbNullString, 0
    End sub

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    1. Problème résolu

    2. le souci est à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBoxParquet.List() = Application.Transpose(Tableau)
    3.
    Ou dois-je mettre ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Déclaration en tête de module
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Je l'ai mis juste avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ListBoxParquet_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        NomFich = "C:\Documents and Settings\FABIEN.ARB114\Bureau\Demande de prix parquet\Fiches techniques\quorum.pdf"
        ShellExecute 0, vbNullString, NomFich, vbNullString, vbNullString, 0
    End sub
    et il me met cela. cf piéce jointe

    De plus, comment dans le nom de fichier, récupérer le champ correspondant à ma recherche et qu'il ouvre ce fichier pdf en fonction du chemin ou se situe le fichier excel (pas de chemin absolu)?

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    2. Je ne connais pas "Application.Transpose" (Transpose n'est pas dans les méthodes d'Application VBA97 - 2003) ce qui ne veut pas dire que ça n'existe pas... mais dans ce cas, peut-être manque-t-il une référence à ton projet (???)
    3.
    Citation Envoyé par ousk'
    'Déclaration en tête de module
    J'aurais dû ajouter "d'un module standard", celui qui te sert à ouvrir ton userform par exemple.

    4.De plus, comment dans le nom de fichier, récupérer le champ correspondant à ma recherche et qu'il ouvre ce fichier pdf en fonction du chemin ou se situe le fichier excel (pas de chemin absolu)? Comprends pas ta question : Où se trouve ton pdf ?
    "... en fonction..." qu'entends-tu par là ?
    A+

    Edit
    Je précise : "Transpose existe bien mais dans un collage spécial."

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    3.
    J'aurais dû ajouter "d'un module standard", celui qui te sert à ouvrir ton userform par exemple.
    désolé mais je comprend pas. Dans mon projet je n'ai pas de module.

    4.
    Dans mon dossier TOTO j'ai mon fichier excel et un dossier Fiches techniques qui contient mes fiches pdf.

    Si je déplace mon dossier TOTO, je veux que lorsque je double clic sur une ligne de ma listbox il m'ouvre le fichier pdf correspondant. En sachant que le nom du fichier pdf se trouve dans une colonne (colonne "N") de ma base de données excel.

    En fait il faut remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFich = "C:\Documents and Settings\FABIEN.ARB114\Bureau\Demande de prix parquet\Fiches techniques\quorum.pdf"
    par
    nomfich = chemin ou se trouve le fichier excel + \fiches techniques\ + celulle au croisement de la colonne N et de la ligne que l'on a double cliqué

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    3.
    désolé mais je comprend pas. Dans mon projet je n'ai pas de module
    Eh bien ajoutes-en un. Il te servira à ouvrir ton userform
    Dans VB-Editor -> Insertion -> Module.
    Tu mets les déclarations en tête de module. Ensuite tu ajoutes la macro servant à activer l'userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub ouvrirUSF()
    Load Userform1
    Userform1.show
    End sub
    Et si tu as un bouton dans ta feuille pour ouvrir l'userform, tu mets derrière l'événement Click du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private sub TonBouton_Click()
    OuvrirUSF
    End sub
    Ainsi, toutes les déclarations seront prises en compte où que que ce soit, dans le code de l'usf ou non.
    Je te réponds à 4. dans le post suivant pour ne pas tout mélanger.

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    4. Pour connaître le répertoire du classeur contenant la macro qui en a besoin, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chemin = Thisworkbook.path
    Sinon... tu dis

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    3.
    En suivant ton code je n'ai plus de message d'erreur. Voila le code de mon module.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'Déclaration en tête de module
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
     
    Sub ouvrirRecherche()
        Application.ScreenUpdating = False
        Load Recherche
        Recherche.Show
    End Sub
    Mais par contre le shellexecute ne se lance pas (pas de message d'erreur).

    4.
    J'arrive à obtenir le chemin. Maintenant je n'ai plus qu'as remplacer le "quorum.pdf" par une variable qui serait égal à la colonne "N" de ma ligne cliqué. Sauf que c'est une donnée qui n'est pas dans ma liste box.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ListBoxParquet_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        NomFich = ThisWorkbook.Path & "\Fiches techniques\" & "quorum.pdf"
        ShellExecute 0, vbNullString, NomFich, vbNullString, vbNullString, 0
    End Sub

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    3. Je vais regarder ça. Sans doute un paramètre à modifier, un réro à remplacer
    4. Sauf que c'est une donnée qui n'est pas dans ma liste box.
    Bref, donc... qu'y a-t-il dans ta listbox ? Un rapport entre la sélection et la ligne correspondante dans la feuille ?
    Si oui, on a deux solutions
    Tu dis
    A+

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    4.
    Dans ma liste box il y a cela:
    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
        For lgLigDeb = 2 To Range("A" & Cells.Rows.Count).End(xlUp).Row
     
            If Range("A" & lgLigDeb).Value Like Critere1 And Range("B" & lgLigDeb).Value Like Critere2 And Range("D" & lgLigDeb).Value Like Critere3 And _
                Range("E" & lgLigDeb).Value Like Critere4 And Range("F" & lgLigDeb).Value Like Critere5 And Range("G" & lgLigDeb).Value Like Critere6 And _
                Range("H" & lgLigDeb).Value Like Critere7 And Range("I" & lgLigDeb).Value Like Critere8 And Range("J" & lgLigDeb).Value Like Critere9 And _
                Range("M" & lgLigDeb).Value Like Critere10 Then
     
                i = i + 1
                j = 1
                ReDim Preserve Tableau(1 To 13, 1 To i)
     
                If RechercheC1.Value = "" Then
                    Tableau(j, i) = Range("A" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC2.Value = "" Then
                    Tableau(j, i) = Range("B" & lgLigDeb).Value
                    j = j + 1
                End If
                Tableau(j, i) = Range("C" & lgLigDeb).Value
                j = j + 1
                If RechercheC3.Value = "" Then
                    Tableau(j, i) = Range("D" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC4.Value = "" Then
                    Tableau(j, i) = Range("E" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC5.Value = "" Then
                    Tableau(j, i) = Range("F" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC6.Value = "" Then
                    Tableau(j, i) = Range("G" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC7.Value = "" Then
                    Tableau(j, i) = Range("H" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC8.Value = "" Then
                    Tableau(j, i) = Range("I" & lgLigDeb).Value
                    j = j + 1
                End If
                If RechercheC9.Value = "" Then
                    Tableau(j, i) = Range("J" & lgLigDeb).Value
                    j = j + 1
                End If
                Tableau(j, i) = Range("K" & lgLigDeb).Value
                j = j + 1
     
                If parametres.bouton_pv Then
                    Tableau(j, i) = Range("L" & lgLigDeb).Value * Val(parametres.Coeff.Value)
                Else
                    Tableau(j, i) = Range("L" & lgLigDeb).Value
                End If
            End If
        Next lgLigDeb
     
        ListBoxParquet.List() = Application.Transpose(Tableau)
    La colonne contenant le nom du fichier pdf et la N. Je ne l'ai pas ajouté à ma liste box parce que c'est inutile que la personne voit le nom du fichier pdf.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Besoin d'aide code listbox
    Par was35 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/06/2015, 14h42
  2. [XL-2007] conversion code listbox pour une listview
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/02/2012, 22h47
  3. [XL-2007] code listbox a modifier pour une litview
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2012, 12h09
  4. [VB.NET]code d'une réponse dans une ListBox
    Par eultartuffe dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/03/2006, 13h54
  5. [VBA-E] ListBox et Codes postaux
    Par forsay1 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 13/03/2006, 10h07

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