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 inchangeable/sans valeur [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Par défaut ListBox inchangeable/sans valeur
    Bonjour,

    Alors plantons le décors, je suis étudiant et sur mon projet en vba, je ne peux donc pas link tout mon projet sur le post suite à cette étrange problème qu'il m'arrive.

    Maintenant, voici mon problème:
    J'ai une listBox (qu'on nommera "list") qui, lorsque j'initialise mon userForm reçoit des String. Le problème est que je ne peux pas cible précisément une valeur de ma listBox.
    J'ai essayé ceci pour voir où peut se situer mon problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    list.addItem("valeur")
    list.value = "valeur"
    list.listIndex = 0 ' Oui, j'en suis arrivé à tester plusieurs fois la même chose.
    debug.print (list.value, list.list(0))
    debug.print typeName(list.value, list.list(0))
    Et en console mon résultat est qu'il s'agit bien de deux String, mais que le premier contient "" et le second "valeur". Je ne comprends pas étant donné qu'ils sont normalement identique.
    Le soucis c'est que plus tard je fais des conditions sur ma listBox, et que j'ai besoin que sa valeur soit "valeur" et non pas "", car ça dépend de ce que j'ai dans mes feuilles excel... Donc incontournable.

    Second mystère notable selon moi, de temps en temps, lorsque je fais juste une sauvegarde du programme et que je l'exécute, une fois sur deux il prend bien la bonne valeur, et l'autre fois il ne la prend plus (comme dans ce cas).

    Voilà, si quelqu'un a déjà été confronté à ce genre de problème, merci d'avance de me faire savoir comment y remédier

    Bien à vous,
    Verbruik

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour un peu de recherche ne te ferait pas de mal toi qui est étudiant
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub UserForm_Activate()
    For i = 1 To 10
    list.AddItem "item" & i
    Next
    MsgBox list.list(3)  'te donne le 4 item de la listbox l'item 0 étant le premier 
    End Sub
    enfin bref clique moi résolu
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Par défaut
    Bonsoir,

    En effet un peu de recherche ne me ferait pas de mal, après tout on en a jamais assez. Mais cela ne résout en rien mon problème ;-)

    Et si ça semble résoudre le problème ici, c'est uniquement car je l'ai tourné de cette manière dans mon exemple, mais dans mon projet je n'utilise même pas de listIndex = 0 (je n'en ai utilisé que pour tester mon problème, ce qui d'évidence semblait être une erreur), je ne fais que donner une valeur à ma liste grâce à list.value = "valeur".
    Et ici j'en suis arrivé à faire des conditions très improbable qui ne fonctionne tout de même pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if list.value <> "valeur" or list.value = "" or list = null then 'En sachant que la valeur de ma liste n'est justement pas "valeur" vu que ça ne fonctionne pas...
    ...
    end if
    Et même dans ce cas ci, je n'arrive pas à rentrer dans ma condition, est-ce que c'est normal ? oO

    Mon problème n'étant pas résolu, vous me voyez navré de devoir insister là dessus =/

    Bien à vous,
    Verbruik

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    alors je vais être plus clair et direct
    list.value est une propriété qui n'existe pas
    ca sera plutôt exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    msgbox list.list (3,0).value'te donne l'item 4 de la liste et en colonne 1
     
    list.list.count 'te donne le nombre d'item
     
    list.list.index 'te donne le numéro de l'item qui est sélectionné
    terminé
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Patrick, un peu de retenu surtout quand tu dis des bêtises. ListBox.Value Existe bien et si la propriété de la listbox Multiselect est à 0-fmMultiSelectSingle, la propriété Value retourne bien la valeur sélectionnée.

    Maintenant si la listbox est multicolonne, alors là .Value retourne la valeur de la colonne correspondant à BoundColumn

    Exemple parlant:

    Insère dans un Userform une ListBox que tu vas appeler MaList (attention au mots reservé par vba tel list) et un CommandButton1
    Dans le module de l'userform, mets ce code et fais les tests nécessaires en changeant à chaque fois la ligne correspondant au BoundColumn

    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
    Option Explicit
     
    Private Sub UserForm_Initialize()
     
    With MaList
        .MultiSelect = fmMultiSelectSingle
        .ColumnCount = 3
        .BoundColumn = 1
        .ColumnWidths = "50;100;100"
     
        .AddItem "Ali baba"
        .List(.ListCount - 1, 1) = "colonne 2 Ali Baba"
        .List(.ListCount - 1, 2) = "colonne 3 Ali Baba"
     
        .AddItem "valeur"
        .List(.ListCount - 1, 1) = "colonne 2 valeur"
        .List(.ListCount - 1, 2) = "colonne 3 valeur"
     
        .AddItem "Western"
        .List(.ListCount - 1, 1) = "colonne 2 western"
        .List(.ListCount - 1, 2) = "colonne 3 western"
    End With
    End Sub
     
    Private Sub CommandButton1_Click()
     
    If Me.MaList.ListIndex > -1 Then
        If MaList.Value <> "valeur" Then
            MsgBox "non valeur"
        Else
            MsgBox "valeur"
        End If
     
        MsgBox MaList.Value & " réelle"
    Else
        MsgBox "Aucune ligne sélectionnée"
    End If
    End Sub
    Grossomodo MaList.Value revient à MaList.List(MaList.ListIndex, MaList.BoundColumn - 1)

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour Mercatog
    ce qui implique qu'un item doit être sélectionné moi j'utilise ta méthode grosso modo
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/05/2006, 10h51
  2. Réponses: 1
    Dernier message: 22/04/2006, 19h02
  3. access : calcul d'une somme de 0 sans valeur par défaut
    Par ericbelgium dans le forum Access
    Réponses: 6
    Dernier message: 06/10/2005, 09h05
  4. Liste déroulante sans valeur par défaut ?
    Par magic8392 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/02/2005, 16h59
  5. [VB6] Pb ListBox a 2 valeur style access
    Par Artanis dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 07/11/2003, 17h30

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