Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
814 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA]ComboBox et feuilles Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA]ComboBox et feuilles Excel

n°900152
Loizo
Posté le 16-11-2004 à 21:11:09  profilanswer
 

Je vous transmet une question de ma copine qui galere avec un projet qu'elle doit faire en VBA,elle fait un IUT GEA alors l'info c'est pas son truc donc j'espere que vous pourrez l'aider :)
 
Bonjour,  
 
J'ai un programme en vba à faire, et il faut que je mette entre autres, un combobox.  
 
Voilà le problème:  
J'ai 3 classes de Terminales S. Chaque classe, TS1, TS2 et TS3 est sur une feuille excel, chacune comportant le nom des élèves.  
 
Il faut que sous vba, l'utilisateur choisisse sa classe. J'ai donc créé 3 boutons pour choisir cette classe, ts1, ts2 et ts3. Il doit ensuite cliquer sur Ok pour qu'une liste déroulante des élèves apparaisse.  
Il faut ensuite que selon la classe choisie, la liste des élèves de la classe s'affiche ds le combobox.  
 
J'arrive à afficher une liste d'élèves, mais celle-ci ne change pas en fonction de la classe choisie, c'est toujours la meme. En fait, selon si sous excel on est positionné sur la feuille ts1, ts2 ou ts3, et bien c'est cette liste là qui se sélectionne et impossible de la faire changer selon la classe.  
 
Personnellement, je serais une personne extérieure qui lirait ça, je n'y comprendrais rien !  
 
Si qq1 peut m'aider, ou veut des explications supplémentaires..  
 
Merci bcp !

mood
Publicité
Posté le 16-11-2004 à 21:11:09  profilanswer
 

n°900167
Profil sup​primé
Posté le 16-11-2004 à 21:33:07  answer
 

il faut que tu change la propriete "RowSource" de ta combobox en fonction des boutons cliqués

n°900171
Loizo
Posté le 16-11-2004 à 21:41:10  profilanswer
 

Je sais qu'on peut faire comme ça, mais et d'un on a essayé et ca ne marche pas, et de 2, la prof veut qu'on passe par le code et pas seulement remplir la case rowsource..

n°900176
Profil sup​primé
Posté le 16-11-2004 à 21:48:35  answer
 

:heink:  
 
bien sur que ca marche !
 
Private Sub CommandButton1_Click()
UserForm1.ComboBox1.RowSource = "feuil1!A1:A40"
End Sub
 
Private Sub CommandButton2_Click()
UserForm1.ComboBox1.RowSource = "feuil1!B1:B40"
End Sub

 
quand tu clique sur le bouton 1 c'est la liste A1:A40 qui s'affiche dans le combobox et quand tu clique sur le 2 c'est la liste B1:B40

n°900272
Loizo
Posté le 16-11-2004 à 23:22:46  profilanswer
 

Elle doit etre couché la mais demain elle vient a la maison et on testera. Merci :)
si ca marche pas on viendra vous voir :)
 
Le truc par contre c'est qu'a priori tu utilises la meme feuille, alors qu'ici, elle a 3 feuilles, une pour chaque classe (car apres elle stocke d'autres trucs), ca change rien ? VBA va de lui meme aller voir dans la feuille2 si on lui dit ?

n°900547
Profil sup​primé
Posté le 17-11-2004 à 12:24:20  answer
 

oui,tu n'auras qu'a mettre "feuil2!A1:A40" ou "feuil3!A1:A72" ou meme "TOTO!A1:A25" si ta feuille ou se trouve les noms des eleves s'appelle TOTO

n°900641
Loizo
Posté le 17-11-2004 à 14:20:21  profilanswer
 

ok niquel, ben on va tester ca merci :)
 
Et est ce qu'on peut faire un truc du style :
Une boucle qui ecrira dans la combobox ligne a ligne jusqu'a ce que la case excel soit vide parce qu'en faisant comme tu fais si je rajoute un nom a ma feuille il apparaitra pas dans ma combobox...
 
Faudrai que je trouve un bon site sur excel et vba, parce qu'apres vais devoir editer ma feuille excel pour rajouter des notes et tout :/

n°900843
Profil sup​primé
Posté le 17-11-2004 à 16:32:06  answer
 

si ta combobox est dans une form (userform1), si elle est dans une feuille remplace "UserForm1" par "ThisWorkbook.Sheets("feuil1" )"
 

' ***** on vide la liste de la combobox1
UserForm1.ComboBox1.Clear
 
' ***** début de la boucle
Do
 
' ******* on incremente la ligne L
L = L + 1
 
' ******* on lit la premiere ligne L
LECTURE = ThisWorkbook.Sheets("feuil1" ).Cells(L, 1)
 
' ******* si la cellule ligne L , colonne 1 est vide on sort
If LECTURE = "" Then Exit Do
 
' ******* on ajoute le contenu de la cellule dans la liste
UserForm1.ComboBox1.AddItem LECTURE
 
Loop


Message édité par Profil supprimé le 17-11-2004 à 16:34:45
n°900873
Loizo
Posté le 17-11-2004 à 17:05:26  profilanswer
 

Merci bcp !!!!
On va tester ca ce soir, si on a d'autres problemes, on passera, merci :)

n°900940
Loizo
Posté le 17-11-2004 à 17:50:20  profilanswer
 

Une petite question en passant,  
UserForm1.ComboBox1.Clear  
renvoi toujours une erreur "Erreur non répértoriée", ca veut dire quoi ? A priori on ne peut pas vider la liste...
 
Edit :  
Voici donc le code qu'on obtient :

Code :
  1. If Not IsEmpty(lst3) Then lst3.Clear
  2. Dim i As Integer
  3. i = 1
  4. Do
  5. i = i + 1
  6. LECTURE = ThisWorkbook.Sheets("fts1" ).Cells(i, 1)
  7. If LECTURE = "" Then Exit Do
  8. TSnote.lst3.AddItem LECTURE


 
On a une "erreur non repertoriée" sur lst3.Clear !! Pk le clear ne marche il pas ?
Merci :)


Message édité par Loizo le 17-11-2004 à 18:06:08
mood
Publicité
Posté le 17-11-2004 à 17:50:20  profilanswer
 

n°901056
Profil sup​primé
Posté le 17-11-2004 à 20:12:23  answer
 

Effectivement, il vaut mieux mettre
 
If Not IsEmpty(lst3) Then lst3.RowSource=""
 
Aparement, si on defini une RowSource on ne peut plus faire un Clear mais un RowSource=""

n°901076
Loizo
Posté le 17-11-2004 à 20:39:16  profilanswer
 

C'est ca !!
Merci bcp tu nous sauves la :p
 
Merci encore, t'as vraiment assuré depuis le debut :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA]ComboBox et feuilles Excel

 

Sujets relatifs
[VBA] concaténer des tableauxapprendre VBA
transfert ftp vbaSQL/VBA : probleme avec LIKE et "*" [RESOLU]
[VBA] Manipulation de fichiers image[VB] Selectionner une cellule sous excel
utilisation fonction perso sous excel[VBA] Outlook, Comment attibuer une règle à un bouton
[VBA] Macro "*.mso"[VBA] exporter des données excel dans outlook
Plus de sujets relatifs à : [VBA]ComboBox et feuilles Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR