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 :

Lien Cellules/Commentaires et Listbox [XL-97]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut Lien Cellules/Commentaires et Listbox
    Bonjour,

    J'ai une feuille "Saisie" sur laquelle je dois permettre à des utilisateurs de remplir des données via un Userform qui s'affiche en faisant un clic droit sur les cellules. Chaque ligne contient des types de données différentes. Par exemple, sur la ligne 10 on doit choisir la marque du véhicule, sur la ligne 11 le nom du concessionnaire, etc. Donc quand on fait clic droit dans une cellule de la ligne 10, il affiche un Userform avec la Listbox contenant la liste des marques de voiture, et quand on clic droit sur une cellule de la ligne 11, il affiche le même Userform avec la même Listbox mais qui celle-ci contient la liste des concessionnaires. On fait son choix dans la Listbox, on clique sur le bouton "Valider" et la cellule récupère le texte choisi dans la Listbox.

    Le contenu de la Listbox dépend d'un numéro que j'ai mis dans la colonne 2 de la ligne active. Par exemple, si dans la colonne 2 de la ligne active j'ai "24" alors il met dans la Listbox les données présentes dans la colonne 24 de la feuille "Liste".

    Voilà pour le contexte.

    Mes souhaits :

    1) Je souhaite lorsque je clic-droit sur une cellule déjà rempli que la sélection dans la Listbox soit déjà faite en fonction du contenu de la Cellule. Par exemple : Si Cellule=vide, pas de présélection dans la Listbox, Si Cellule = renseigné alors la Sélection de Listbox = Contenu de la Cellule. Cela permettrait à l'utilisateur de garder le même choix sans être obliger de resélectionner dans la Listbox ce qu'il existe déjà dans la Cellule.

    2) Dans le même Userform, je souhaite ajouter un Textbox dans lequel on noterait des commentaires. En cliquant sur le bouton "Valider" de L'Userform, le Texte du Textbox se mettrait dans une bulle de commentaire de la cellule sélectionnée.

    3) La combinaison entre le 1 et le 2. C'est-à-dire qu'en ouvrant l'Userform via le clic droit de la cellule, la Listbox aurait sa sélection selon le contenu de la cellule mais aussi le Textbox serait alimenté selon le texte du commentaire.

    Pour le point 1, j'ai déjà fait plein d'essai mais sans succès dont le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                Dim i As Integer
                For i = 0 To ListeLB.ListCount - 1 
                    If ListeLB.List(i) = ActiveCell Then
                        ListBox1.ListIndex = i
                    End If
                Next i
    Pour le point 2, je n'ai rien trouvé à ce sujet. Peut-être mal cherché.

    Donc je viens vers vous pour savoir si vous auriez une piste s'il vous plait ?

    A bientôt

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut selected
    Bonjour,

    Voici deux pistes :

    Pour faire les présélections dans la liste, il faut utiliser selected

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim i As Integer
    For i = 0 To ListeLB.ListCount - 1
    If ListeLB.List(i) = ActiveCell Then
    ListBox1.selected(i)=true
    End If
    Next i
    Pour les commentaires, il y a des instructions du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       ActiveCell.Comment = textbox1.text
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      textbox1.text=ActiveCell.Comment

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    Merci bellande pour ta proposition de solution.

    Cependant j'ai la même erreur qui se produit.

    J'ai donc mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                Dim i As Integer
                For i = 0 To ListeLB.ListCount - 1 
                    If ListeLB.List(i) = ActiveCell Then
                        ListeLB.Selected(i) = True
                    End If
                Next i
    Et quand je clic-droit sur ma cellule et que çà doit ouvrir l'Userform j'ai le message d'erreur suivant :
    Erreur d'exécution '91' : Variable objet ou variable de bloc With non définie
    Je clique sur débogage et le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
       ' Affichage de l'userform si on est sur une cellule
       If Target.Row >= 3 And Target.Column >= 8 Then
            If Worksheets(WSsaisie).Cells(Selection.Row, 2) <> "" Then
                Call Load(ListeUF)
                Call ListeUF.Show
                Cancel = True
            End If
       End If
    End Sub
    s'affiche avec "Call Load(ListeUF)" en surbrillance.

    çà faisait la même chose lorsque je faisais mes tests.
    Pour info, lorsque j'enlève "ListeLB.Selected(i) = True" de mon premier code, je n'ai aucun message d'erreur.

    Edit :
    Je viens de voir que dans le "Call Load(ListeUF)" en surbrillance, il met "ListeUF = Nothing" quand je mets le curseur dessus. Bizarre car sans le "ListeLB.Selected(i) = True" ce "Call Load(ListeUF)" ne cause pas d'erreur

  4. #4
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour,
    je comprend pas trop ce que tu veux faire avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Call Load(ListeUF)
    Call ListeUF.Show
    si ton but est d'ouvrir le userform "ListeUF" met juste :

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut
    bonjour,

    Si tu mets le remplissage de la liste directement dans l'évènement activate de ta userform alors l'objet liste existe bien quand tu essaies de le remplir sinon en effet ca pose un problème puisque l'objet n'existe pas encore :

    Les call aussi me laissent perplexe alors j'ai simplifié, voici ce qui marche chez moi mais ce n'est que la version de test :
    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 UserForm_Activate()
         Dim i As Integer
     
         ListeLB.Clear
         ListeLB.AddItem "aaa"
         ListeLB.AddItem "bbb"
         ListeLB.AddItem "ccc"
         ListeLB.AddItem "ddd"
         ListeLB.AddItem "eee"
         ListeLB.AddItem "fff"
     
         For i = 0 To ListeLB.ListCount - 1
              If ListeLB.List(i) = ActiveCell Then
                    ListeLB.Selected(i) = True
              End If
         Next i
    End Sub
     
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
       ' Affichage de l'userform si on est sur une cellule
       If Target.Row >= 3 And Target.Column >= 8 Then
            If Worksheets(1).Cells(Selection.Row, 2) <> "" Then
                ListeUF.Show
                Cancel = True
            End If
       End If
    End Sub

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    Citation Envoyé par rvtoulon Voir le message
    si ton but est d'ouvrir le userform "ListeUF" met juste :
    En effet, mais le problème se reporte sur le "ListeUF.Show" qui se met en surbrillance

    @Bellande :
    J'ai bien le remplissage de la liste au même endroit que l'instruction qui pose problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ' Remplissage de la liste
     
            ListeLB.List() = ListeTable()
     
        ' Reprendre les informations déjà présentes dans le tableau Excel
     
                Dim i As Integer
                For i = 0 To ListeLB.ListCount - 1 
                    If ListeLB.List(i) = ActiveCell Then
                        ListeLB.Selected(i) = True
                    End If
                Next i
    Sachant que ListeTable est une table que j'ai alimenté via un autre code dans le même endroit.

    Par contre, j'ai tout çà dans "Private Sub UserForm_Initialize()" au lieu de "Private Sub UserForm_Activate()", est ce que çà change quelque chose ?

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut
    Je ne comprends pas quand tu dis "J'ai bien le remplissage de la liste au même endroit que l'instruction qui pose problème"

    Le remplissage est dans le Initialize de la userform et le ListeUF.Show est dans la feuille de calcul donc pas au même au endroit ?

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

Discussions similaires

  1. Afficher contenu de cellules dans une ListBox
    Par EtudiantNoobVBA dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/05/2013, 21h24
  2. Filtrer cellules / insérer dans listbox
    Par olidefoer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2011, 12h16
  3. [AC-2002] Lien particulier entre 2 listbox
    Par nextros dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/06/2010, 10h08
  4. [VB2005] lien entre combobox et listbox
    Par Petrolia dans le forum Windows Forms
    Réponses: 20
    Dernier message: 04/06/2006, 14h28

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