Listbox, double click et ajout information sur cellule selon ligne de listbox

BENAM69

XLDnaute Occasionnel
Bonsoir à tous,

J'ai juste une simple question, je recherche depuis un moment sur les forums ici et ailleurs, j'ai trouvé des informations mais qui ne répondent pas tout à fait à un besoin que j'essaye d'effectuer.

Est-ce que quelqu'un aurait un lien de discussion de forum, une vidéo ou même un code qui permettrait de répondre à ce besoin.

Il y a une listbox1 avec des contenus de données provenant d'un onglet (exemple onglet feuille 2).
Si on double clique sur la ligne en question contenu dans la listbox, un userform apparait avec un textbox. Sur cet textbox si on inscrit un texte et ensuite on ferme l'userform il va directement ajouter l'information sur l'onglet feuille 2 dans une cellule d'une colonne exemple A ou B peu importe qui correspondant à la ligne que l'on a double cliqué ?

Cela existe-t-il quelque part ?

Merci de vos infos et de votre aide. Une fois que j'aurai réussi à trouver ce code j'aurai enfin fini ce pu**** d'outil qui me fait Ch*** !!!!

Bien à vous

Benam
 

JEV

XLDnaute Nouveau
Je ne comprends pas le lien entre la listbox et le texte à ajouter. Je ne vois pas l'exploitation des données ajoutés car on ne retrouvera pas à quoi le texte ajouté est lié à tel élément de la listebox? sauf si le texte serai mis dans l'onglet 1 contenant toutes les cellules contenant la listbox.
 

BENAM69

XLDnaute Occasionnel
Bonjour JEV,

Je te remercie pour ton retour.
J'ai finalement opté pour une autre solution qui est d'intégrer une barre de recherche sur l'onglet 2, la où il y a toute la base de données.

VB:
Option Compare Text

Private Sub ListBox1_Click()
    laLigne = ListBox1.List(ListBox1.ListIndex, 1)
    ActiveWindow.ScrollRow = laLigne
End Sub
Private Sub TextBox1_Change()
    
    Application.ScreenUpdating = False
    
    Range("A2").CurrentRegion.Offset(1, 0).Interior.ColorIndex = 2
    ListBox1.Clear
    cpt = 0
    If TextBox1 <> "" Then
        For ligne = 2 To 60000
            For colonne = 1 To 2
                If Cells(ligne, colonne) Like "*" & TextBox1 & "*" Then
                    Cells(ligne, colonne).Interior.ColorIndex = 6
                    ListBox1.AddItem Cells(ligne, colonne)
                    ListBox1.List(cpt, 1) = ligne
                    cpt = cpt + 1
    
                End If
            Next
        Next
    End If
    
End Sub

Avec la création d'un textbox1 et Listbox1.

A+

Benam
 

job75

XLDnaute Barbatruc
Bonjour BENAM69, JEV, le forum,

Si vous aviez fourni un fichier avec la ListBox et l'UserForm vous auriez une réponse depuis longtemps.

Voyez le fichier joint et ces macros dans le code de la 1ère feuille :
VB:
Private Sub ListBox1_GotFocus()
With Sheets("Feuil2").[A1].CurrentRegion.Offset(1)
    If .Rows.Count > 1 Then ListBox1.ListFillRange = .Resize(.Rows.Count - 1).Address(External:=True) Else ListBox1.ListFillRange = ""
End With
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ThisWorkbook.Names.Add "lig", ListBox1.ListIndex + 2 'mémorise dans un nom défini
With UserForm1
    .TextBox1 = ListBox1
    .TextBox2 = ListBox1.Column(1)
    .Show
End With
ListBox1.Selected([lig] - 2) = False 'désélectionne
ActiveCell.Activate
Application.OnTime 1, Me.CodeName & ".Activer" 'lancement différé
End Sub

Sub Activer()
'---gymnastique nécessaire cher moi---
Sheets("Feuil2").Activate
Me.Activate
End Sub
Le code de l'UserForm :
VB:
Private Sub Label3_Click() 'OK
If TextBox1 = "" Then TextBox1.SetFocus: Exit Sub
Sheets("Feuil2").Cells([lig], 1).Resize(, 2) = Array(TextBox1.Text, TextBox2.Text)
Unload Me
End Sub
A+
 

Pièces jointes

  • ListBox(1).xlsm
    36.3 KB · Affichages: 46
Dernière édition:

job75

XLDnaute Barbatruc
La gymnastique du changement de feuille ne me plaît pas, alors voyez ce fichier (2) avec dans l'UserForm :
VB:
Private Sub Label3_Click() 'OK
If TextBox1 = "" Then TextBox1.SetFocus: Exit Sub
a = Array(TextBox1.Text, TextBox2.Text) 'mémorise
Application.OnTime 1, "Entrer" 'lancement différé
Unload Me
End Sub
Et dans Module1 :
VB:
Public lig&, a 'variables mémorisées

Private Sub Entrer()
Sheets("Feuil2").Cells(lig + 2, 1).Resize(, 2) = a
End Sub
C'est maintenant l'entrée des données en Feuil2 qui est différée.
 

Pièces jointes

  • ListBox(2).xlsm
    32.2 KB · Affichages: 58

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat