Formulaire personnalisé USERFORM avec listbox+Combox+textbox

Bonjour,

J'ai eu beau adapter et adapter, cela ne fonctionne pas. Je cherche à créer un formulaire se composant d'une combobox donnant les résultats sur 21 textboxs, ça pas de soucis ça fonctionne!!

Dans mon formulaire j'aimerais que ce qui correspond à la colonne 13,14,15 soit affiché dans une listbox. Pour la raison suivante, suivant le choix d'une combobox (titres), j'ai de la colonne 1 à 12 , les informations permanentes liées à chaque titres, en colonne 13,14,15 je possède des dates et des numéros de documents qui peuvent êtres variables en fonction des titres. Et de la colonne 16 à 21 se sont à nouveau des informations sur des dates de parutions et d'envoi etc...

Mon souhait avoir un formulaire qui me permet de visualiser sur un même userform la fiche identité et les mouvements de celui ci. Je dois aussi pouvoir compléter, c'est à dire ajouter à chaques titres pouvoir ajouter les informations nouvelles qui viendront dans la listbox.

Je sais créé un formulaire simple avec une combobox ou 2 combobox, les choses basics, mais avec une listbox impossible.

J'ai parcouru les forums il y a beaucoup d'exemples, où les formulaires se disposent d'une combobox ou plusieurs de choix et cela renseigne une listbox, mais ce n'est pas ce que je cherche à réaliser. Je suis donc bien ennuyée.

D'avance merci pour vos conseils et vos astuces.

Bonjour Mistinguette, bonjour le forum,

Difficile de t'aider sans le fichier qui va bien...

Private Sub UserForm_Initialize()
    Dim j As Long
    Dim i As Integer

    Set Ws = Sheets("GT")
    NbLignes = Ws.Range("A65536").End(xlUp).Row

    With Me.ListBox1.clear

    End With

    InitCombo1
End Sub

Sub InitCombo1()
    Dim j As Long
    Dim titre As String

    Set Titres = CreateObject("Scripting.dictionary")
    For j = 2 To NbLignes
        titre = Ws.Range("A" & j).Value
                If Not Titres.exists(titre) Then Set Titres(titre) = CreateObject("Scripting.dictionary")
          Next j
    With Me.ComboBox1
        .Clear
        If Titres.Count > 0 Then .List = Application.Transpose(Titres.keys)
    End With
End Sub
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim i As Integer

Nettoyage 'Lance le programme Nettoyage

  If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    Ligne = Me.ComboBox1.List(Me.ComboBox1.ListIndex, 1)
        For i = 1 To 21
            Me.Controls("TextBox" & i) = Ws.cells(Ligne, i).Value
        Next i
End Sub

'Programmation de Nettoyage en effaçant les données de toutes les TB
Sub Nettoyage()
Dim i As Integer

For i = 1 To 21
    Me.Controls("TextBox" & i) = ""
Next i
End Sub

Bonjour,

Difficile de t'aider sans le fichier qui va bien...

A+

Je joins donc un fichier test comme demandé,

D'avance merci,

Bonjour,

Ton programme a plusieurs soucis qui empêchent l'initialisation de ton formulaire, tu as mis Option Explicit mais pas toutes tes variables sont déclarées, et tu as mal écris certaines lignes:

    With Me.ListBox1.clear

    End With

qui devrait juste donner:

Me.ListBox1.clear

Est-ce normal? Je pensais que ton problème venait de la ListBox, je m'attendais donc à ce que le reste marche

Bonjour le fil, bonjour le forum,

D'accord avec Ausecour... Avec aussi une très mauvaise conception de ta UserForm.

Tu utilises deux Comboboxes [Référent] et [Référent 2] que tu as renommées TextBox1 et TextBox2. Ce n'est pas parce que tu les as renommées qu'elle deviennent de véritables Textboxes. Elles restent des ComboBoxes ! Il te faut changer de contrôle...

