Créer et remplir un nombre variable de textbox dans un UF

snipe2004

XLDnaute Nouveau
Bonjour à tous,

J'ai un fichier très compliqué, mais que je peux aisément vous résumer comme ceci :

Nom
Date
Explication
Jean
25/10/14
Blablabla
Pierre
26/10/14
Bliblibli
Jean
27/10/14
Blobloblo
Jean
28/10/14
Blublublu

J'ai un UF qui me met en page les lignes ne concernant qu'une seule et même personne à des fins d'impression papier (pour toute une série de bonnes raisons trop longues à expliquer ici). Concrètement, j'ai 3 Txtbox fixes qui figurent les titres de colonnes ("Nom", "Date" et "Explication", donc) sous lesquelles je génère autant de Txtbox figurant les lignes de colonnes que nécessaire (3 si je choisis "Jean", 1 si je choisis "Pierre" dans l'exemple).

En résume, au niveau de la mise en page, je reproduis exactement le tableau ci-dessus. Là, pas de souci.

Là où je coince et j'en appelle à vous, c'est pour remplir ces Textbox avec les données de chaque ligne. En effet, jusqu'à présent j'arrive bien à générer tout ça, mais la valeur que je rentre est toujours celle de la 1ère ligne rencontrée. Dans l'exemple ci-dessus, voici ce que me rend mon UF si je choisis Jean :

Nom
Date
Explication
Jean
25/10/14
Blablabla
Jean
25/10/14
Blablabla
Jean
25/10/14
Blablabla


Voici le code que j'utilise pour ce faire, copié-collé du Net et adapté :

Code:
Private Sub CbxEleve_Change()
'Procédure de création et remplissage des textbox
        Dim Obj As Control
        Dim i As Integer
        Dim PosX As Long
        Set Collect = New Collection
            'boucle pour la création des TextBox
                For i = 1 To Range("DataGen!AZ" & lign).Value 'DataGenAZ représente le nombre de lignes pour "Jean"
                    Set Obj = Me.Controls.Add("forms.TextBox.1")
                        With Obj
                            .Name = "TxtDiscDate" & i
                            .Object.Value = Range("Histo!F" & lign).Value 'Histo!F représente la colonne de la date, "lign" la variable contenant la ligne sélectionnée, soit la première contenant le nom recherché
                        End With
                    Set Obj = Me.Controls.Add("forms.TextBox.1")
                        With Obj
                            .Name = "TxtDiscFaits" & i
                            .Object.Value = Range("Histo!J" & lign).Value 'Histo!J représente la colonne contenant les explications
                        End With

Comment puis-je faire en sorte que, pour chaque ligne de Textbox qu'il crée, il aille chercher la prochaine occurrence du nom recherché? :)

Merci à tous!
 

john

XLDnaute Impliqué
Re : Créer et remplir un nombre variable de textbox dans un UF

Bonjour,

Un exemple c'est bien... mais un fichier c'est mieux :)
Car si on doit se pencher sur ton problème, on (tous ceux qui vont essayer de t'aider) a pas envie de devoir faire le fichier avant de pouvoir commencer à essayer de résoudre ton soucis...

Je suppose que de faire un fichier exemple ne t'aurai pas pris plus de temps que de faire tes tableaux ici !!!

Bonne journée.

John
 

snipe2004

XLDnaute Nouveau
Re : Créer et remplir un nombre variable de textbox dans un UF

Ahah, si ça va être long car c'est un mégaaaa fichier avec des tonnes de feuilles de données et d'UF différents avec des données sensibles, le tout relié directement au réseau en interne avec des liens vers les photos. Donc là je dois débugger tout xD Et en plus, c'est vachement plus simple "hors contexte" avec juste l'essentiel, ici il va y avoir tout le blabla autour :p

Mais ok, c'est parti, je vous fais ça =)

(...)

Bon j'ai pas su trop débugguer tout, donc évitez dans "Récapitulatif élève" de sélectionner le premier élève, il bugge. Pas les deux autres :p En plus mon fichier est 40 Ko trop lourd >.< Bon voilà ça devrait être bon =D

Merci d'avance !
 

Pièces jointes

  • Snipe2004-ExempleXLD.xlsm
    229.7 KB · Affichages: 53

snipe2004

XLDnaute Nouveau
Re : Créer et remplir un nombre variable de textbox dans un UF

J'ai dans l'idée de fonctionner comme ceci, mais je ne sais pas comment le coder :-/ :

1) Comme dans le code actuel, créer le nombre de textboxs ad hoc en fonction du nombre de lignes nécessaires.
2) En partant du dessus de la feuille, pour chaque fois qu'on rencontre le nom recherché, insérer le contenu de la ligne dans les textbox.
3) Boucler ainsi jusqu'au moment où il n'y en a plus.

Est-ce possible ?
 

Discussions similaires

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley