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

Mettre à jour une feuille via un UserForm

  • Initiateur de la discussion Initiateur de la discussion yeti_yeti
  • 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 !

Y

yeti_yeti

Guest
Re bonjour,

Je risque de venir souvent par ici d'ailleurs ces prochains temps 😉

Voilà mon problème. J'ai un userform avec des listbox. J'aimerais que lorsque je modifie un de mes choix dans une listbox, ce nouveau choix soit automatiquement reporté sur une feuille. Voici le code que j'ai fait mais qui ne marche pas:

Code:
Private Sub ListBox1_Change()

    Sheets("Données").Select
    Cells(2, 10).Select
    ActiveCell.FormulaR1C1 = Me.Controls(ListBox1).Text
        
End Sub

Un petit coup de pouce svp?
 
Re : Mettre à jour une feuille via un UserForm

Bonjour "Yeti-Yeti", Spitnolan08, le Forum

On pourrait utiliser la syntax :
ActiveCell.FormulaR1C1 = Me.Controls(ListBox1).Text

A condition de passer en string le nom du Contrôle "ListBox1" comme suit :
ActiveCell.FormulaR1C1 = Me.Controls("ListBox1").Text

C'est très utile pour faire ce genre de boucle (si on a dix TextBox) :
Code:
Dim x As Byte
Dim MyTotal As Double
For x = 1 To 10
    If IsNumeric(Me.Controls("TextBox" & x)) Then
        MyTotal = MyTotal + Me.Controls("TextBox" & x).Value
    End If
Next
MsgBox "Total = " & MyTotal


Maintenant le "FormulaR1C1" ne sert à rien dans ce cas de figure et la syntax de Spitnolan08 est correcte, quoique tant qu'à faire si on écrit sur une adresse fixe, je préfère indiquer directement l'adresse (ce qui évite de compter les cellules ensuite...)

Sheets("Données").Range("J2") = Me.ListBox1


Bonne journée

@+Thierry
 
Re : Mettre à jour une feuille via un UserForm

Re
Bonjour Thierry,

C'est un grand honneur pour moi de te croiser sur un fil pour la première fois! Après avoir eu l'occasion de parcourir tes démos epoustouflantes...

Tes remarques sont bien entendu exactes mais yet_yeti ne parlait pas de plusieurs listbox... Donc au plus court...

Cordialement
 
Re : Mettre à jour une feuille via un UserForm

Re-Bonjour Spitnolan08, Yeti_Yeti, le Forum

Merci beaucoup pour les compliments pour mes démos, je ne fais que passer de temps à autres et hélas assez rarement.

Oui tu as tout à fait raison d'aller au plus court, je voulais juste préciser que dans sa syntax, "Yeti" n'était pas loin d'être presque bon, il ne manquait que des "quotes"... C'est toujours motivant pour les débutants ;-)

Bien à toi !

@+Thierry
 
Re : Mettre à jour une feuille via un UserForm

Merci pour cette information Thierry.

Je relance juste ce sujet car j'ai un autre petit soucis.
Exemple: Dans la cellule A1 de la feuille Donnée, j'ai le calcul suivant:

=100-SOMME(A2:A6)

Et dans mon userform j'ai fait un Textbox qui est censé afficher en "temps réel" cette valeur, mais ca ne fonctionne pas.

Dans la fenêtre de propriétés, sous ControlSource, j'ai mis 'Données'!A1 et la valeur s'affiche bien lors de la conception. Par contre lorsque j'exécute le tout et que j'utilise les listbox susmentionnées, la valeur reste à 100...

Comment faire?
 
Re : Mettre à jour une feuille via un UserForm

Re bonjour

Il est préférable, à partir du moment où l'on travaille en mode "RunTime" (Par Programmation) d'abandonner toute référence faite en mode "Design" (Par la fenêtre Propriété)

Par exemple pour ta TextBox en mode RunTime sur l'évèment "Initialize" :

Code:
Private Sub UserForm_Initialize()
TextBox1 = Sheets("Données").Range("A1")
End Sub

A condition de supprimer les reéférence en propriété de "ControlSource".

Bonne Fin de Journée
@+Thierry
 
Re : Mettre à jour une feuille via un UserForm

Merci. La valeur s'affiche bien, la formule n'est plus perdue comme au début avec la fenêtre de propriété.

Cependant la valeur ne se met pas automatiquement à jour dans le UserForm, par contre c'est le cas dans la feuille. Saurais-tu y remédier?
 
Re : Mettre à jour une feuille via un UserForm

Re,

J'ai donné en exemple d'évènement "Initialize", évènement qui ne se produit qu'au lancement du UserForm.

Tout dépend par quel moyen tu changes les données de ta plage qui est en référence dans ta formule...

Un exemple en reprenant une ListeBox qui changerait les données en "A2", qui seraient actualisée en temps réel PAR UNE Macro "MAJ_TextBox1" :

En Cellule "A1", formule =100-SOMME(A2:A6)


Code:
Private Sub UserForm_Initialize()
Dim X As Integer
For X = 1 To 10
    Me.ListBox1.AddItem X [COLOR=green]'Pour avoir quelque chose en ListBox1[/COLOR]
Next
    MAJ_TextBox1
End Sub

Private Sub ListBox1_Change()
    Sheets("Données").Range("A2") = CDbl(Me.ListBox1)
    MAJ_TextBox1
End Sub
 
Private Sub MAJ_TextBox1()
    TextBox1 = Sheets("Données").Range("A1")
End Sub


Bon Courage

@+Thierry
 
Re : Mettre à jour une feuille via un UserForm

Je t'envoie le fichier pour que tu puisse voir comment ca marche...

Pour te rendre à l'endroit qui pose problème, clique sur "Nouveau jeu", puis "Suivant", ne prends pas la peine de remplir les différents champs 😉

Comme le fichier est plus lourd que la limite, je t'envoie un lien:

http://www.catch-newz.com/PWS.xls
 
Re : Mettre à jour une feuille via un UserForm

Re Bonsoir

Désolé je n'aurai pas le temps de voir ton fichier, en tout cas pas ce soir ni demain.

Si quelqu'un veut bien prendre la main, sinon tu as déjà des bases d'explication dans ma précédente réponse.

Bonne Soirée

@+Thierry
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
0
Affichages
948
Maad84
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…