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 :

ListBox et conditions sur cellule [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 12
    Points : 13
    Points
    13
    Par défaut ListBox et conditions sur cellule
    Bonjour à tous,

    J'aurais besoin d'aide pour une manipulation sous une listebox.
    Pour faire simple : J'ai une listbox qui s'initialise avec ce code et qui fonctionne :

    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
    Private Sub Initialise_Listbox()
    Dim L As Integer
    Dim i As Integer
    L = Sheets("Plaquettes").Range(as400 & "65536").End(xlUp).Row + 1
    (xlUp).Row + 1
     
    Me.ListBox1.Clear
         i = 0
         While i < L
           Me.ListBox1.AddItem
           Me.ListBox1.List(i, 0) = Sheets("Plaquettes").Range(as400 & i + 2)
           Me.ListBox1.List(i, 1) = Sheets("Plaquettes").Range(designationfournisseur & i + 2)
           Me.ListBox1.List(i, 2) = Sheets("Plaquettes").Range(nuance & i + 2)
           Me.ListBox1.List(i, 3) = Sheets("Plaquettes").Range(fonction & i + 2)
           Me.ListBox1.List(i, 4) = Sheets("Plaquettes").Range("A" & i + 2).Row ' J'AI CACHE LA COLONNE 5 QUI REPRESENTE LE NUMERO DE LA LIGNE DANS LE FICHIER EXCEL
           i = i + 1
          Wend
    End Sub
    Par contre, une fois que je souhaite y ajouter une condition (car la colonne A contient de temps en temps des cellules vides et j'aimerais obtenir que celles qui sont vides), j'obtiens cette erreur :
    Erreur d'exécution '381':
    Impossible de définir la propriété List. Index de table de propriétés non valide.
    Voici le 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
    Private Sub ArtNonCodifies_Click()
    Dim L As Integer
    Dim L1 As Integer
    Dim L2 As Integer
    Dim i As Integer
    L1 = Sheets("Plaquettes").Range(as400 & "65536").End(xlUp).Row + 1
    L2 = Sheets("Plaquettes").Range(designationfournisseur & "65536").End(xlUp).Row + 1
    If L1 < L2 Then
        L = L2
    Else
        L = L1
    End If
     
    Me.ListBox1.Clear
    i = 0
        While i < L
            If Sheets("Plaquettes").Range(as400 & i + 2) = "" Then 'AJOUT DE LA CONDITION
                Me.ListBox1.AddItem
                Me.ListBox1.List(i, 0) = Sheets("Plaquettes").Range(as400 & i + 2) 'Première ligne avec l'erreur
                Me.ListBox1.List(i, 1) = Sheets("Plaquettes").Range(designationfournisseur & i + 2)
                Me.ListBox1.List(i, 2) = Sheets("Plaquettes").Range(nuance & i + 2)
                Me.ListBox1.List(i, 3) = Sheets("Plaquettes").Range(fonction & i + 2)
                Me.ListBox1.List(i, 4) = Sheets("Plaquettes").Range("A" & i + 2).Row
                i = i + 1
            Else 'AJOUT DE LA CONDITION
                i = i + 1 'AJOUT DE LA CONDITION
            End If 'AJOUT DE LA CONDITION
        Wend
    End Sub
    Si une âme charitable passerait par içi, je lui serait reconnaissant =)

    Merci d'avance

    EDIT : Les variables dans les Range sont des variables globales lancées lors de l'ouverture du fichier ou lors du clic sur le bouton de commande.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjoour,

    Quelle est la ligne en erreur ?

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    La ligne en erreur est celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Me.ListBox1.List(i, 0) = Sheets("Plaquettes").Range(as400 & i + 2)
    J'ai ajouté le commentaire dans mon premier post.

    Merci

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Que vaut Sheets("Plaquettes").Range(as4002) ?

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Essaie :
    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
    Me.ListBox1.Clear
    i = 0
    x = 0
        While i < L
            If Sheets("Plaquettes").Range(as400 & i + 2) = "" Then 'AJOUT DE LA CONDITION
                Me.ListBox1.AddItem
                Me.ListBox1.List(x, 0) = Sheets("Plaquettes").Range(as400 & i + 2) 'Première ligne avec l'erreur
                Me.ListBox1.List(x, 1) = Sheets("Plaquettes").Range(designationfournisseur & i + 2)
                Me.ListBox1.List(x, 2) = Sheets("Plaquettes").Range(nuance & i + 2)
                Me.ListBox1.List(x, 3) = Sheets("Plaquettes").Range(fonction & i + 2)
                Me.ListBox1.List(x, 4) = Sheets("Plaquettes").Range("A" & i + 2).Row
                x = x + 1
            End If 'AJOUT DE LA CONDITION
            i = i + 1 'AJOUT DE LA CONDITION
        Wend

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par EngueEngue Voir le message
    Que vaut Sheets("Plaquettes").Range(as4002) ?
    Ce n'est pas Range(as4002) mais Range(as400 & i+2)

    @Daniel.C : Excellent, c'est exactement ce que je voulais faire.
    J'ai, en effet, mélangé les variables avec le i. L'ajout de cette deuxième variables est effectivement très intélligente

    En tout cas merci à vous deux !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Somme de valeur suivant condition sur cellule
    Par EricBOG dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2013, 11h30
  2. Condition sur une et/ou plusieurs cellules
    Par michton44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/02/2009, 20h51
  3. Nombre de cellule Si 2 conditions sur deux plages
    Par CNANJO dans le forum Excel
    Réponses: 1
    Dernier message: 24/12/2008, 07h17
  4. Moyenne avec condition sur plage de cellule
    Par emilie31 dans le forum Excel
    Réponses: 2
    Dernier message: 18/11/2008, 14h08
  5. Réponses: 3
    Dernier message: 13/04/2008, 10h52

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