Interopérabilité comboBox / feuille excel…

  • Initiateur de la discussion albert
  • Date de début
A

albert

Guest
Bonjour à tous,

Sur un UserForm, je pose une zone de liste modifiable.
Dans les propriétés ComboBox1, en face de RowSource, j’inscris A1 :A3 …
La liste déroulante reproduit les chiffres des 3 cellules correspondantes.

- Dans la fenêtre du Combobox1, j’inscris un autre chiffre et j’exécute la macro… le nouveau chiffre n’apparaît pas dans la feuille de calcul..

- J’écris un code :
Private Sub ComboBox1_Change()
Range("A1").End(xlDown).Select
End Sub

Râté !!!

Voilà plusieurs jours que je torture Userform dans tous les sens… rien n’y fait : impossible d’écrire dans le combo un chiffre pour le retrouver à la suite de la liste située sur la feuille excel…


Existe-t-il une astuce pour ajouter un chiffre à la suite ???

(d'avance merci)

albert
 
E

eric

Guest
Il y a surement plus simple, mais ça fonctionne.

il faut tout d'abord déterminer la source de données du combobox1, variable, puisque tu peux ajouter des données

Private Sub UserForm_Initialize()
ComboBox1.RowSource = Range("a1", Range("a1").End(xlDown)).Address

End Sub
___________________________________________________

Lorsque l'on clique sur le bouton1, on effectue une recherche dans la feuille pour voir si ton entrée existe déjà.
Si elle n'existe pas ("is nothing") alors se placer à la dernière ligne vide et ajouter la valeur du combobox1.
Enfin, on réactualise ton combobox avec la nouvelle entrée ("call userform_initialize").


Private Sub CommandButton1_Click()

If Cells.Find(What:=ComboBox1.Value, _
After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False) Is Nothing Then Range("a1").End(xlDown).Offset(1, 0).Value = _
ComboBox1.Value

Call UserForm_Initialize

end sub


Bonne journée
 
A

albert

Guest
merci eric de proposer un code plus simple
mais je n'ai pas de bouton pour
CommandButton1_Click()
mais seulement 1 ComboBox
... et le code ne marche pas, même en remplaçant l'un par l'autre



... j'ai dû faire unschmilblick quelque part :

- j'ai effacé A1:A6 dans RowSource
- j'ai mis le code : ComboBox1.RowSource = Range("a1", Range("a1").End(xlDown)).Address

derrière la grille UserForm "click" remplacé par "initialize"
 
A

albert

Guest
bonjour éric,

maintenant j'ai compris comment faire

ça marche horizontalement et verticalement (à condition de remplir les deux premières cases manuellement)


merci pour cette base de travail

albert
 

Pièces jointes

  • COMBO.zip
    12.3 KB · Affichages: 40
  • COMBO.zip
    12.3 KB · Affichages: 44
  • COMBO.zip
    12.3 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
314 015
Messages
2 104 560
Membres
109 080
dernier inscrit
Merilien