Comme dans plusieurs codes tu boucles sur 21 TextBoxes de 1 à 21, et qu'il manque les Textboxes : 1, 2, 13, 14 et 15, forcément ça plante.

Revoie ta copie et reviens avec un fichier qui va VRAIMENT bien !...

Bonjour le fil, bonjour le forum,

D'accord avec Ausecour... Avec aussi une très mauvaise conception de ta UserForm.

Tu utilises deux Comboboxes [Référent] et [Référent 2] que tu as renommées TextBox1 et TextBox2. Ce n'est pas parce que tu les as renommées qu'elle deviennent de véritables Textboxes. Elles restent des ComboBoxes ! Il te faut changer de contrôle...

Comme dans plusieurs codes tu boucles sur 21 TextBoxes de 1 à 21, et qu'il manque les Textboxes : 1, 2, 13, 14 et 15, forcément ça plante.

Revoie ta copie et reviens avec un fichier qui va VRAIMENT bien !...

Bonjour ThauThème

Visiblement tu es allé plus loin que moi dans l'analyse!

Avec tout ça en plus, c'est mal parti, dommage parce que l'userform est joli

Bonjour Mistinguette

Bonjour Ausecour, ThauThème, Galopin

Je vais ajouter mon grain de sel !

Je hais les userform. Sauf utilisation simple et très spécifique.

C'est plein de problèmes potentiels : format date et nombre, liste déroulante, programmation ...

Je remplace quand je peux par un onglet spécifiquement dédié à la saisie, plus facile à contruire en terme de formats et de listes déroulantes. Et une macro un peu passe-partout que j'ai déjà proposée ici : https://forum.excel-pratique.com/viewtopic.php?p=735309#p735309

Dans son principe ... je crée un onglet "bien présenté", j'y mets toutes les conditions de format et de validation par liste des données, j'identifie chaque valeur avec un nom _colXX où XX est le numéro de la colonne de la base de données et ensuite je lui colle la macro générique.

Salut Steelson

C'est vrai que ça demande de coder et que ça génère des erreurs si c'est mal fait, mais bon... on les aime quand même

Merci pour l'idée en tout cas

Re,

Je vous remercie pour vos informations, j'ai fais du mieux que j'ai pu. SI a votre sens je dispose d'un userform pas conforme, je ne suis venue qu'au Vba depuis pas très longtemps, j'ai donc essayer de comprendre soit en lisant les différents post, soit par des tutoriels.

A vous lire, je ne vous cache pas que cela me démotive. Je ne suis pas autant expérimentée en vba pour comprendre ce qui ne va pas.

J'avais renommé deux combobox car à l'intérieur j'y choisi une liste de nom qui sera fixe. Et il me semble que l'on ne peut pas le faire avec un textbox! Ensuite j'ai fais avec le basic du basic. J'ai pensé que de renvoyer certaine colonne dans une listbox pour avoir meilleur visibilité serait pas mal.

J'abandonne l'idée et puis je vais faire autrement.

Par contre juste une chose, si les personnes viennent et finissent ici c'est sans doute car ils ne maitrisent pas tout. Et donc toutes ces critiques sont bien bonnes à prendre cependant on a tous débuté un jour!!!

Merci de vous être penché sur le sujet malgré tout!!!

Re,

Hola Mistinguette, tranquille ! On a tous ici débuté un jour et galéré comme toi.

Si tu me permets de faire à ma sauce je te refais l'UserForm sans problème. J'ai préféré te demander de le faire pour tu comprennes mieux la manière... Le code sera commenté pour te permettre de le comprendre.

Motivés, motivés, il faut se motiver !...

C'est très gentil!

Merci j'espère juste que ce ne sera pas compliqué à reproduire....

Ce soir je laisse ma tête au calme et je reviendrai demain dessus ...

Pas de soucis je suis tranquille, peut-être juste directe!!

A vous lire, je ne vous cache pas que cela me démotive. Je ne suis pas autant expérimentée en vba pour comprendre ce qui ne va pas.

