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

Remplir une cellule a partir de combobox puis vider la combobox

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

Jema

XLDnaute Nouveau
Bonjour 🙂

J'ai une petite combobox que je pense assez simple qui sert à remplir une cellule directement quand on sélectionne un élement de la combobox.

Private Sub ComboBox1_Change()
Sheets("param").Calculate

Range("D3") = "0:" & ComboBox1.Value

' ligne suivante pose probleme
ComboBox1 = ComboBox1.List(0)

End Sub

Quand je ne met pas la ligne qui pose problème, la copie se fait sans problème et la cellule recoit la bonne donnée.

Mais ce que j'aimerais bien pouvoir faire c'est remplir la cellule puis vider la sélection de la combobox. Or avec le code que j'ai là, il est censé remplir la cellule d'abord puis changer la valeur de la combobox, mais il modifie la valeur de la cellule également. Les deux sembles donc toujours liés pendant l'exécution de la fonction.

Où fais-je une erreur?! 🙂

Merci d'avance!

Jema
 
Dernière édition:
Re : Remplir une cellule a partir de combobox puis vider la combobox

Bonsoir Jema,

Pour éviter que la macro soit relancée quand on modifie la ComboBox, il faut désactiver l'action des évènements, puis ne pas oublier de les réactiver ensuite :

Code:
Private Sub ComboBox1_Change()
Sheets("param").Calculate 'à quoi ça sert ???
Range("D3") = "0:" & ComboBox1
Application.EnableEvents = False 'désactive l'action des évènements
ComboBox1 = ComboBox1.List(0) 'pourquoi pas = "" ???
Application.EnableEvents = True
End Sub

A+
 
Re : Remplir une cellule a partir de combobox puis vider la combobox

Ahhhh... J'y ai cru! J'étais persuadé que ca marcherait mais manifestement aucun changement. :'(

Même en ne mettant QUE Application.EnableEvents = False
et plusieurs tests, toujours le même soucis.

Merci pour l'effort. 🙂

Jema
 
Re : Remplir une cellule a partir de combobox puis vider la combobox

bonsoir le fil, Job75, Jema

... Les deux sembles donc toujours liés pendant l'exécution de la fonction
D'ou (peut-être) :
Code:
Range("D3") = "0:" & ComboBox1.Value
[B][COLOR=blue]Range("D3") = Range("D3").Value[/COLOR][/B]
A plus
 
Re : Remplir une cellule a partir de combobox puis vider la combobox

Bonjour,

en général, pour éviter un nouvel appel lors du changement dans la liste, je passe par une variable booléenne déclarée hors macro :
Code:
Dim Fait As Boolean
Private Sub ComboBox1_Change()
  Sheets("param").Calculate
  If Fait = False Then
    Range("D3") = "0:" & ComboBox1.Value
    Fait = True
    ComboBox1 = ""  'pour pouvoir choisir, ensuite, le premier de la liste
    Fait = False
  End If
End Sub

remarque : dans la demande, vider n'est pas clair (clear) !
 
Dernière édition:
Re : Remplir une cellule a partir de combobox puis vider la combobox

Bonjour Jema, soenda, Lii,

En réfléchissant, je parierais bien sur ça :

- la liste de ComboBox1 est donnée par la propriété RowSource

- la cellule D3 se trouve dans la plage de définition de RowSource.

Dans ce cas Application.EnableEvents = False est inopérant en effet.

La méthode de Lii doit alors fonctionner, à condition de remplacer :

Code:
    Range("D3") = "0:" & ComboBox1.Value
    Fait = True

par :

Code:
    Fait = True 'bon emplacement
    Range("D3") = "0:" & ComboBox1.Value

Edit : autre possibilité, dans la plage de RowSource se trouvent des formules, alors peut-être supprimer :

Sheets("param").Calculate

A+
 
Dernière édition:
Re : Remplir une cellule a partir de combobox puis vider la combobox

Bonjour de nouveau et merci pour toutes vos propositions. 🙂

Voici le résultat de mes tests :

Solution 1 de job75 nok. Merci quand même. 🙂

Solution Soenda nok, même en rajoutant le truc de job75. Tentative risquée je trouve, mais ca aurait pu passer. 🙂

Solution de Lii OK! Bravo et merci! 😛 (+ lol pour la blague ;-) )

Donc :
"""
Dim Fait As Boolean

Private Sub ComboBox1_Change()
Sheets("sheet1").Calculate

If Fait = False Then
Range("D3") = "0:" & ComboBox1.Value
Fait = True
ComboBox1 = "" 'pour pouvoir choisir, ensuite, le premier de la liste
Fait = False
End If

End Sub
"""

Reste que cette solution prouve de fait que la fonction s'exécute deux fois d'affilés, sans celà ca ne fonctionnerait qu'une fois sur deux mais ca fonctionne ici à chaque fois.

Alors pour terminer l'analyse de vos propositions.
job75 : bien imaginé également, ca aurait pu, mais ma liste de données se trouve en fait sur une feuille "param" alors que la cellule modifiée se trouve sur "call" donc pas de lien dans ce cas.

Pour terminer, ca fonctionne donc, mais il reste toujours le mystère du pourquoi la fonction s'exécute deux fois. Si vous savez élucider ceci, je suis toujours preneur.

Bonne fin de journée et bon week-end à tous. 🙂

Jema
 
Re : Remplir une cellule a partir de combobox puis vider la combobox

Pour terminer, ca fonctionne donc, mais il reste toujours le mystère du pourquoi la fonction s'exécute deux fois.

Si j'ai bien compris, la plage de RowSource est dans la feuille "param".

S'il y a des formules dedans, elles sont recalculées avec :

Sheets("param").Calculate

ce qui modifie la ComboBox.

A+
 
Re : Remplir une cellule a partir de combobox puis vider la combobox

Re,

à job : je n'en suis pas sûr (d'après mon test).
à Jema :
la ligne
ComboBox1 = ""
provoque un changement dans la liste donc la macro est relancée.
La variable booléenne à True permet de ne pas changer le contenu de [D3].
Pour voir le déroulement de l'action, mets un point d'arrêt au début (F9) et fait du pas à pas (F8).
 
Re : Remplir une cellule a partir de combobox puis vider la combobox

Yeahhhhhhh, effectivement. Je crois que je vais devenir acros à ce système pour débuger. 😛

Ca marche super bien et oui, la fonction se réexécute quand on modifie la combobox.

Du coup maintenant, ca marche et j'ai tout compris.

Merci et merci encore. 🙂

Jema
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…