Bonjour à tous,
Et d'avance merci pour votre réponse que j'attends impatiemment.
Mon fichier Excel se compose d'une seule feuille "Feuil1" qui contient une liste dans la colonne A. Mon programme permet d'augmenter ou de diminuer le nombre de ligne de la liste.
J'ai créé une Userform "Usf1". Dans Usf1, j'ai une zone de liste déroulante dans laquelle je souhaite que s'affiche la liste de Feuil1.
Si j'utilise l'option "RowSource" des propriétés de la liste et que j'y mets "Feuil1!A:A", ma liste comportera toutes les lignes non remplie de la colonne de Feuil1. Pas facile à travailler.
Si par contre j'y inscrit "Feuil1!A1:A50" il n'affichera que les 50 première lignes. Ce qui peut être trop ou pas assez.
En fait je souhaite un affichage dynamique qui varie en fonction du nombre de lignes de ma liste.
Pouvez vous m'aider ?
quand tu aura un moment si tu peux expliquer OFFSET
je doute que cela soit juste pour prendre le reste comme formule matricielle et donc un tableau
bravo du coup je suis ennuyé on se sert pas d'evaluate je ne sais donc pas dans quelle ( librairies de mes astuces ) le mettre
quoi que "[...]" est la formule abrégée de evaluate
Désolé, j'ai été contraint de m'absenter.
Je reprends et ça marche ! Merci.
ça me pose une autre question : le ListBox1.List = tablo semble fonctionner à l'initialisation de ma Userform1. Est ce que le fait de faire UserForm1.Show repasse la fonction initialize ?
En d'autres termes, si j'affiche ma Userform1 par show, puis que je fasse un autre traitement et que j'ajoute des lignes, si je fais à nouveau userform1.show, l'affichage tiendra t-il compte de la liste mise à jour ?
Oups !
Autant pour moi.
Je teste et je reviendrai vers vous si cela ne fonctionne pas.
Mais compte tenue de votre réponse, cela devrait fonctionner. je teste quand même.
En tout cas merci pour votre aide. J'apprécie vraiment.
Chez moi si par exemple j'exécute ce code dans UserForm1 :
VB:
Private Sub CommandButton1_Click()
With Sheets("Liste").[A1].CurrentRegion
.Cells(.Rows.Count + 1, 1) = "ZZZ" 'à adapter
End With
UserForm1.Show
End Sub
j'ai le message d'erreur "Feuille déjà affichée ; affichage modal impossible".
Par contre pas de problème avec :
VB:
Private Sub CommandButton1_Click()
With Sheets("Liste").[A1].CurrentRegion
.Cells(.Rows.Count + 1, 1) = "ZZZ" 'à adapter
End With
UserForm_Initialize 'lance la macro
End Sub
Private Sub CommandButton1_Click()
Cells(Rows.Count, 1).End(xlUp).Offset(1).FormulaLocal = "=ligne()"
UserForm_Activate
End Sub
Private Sub UserForm_Activate()
ListBox1.List() = [A1].CurrentRegion.Value
End Sub
cela dit en ce qui me concerne il serait plus intelligeant de faire ceci
Code:
Private Sub CommandButton1_Click()
Cells(Rows.Count, 1).End(xlUp).Offset(1).FormulaLocal = "=ligne()"
listage
End Sub
Private Sub UserForm_Activate()
listage
End Sub
Private Sub listage()
ListBox1.List() = [A1].CurrentRegion.Value
End Sub