Par contre juste une chose, si les personnes viennent et finissent ici c'est sans doute car ils ne maitrisent pas tout. Et donc toutes ces critiques sont bien bonnes à prendre cependant on a tous débuté un jour!!!

Holà, ne pas se méprendre sur notre intervention, en tous cas la mienne. Un userform c'est sacrément fastidieux, je le reconnais, et c'est pour cela que je propose très souvent de le remplacer par un onglet dédié et une macro générique ...

Bonjour,

nous savons bien que les personnes qui viennent ici ont une raison de le faire, mais j'étais juste étonné que tu nous parle de ton soucis de ListBox alors que le formulaire ne se lançait même pas, j'ai pointé les problèmes afin que tu puisses les corriger

Il ne faut pas se décourager pour quelques retours "négatifs", je crois comprendre pourquoi tu as renommé tes combobox en textbox, mais je te conseille tout de même de laisser ComboBox au début de tes contrôles, après tu peux les appeler ComboBox_nom et ComboBox_prenom. La raison c'est que si tu commences à changer le nom d'un contrôle en mettant le début d'un autre, comme ici avec TextBox, tu risques de te mélanger les pinceaux

On souhaite t'aider crois moi, si tu as besoin qu'on corrige ton code pour que ton Userform se lance correctement on peut le faire

Bonjour à Tous,

Y a pas de souci j'ai très bien compris vos messages, je ne sais pas pourquoi l'userform ne se lance pas depuis la transmission de mon fichier. Je vais regarder ça et je vais essayer de refaire mon formulaire de base. Je vais prendre en compte vos observations.

Merci pour vos retours en tous cas!!

Et mille excuses si je me suis fait mal comprendre!!!

Bonjour à Tous,

Y a pas de souci j'ai très bien compris vos messages, je ne sais pas pourquoi l'userform ne se lance pas depuis la transmission de mon fichier. Je vais regarder ça et je vais essayer de refaire mon formulaire de base. Je vais prendre en compte vos observations.

Merci pour vos retours en tous cas!!

Et mille excuses si je me suis fait mal comprendre!!!

Bonjour

Pour mon cas c'est surtout le fait que certaines variables ne soient pas déclarées alors que tu as écris

Option Explicit

, j'ai toujours du mal à comprendre pourquoi cette ligne embête plus ou moins certaines personnes, peut-être un souci de version d'Excel

En tout cas bon courage! Si tu as des incompréhensions, besoin de précisions ou autre, n'hésite pas à revenir vers nous

je vais essayer de refaire mon formulaire de base

Si tu souhaites réaliser ton "formulaire" en dédiant un onglet pour cela, je suis prêt à t'aider. Pour un userform, je te laisserai avec mes éminents compères !

Bon courage.

Je suis tout à fait partante de tenter à dédier un onglet pour arriver au même résultat cependant, j'avoue que là je suis une ignare, j'ai jamais fait.

Je ne sais même pas si déjà pour construire mon formulaire sous un onglet, si il me faut insérer des contrôles sous le menu DEVELLOPEUR?? Et par la suite lancer une macro??

Que dois je faire déjà en tout premier?? et surtout est ce plus simple à réaliser que via un userform??

D'avance merci.

Re,

Si tu souhaites faire un formulaire via un onglet Excel, l'avantage que tu auras, c'est que tu auras beaucoup moins de contrôles, et donc moins de programmation par la même occasion, toutes tes TextBox peuvent être remplacées par des cellules, toutes tes ComboBox par des cellules avec "Validation de données" (onglet "Données")

Tu n'auras donc plus besoin non plus de gérer l'affichage d'un formulaire ou l'initialisation des contrôles, tu peux également utiliser des formules si besoin. Tu auras encore quelques choses à coder en VBA par contre, je laisse Steelson gérer, il a une méthode etc, il sera le mieux placé pour en parler

Rechercher des sujets similaires à "formulaire personnalise userform listbox combox textbox"