Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 ListBox TextBox

ERN

XLDnaute Junior
Bonjour à tous,

Je me permets de solliciter à nouveau ce forum car je tourne en rond.
Voilà , j'ai adapté un fichier trouvé sur le site car je ne maitrise absolument pas le VBA et donc je suis bloqué sur plusieurs choses pour terminer mon fichier.
J'ai une base de données qui contient 11 colonnes mais la ListBox trouvée ne me m'affiche que 6 colonnes. J'ai également des TextBox qui n'affichent les 6 premières informations de ma ligne selectionnée.
Que dois-je modifier dans ce code ou dans les propriétés des TextBox/ListBox ?
Je vous joins également le fichier.

Merci d'avance,



Dim f, choix(), Rng, Ncol
Private Sub Label1_Click()

End Sub
Private Sub TextBox2_Change()

End Sub
Private Sub TextBox3_Change()

End Sub
Private Sub TextBox4_Change()

End Sub
Private Sub TextBox5_Change()

End Sub
Private Sub TextBox6_Change()

End Sub
Private Sub TextBox7_Change()

End Sub
Private Sub TextBox8_Change()

End Sub
Private Sub TextBox9_Change()

End Sub
Private Sub TextBox10_Change()

End Sub
Private Sub TextBox11_Change()

End Sub

Private Sub UserForm_Initialize()
Set f = Sheets("bdd")
Set Rng = f.Range("A3:F" & f.[a65000].End(xlUp).Row)
Ncol = Rng.Columns.Count
'---- entêtes ListBox
x = 15
Y = Me.ListBox1.Top - 12
For i = 1 To Ncol
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(2, i)
Lab.Top = Y
Lab.Left = x + 2
x = x + f.Columns(i).Width * 0.8
temp = temp & f.Columns(i).Width * 0.8 & ";"
Next
Me.ListBox1.ColumnCount = Ncol
Me.ListBox1.ColumnWidths = temp
'-- entêtes TextBox
For i = 1 To Ncol
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(2, i)
Lab.Top = Me("textbox" & i + 1).Top - 17
Lab.Left = Me("textbox" & i + 1).Left
x = x + f.Columns(i).Width * 0.5
Next
'--
TblTmp = Rng.Value
For i = LBound(TblTmp) To UBound(TblTmp)
ReDim Preserve choix(1 To i)
For k = LBound(TblTmp) To UBound(TblTmp, 2)
choix(i) = choix(i) & TblTmp(i, k) & " * "
Next k
Next i
Me.ListBox1.List = Rng.Value
End Sub
Private Sub TextBox1_Change()
If Me.TextBox1 <> "" Then
mots = Split(Trim(Me.TextBox1), " ")
Tbl = choix
For i = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
Next i
If UBound(Tbl) > -1 Then
Dim b(): ReDim b(1 To UBound(Tbl) + 1, 1 To Ncol)
For i = LBound(Tbl) To UBound(Tbl)
a = Split(Tbl(i), "*")
For k = 1 To Ncol: b(i + 1, k) = a(k - 1): Next k
Next i
Me.ListBox1.List = b
Me.Label1.Caption = UBound(Tbl) + 1
End If
Else
UserForm_Initialize
End If
End Sub

Private Sub ListBox1_Click()
For k = 0 To Ncol - 1
Me("TextBox" & k + 2) = Me.ListBox1.Column(k)
Next k
End Sub
 

Pièces jointes

  • ERN Bidouille.xls
    105.5 KB · Affichages: 29

ChTi160

XLDnaute Barbatruc
Bonjour ERN
Bonjour le Fil ,le Forum
une première approche perfectible !
11 colonnes et 11 TextBox
Bonne journée
jean marie
 

Pièces jointes

  • ERN Bidouille Chti160.xlsm
    41.1 KB · Affichages: 34

ERN

XLDnaute Junior
Bonjour ChTi160 et merci beaucoup pour cette aide.
J'en profite pour poser une autre question. Je dois ajouter deux TextBox dans lesquelles je souhaite afficher dans la première, la valeur en rapport avec les données de l'onglet IndBT et la date du jour.
Dans la deuxième, je dois trouver un résultat qui est calculée automatiquement lors de la sélection d'un article dans la ListBox. Celle-ci doit calculer : (IndBT en date du devis x le pris untitaire)/IndBT du jour (plutôt le mois actuel)
En prenant l’exemple de l'image jointe, ça donnerait (112.2x21)/111.5
ce qui donnerait dans la case 21.13

Est-ce possible ? En esperant que ma demande est explicite.
 

Pièces jointes

  • Capture.JPG
    138.3 KB · Affichages: 50

Swin

XLDnaute Nouveau
Bonjour. je remonte ce fil, j'espère que ce n'est pas interdit mais j'aurai aimé avoir un peu d'aide.

J'ai essayé d'adapter le fichier à mon programme mais il y a 2-3 choses qui ne fonctionnent pas correctement..


La listbox s'affiche bizarrement en bas du formulaire lors de l'exécution
Lors de la sélection de la section (IG,AD,CT), j'aimerai avoir directement les élèves disponibles pour section. Là ça se met bizarrement à jour, je ne sais pas comment.

Est-il possible de ne pas avoir la barre de défilement de la listbox ? Comment réagencer les colonnes ?

J'espère que je n'en demande pas trop, je suis un gros débutant en VBA, j'apprends par moi-même

Merci d'avance si vous savez m'aider !
 

Pièces jointes

  • Projet_V15.xlsm
    172.8 KB · Affichages: 11

ChTi160

XLDnaute Barbatruc
Bonjour Swinn

Pour ce qui est de :
Est-il possible de ne pas avoir la barre de défilement de la listbox ? Comment réagencer les colonnes ?
il te faut dans ce cas aller dans les Propriétés de ta ListBox et de Modifier la propriété Columnwidths la largeur des Colonnes
Propriété qui se présente ainsi.
280 pt ;375 pt ;280 pt ;280 pt ;280 pt ;280 pt ;280 pt ;280 pt
En adaptant les Largeurs, tu n'auras plus la Barre de défilement (n'est visible que si la somme des Largeurs des Colonnes et supérieure à la largeur de Ta ListBox)
Bonne fin de Journée
Jean marie
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…