Remplir un TextBox avec une lListeBox

dmoluc

XLDnaute Occasionnel
Bonsoir tout le monde,

J'avance un peu plus dans la découverte de VBA et me lance maintenant dans les listBox mais pas sans problème.
Sur un UserForm j'ai une ListBox simple que je remplis à partir d'une feuille excel que je me sert comme base de données
Voilà le code qui fonctionne :

Code:
Private Sub UserForm_Initialize()

Sheets("Caractéristiques des matériaux").Activate

Dim lig As Byte, fin As Byte, mavar As Range, ind As Double

fin = Range("A2").End(xlDown).Row
For lig = 2 To fin
ListBox1.AddItem Cells(lig, "A")
 Next
 
End Sub

Ensuite par rapport à l'item selectionner je voudrais faire une recherche sur la feuille excel pour retrouver cet item et aller chercher sur la même ligne dans la cinquième colonne une valeur numérique et l'inscrire dans le TextBox du même UserForm avec cette ligne de code

Code:
TextBox5.Value = Range("A2:A47").Find(Me.ListBox1).Offset(0, 4).Value

Les contrôles sont sur un multipage de l'userForm, sur la feuille pelle, je ne sais pas si c'est important mais de toute façon quand je rajoute la ligne de recherche j'ai "erreur 91 variable ou objet de bloc with non définie" et cela me renvoi à la macro dde lancement de l'userForm

Merci pour votre aide

cordialement

Didier
 

Papou-net

XLDnaute Barbatruc
Re : Remplir un TextBox avec une lListeBox

Bonsoir dmoluc,

Pourquoi ne pas avoir joint une copie de ton fichier ?

Tu peux tenter de remplacer ta ligne citée par celles-ci :

Code:
Set cel = Range("A2:A47").Find(Me.ListBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not cel Is Nothing Then TextBox5 = cel.Value
Bonne soirée.

Cordialement.
 

dmoluc

XLDnaute Occasionnel
Re : Remplir un TextBox avec une lListeBox

Bonjour à tous
je viens de me réveiller avec la solution : je ne peux pas imputer la valeur cherchée alors que je n'ai pas encore alimenter la listbox à l'ouverture de l'userform Private Sub UserForm_Initialize()

ça va aller beaucoup mieux comme ça
Private sub listBox1_change ()

pour le fichier c'est une vraie usine à gar qui fait maintenant plus de 5 MO :( Même l'UserForm5 avec les multipages et les photos de fond, dépasse la taille permise sur le forum, alors il ne me reste plus qu'à être explicite

merci encore pour ton aide précieuse

cordialement

Didier
 

dmoluc

XLDnaute Occasionnel
Re : Remplir un TextBox avec une lListeBox

voici le code si cela peu servir à d'autre....

Private Sub ListBox1_Change()
Dim ligne
Dim Colonne

Sheets("Caractéristiques des matériaux").Activate
Colonne = 5
Set Cel = Range("A2:A47").Find(Me.ListBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
ligne = Cel.Row
If ligne > 1 Then
TextBox5.Value = ActiveSheet.Cells(ligne, Colonne).Value
End If
Sheets("Programme des travaux").Activate
End Sub
 

Papou-net

XLDnaute Barbatruc
Re : Remplir un TextBox avec une lListeBox

Bonjour Didier,

Merci à toi de nous avoir tenu informés de ta réflexion et de l'avancée de ton projet.

Je parle en mon nom mais voilà une démarche qui, je n'en doute pas, est fortement appréciée sur XLD.

Bonne continuation en VBA.

En te souhaitant un bon WE.

Cordialement.
 

dmoluc

XLDnaute Occasionnel
Re : Remplir un TextBox avec une lListeBox

C'est normal que je donne ma solution même si c'est celle d'un débutant car on trouve trop de discutions sur les forum ou les gens ne prennent pas la peine de donner la solution finale qui pourrait pourtant servir de base à quelqu'un d'autre et faire avancer le "smiblick"

cordialement
 

laetitia90

XLDnaute Barbatruc
Re : Remplir un TextBox avec une lListeBox

bonjour dmoluc,Papou-net:):)
il faut utiliser listbox1.list a la place ListBox1.AddItem bien mieux!!

tu as pas besoin d'activer la feuil pour recuperer les valeurs
de plus find sert a rien dans ton cas on utilise ListBox1.ListIndex

exemple

Code:
Private Sub userform_initialize()
 With Sheets("Caractéristiques des matériaux")
 t = .Range("a2", .Cells(Rows.Count, "e").End(xlUp)): ListBox1.List = t
 End With
End Sub

Code:
Private Sub listbox1_Click()
 TextBox5 = ListBox1.List(ListBox1.ListIndex, 4)
End Sub


un exemple plus parlant on peut eventuellement modifier .....données en feuil 1
 

Pièces jointes

  • combo .xls
    45.5 KB · Affichages: 135

youky(BJ)

XLDnaute Barbatruc
Re : Remplir un TextBox avec une lListeBox

Bonjour dmoluc, et à tous
Pour être de la partie....
Pourquoi ne pas utiliser dans ce cas l'index, simple et rapide
Code:
Private Sub ListBox1_Change()
TextBox5 = Sheets("Caractéristiques des matériaux").Cells(ListBox1.ListIndex + 2, 4)
End Sub
A savoir ListIndex commence à 0

Bruno
 

laetitia90

XLDnaute Barbatruc
Re : Remplir un TextBox avec une lListeBox

re,:):):)
attention youky(BJ):):) si tu l'ecris comme cela c'est plus index mais cells donc .....5 au lieu de 4

Code:
TextBox5 = Sheets("Caractéristiques des matériaux").Cells(ListBox1.ListIndex + 2, 5)


ps je mets un like a mon ami papou qui salue l'initiative... ce qui est de plus en plus rare sur le forum bisous leti:):)
 
Dernière édition:

dmoluc

XLDnaute Occasionnel
Re : Remplir un TextBox avec une lListeBox

merci pour tous ces renseignement dont je vais essayer d'en faire bon usage. J'ai déjà programmer 5 feuilles de l'userform et comme elles fonctionnent très bien malgré mes erreurs de débutant, j'ai peine à les changées, mais pour les 3 feuilles restantes qui auront elles aussi leurs listeBox je vais tenir compte de vos conseils avisés

Merci encore pour votre aide et quand j'aurai fini mon usine à gaz, je ne manquerais pas de la mettre en ligne sur le site
 

laetitia90

XLDnaute Barbatruc
Re : Remplir un TextBox avec une lListeBox

re ,,,si tu presente ton projet on peut eventuellement eviter les usines a gaz.... diviser par x nb..les lignes de code
le plus important c'est le concept au depart...
mais tu as de bonnes idées deja c'est trop bien:)
 

dmoluc

XLDnaute Occasionnel
Re : Remplir un TextBox avec une lListeBox

J'essayais de poster mon fichier mais en l'épurant et compression maximale je suis encore à 900 KO, en plus je viens de me rendre compte que je ne sais pas enlever les images de fond des userForm qui doivent prendre pas mal de KO

Si quelqu'un m'explique comment virer ces image, peu être que le fichier aura une taille convenable pour être poster

Merci encore,

Didier
 

dmoluc

XLDnaute Occasionnel
Re : Remplir un TextBox avec une lListeBox

http://cjoint.com/?BHeuR5eivLF

J'ai mis le fichier complet, il y a beaucoup de programmation maladroite, mais mon but est d'apprendre le VBA car je suis partit d'un diagramme de gant que j'avais créer avec des formules et 2 ou 3 routines d'automatisation de certaines tâches, et j'essais de l'améliorer tout en apprenant le VBA que je ne connaissais pas il y a encore 1 mois

Le fichier s'ouvre en plein écran sur la page d'acceuil mais rassurez-vous il n'y a pas de virus, tout est réactiver à la fermeture d'excel
certaines feuilles ont un mot de passe "cfc"

le post que j'ai créer était pour l'UserForm5, enfin j'attend vos conseils car mon manque de connaissances + mon esprit compliqué = jolie usine à gaz :D
 

dmoluc

XLDnaute Occasionnel
Re : Remplir un TextBox avec une lListeBox

Bonjour à tous,

Voilà l'explication du fichier que j'ai mis plus haut en lien
La feuille programme des travaux est un diagramme de gant qui se remplis de la sorte : tout d'abord la liste des tâches que je renseigne sur une feuille "métré et tâche" désignation, prix de vente, quantité; On peu accéder à cette feuille soit en cliquant sur liste des tâche s soit depuis la page d’accueil, ensuite on appelle les tâche via les menus déroulant, la colonne B et C sont renseignée par des formules RechercheV
La colonne D (R/J), c'est le rendement estimer ou calculer de la tâche et pour ce fameux calcul j'ai mis un bouton calcul qui appel un UserForm multipages pour effectuer les calcul et c'est là que j'ai les fameuses listes déroulantes. Cet UserForm a pour but de remplacer la feuille "rendements " qui fonctionne très bien, mais moins facile et plus rigide d'utilisation qu'un petit programme VBA ou les entrées et mode de calcul peuvent être multiples .;.
Pour colorer le graphique du planning, il y a un UserForm qui se lance lorsque l'on modifie la colonne D ; Je n'ai pas réussis à le rendre parfaitement fiable pour les durées à appliquer, parfois il me rajoute une demis journée, ou bien il en perd une et les conditions que j'ai mis pour essayer de contrer ça ne fonctionnent pas tout le temps, de plus pour colorer le remplissage de cellule et la police, je suis obliger de répéter l’opération 2 fois, pas moyen de colorer les deux en même temps
Pour imputer le personnel, le matériel, les fournitures je n'ai pas encore songé au problème et la méthode reste classique on met les quantité dans la colonne correspondante à leurs utilisation et l'on appel les désignation via les menus déroulant, le reste se calcul avec des formules

Voilà pour les explicatyion de ma petite usine à gaz :rolleyes:
je pense que vous pouvez trouver plein de défaut très facilement et j'adore la critique constructive car elle me fait avancé

Encore merci à tous

Didier
 

Discussions similaires