alimenter une listbox depuis une macro

  • Initiateur de la discussion Initiateur de la discussion Matt51100
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Matt51100

XLDnaute Occasionnel
Bonjour à tous,

Mon problème est le suivant :

J'ai une macro qui boucle une colonne de mon tableau, à chaque fois qu'une condition est remplie j'aimerais envoyer une information contenue dans ma ligne vers une listbox. Je pêche un peu sur cela. Pouvez vous m'aider ?

Voici mon code :

Code:
Public a As String

Sub essai()

Cells.Find(What:="date de péremption", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False, SearchFormat:=False).Activate

Dim cc As Range
Dim cs As Range


Set cc = ActiveCell

Do Until cc.Value = "fin"
Set cs = cc.Offset(1, 0)
a = cs.Offset(0, -5).Value
If cs.Interior.ColorIndex = 15 Or cs.Interior.ColorIndex = xlNone Then
GoTo tt
ElseIf cs.Value - 350 < Date Then
Call userform_initialize
End If
tt: Set cc = cs
Loop
UserForm1.Show

End Sub

Private Sub userform_initialize()
lisbox1.AddItem (a)
End Sub

J'ai bien sur créé une USF avec une listbox à l'intérieur. Achaque fois que je fais tourner la macro il m'indique "Objet requis".

Merci d'avance.

A+, Matt.
 
Re : alimenter une listbox depuis une macro

bonjour

il faut déclarer "a" en public, de manière à ce qu'il soit reconnu par la sous macro

si cela ne suffit pas, merci de mettre un fichier en exemple.

Cordialement

Olivier
 
Re : alimenter une listbox depuis une macro

Bonjour bhbh
=> bien vu le 't' manquant, j'avais même pas fait gaffe... (pourtant les majuscules aurait du me mettre la puce à l'oreille)
le "me" a-t-il un sens si le code est écrit dans un module ?
 
Re : alimenter une listbox depuis une macro

Bonjour à tous,

Pour Odesta, "a" est bien déclaré en public.

bhbh, oh la la je ne l'avais bien sur pas vu. Quant à prendre des habitudes, je me suis formé sur le tas en VBA et je pense que c'est plutôt des mauvaises habitudes que j'ai prises.

Malheureusement après avoir rectifié ma faute d'orthographe, j'ai toujours le même problème...
 
Re : alimenter une listbox depuis une macro

Re-,

je me suis formé sur le tas en VBA

Comme pratiquement tout le monde...

c'est plutôt des mauvaises habitudes que j'ai prises

Ça, ça se soigne....😀

le "me" a-t-il un sens si le code est écrit dans un module

le "Me" ne peut désigner qu'un objet (UserForm, Feuille)...
Tu peux l'écrire dans n'importe quel évènement d'un de ces objets (en plus, tu as une proposition "intuitive", qui te permet de lister les propriétés, les objets, j'en passe et des meilleures...

Maintenant, Matt, pour ton souci, tu indiques "objet requis", mais à quelle ligne?

A l'initialisation de l'userform? (d'ailleurs, l'absence de majuscules m'interpelle....tu as bien un userform?)

Normalement :

Code:
Private Sub UserForm_Initialize()

Je subodore que tu as mis cette procédure dans le même module que ta macro....
cette procédure s'inscrit dans le code de l'userform (double-clique dessus, pour voir le code)

de plus, la syntaxe correcte pour appeler un userform est :

Code:
UserForm1.Show

Je pense.....
 
Re : alimenter une listbox depuis une macro

Bonjour Matt, aux participants et à ceux qui passeront par là.

Juste une petite remarque au passage, (Que tous ne partageront peut-être pas?)

Avec ma petite expérience, je me suis rendu compte que très vite
l'utilisation des TextBoxes devenait pas bouffables, ou difficilement,
au regard des ListView!

Si tu souhaites y avoir moult Items et SubItems et en faire recherche
ou tri, il serait bien que tu regardes du coté de ces dernières,
qui sont au final plus faciles à utiliser.

Amicalement

Yann
 
Re : alimenter une listbox depuis une macro

Bonjour à tous,

Effectivemment j'avais placé Userform_Initialize dans le code de la macro, je l'ai replacé dans le code de l'USF (oui,oui, j'en ai bien une 😉).

Dans ce cas, j'ai une erreur de compilation : sub ou function non défini à la ligne de mon call UserForm_Initialize.

J'ai essayé avec la syntaxe UserForm1_Initialize mais même résultat.

A+, Matt.
 
Re : alimenter une listbox depuis une macro

Bonjour,

On ne dit pas "A+", on explique un peu plus....Nuance....

Tu as bien supprimé l'initialize qui était dans le module?

Je pense qu'à ce niveau, ton fichier serait des plus utiles, afin de pouvoir t'aider au mieux...

Travailler avec une boule de cristal, c'est pas trop mon truc...;

A te relire...
 
Re : alimenter une listbox depuis une macro

Re,

Désolé de ne pas être plus explicatif je vois pas trop ce que je peux dire de plus.

Je joins le fichier complètement expurgé pour qu'il passe sous les 48 ko et parce que c'est une utilisation pro.

Enfin, je pense que l'essentiel y est.

bhbh, comme tu peux le voir l'initialize est bien au niveau de l'USF.

Enfin, encore merci de me donner un coup de main.

A tout', Matt.
 

Pièces jointes

Re : alimenter une listbox depuis une macro

Re-,

ben voilà, c'est bien plus facile...

Tu as maintenu Call UserForm_Initialize, source de l'erreur....

Comme dit plus haut, on appelle un USF par UserForm1.Show...

Je regarde pour simplifier un peu ton code...

A de suite
 
Re : alimenter une listbox depuis une macro

Re-,

ton code un peu simplifié

dans un module standard, tu mets ceci :

Code:
Public a()
Sub essai()
UserForm1.Show
End Sub

et dans le code de l'userform, mets ceci :

Code:
Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim Col As Byte
Dim I As Long
Dim Cel As Range
Col = Rows(1).Find(What:="date de péremption").Column
I = 1
For Each Cel In Range(Cells(2, Col), Cells([A65000].End(xlUp).Row, Col)).SpecialCells(xlCellTypeConstants, 1)
    If IsDate(Cel.Value) And Cel.Value - 350 < Date Then
        ReDim Preserve a(1 To I)
        a(I) = Cel.Offset(0, -5).Value
        I = I + 1
    End If
Next Cel
Me.ListBox1.List = a
End Sub

C'est un exemple parmi d'autres pour charger une listbox...

Note la façon de décharger l'userform, on utilise Unload, et non Hide (Hide ne fait que masquer l'USF, sans le décharger, regarde dans l'aide)

bon courage
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
476
Réponses
5
Affichages
486
  • Question Question
Microsoft 365 Macro VBA
Réponses
2
Affichages
557
Réponses
2
Affichages
1 K
Retour