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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Remplir combobox avec nom des feuilles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Remplir combobox avec nom des feuilles

n°1320242
Madilina
pouetteuh
Posté le 07-03-2006 à 15:14:47  profilanswer
 

Me voilà de retour pour vous jouer un mauvais tour!
 
Je veux faire apparaître un UserForm dans lequel je veux une liste déroulante qui contiendra le nom des feuilles de mon classeur...
Alors me voilà lancée, j'ai tenté ca pour remplir le combo (on verra l'affichage du User plus tard lol):
 

Code :
  1. For F=1 to Workbooks("Members" ).worksheets.count
  2.     CmbFeuille.additem sheets(F).name
  3. Next F


 
Je vous permets totalement de rigoler... VBA commence à me gaver alors je ne suis plus capable de faire quoi que ce soit d'intelligent...
Merci pour votre soutien :cry:

mood
Publicité
Posté le 07-03-2006 à 15:14:47  profilanswer
 

n°1320283
Lord Nelso​n
Posté le 07-03-2006 à 16:05:55  profilanswer
 

Salut,
 
Tu y es presque !
Essaie ceci :


For Each F In Workbooks("Members" )
    CmbFeuille.additem sheets(F).name
Next F  


En effet, dans ta boucle For F, tu donnes à F une valeur numérique. Avec For Each,
F devient un bref instant une des feuilles du classeur et porte son nom.
 
A+
Horatio
 

n°1320295
Madilina
pouetteuh
Posté le 07-03-2006 à 16:20:35  profilanswer
 

J'avais déja essayé le for each, et je ne suis jamais arrivée à le faire marcher. J'ai réssayé et la il me donne cette erreur:
"propriété ou méthode non gérée par cet objet"

n°1320296
porcinet82
Posté le 07-03-2006 à 16:23:10  profilanswer
 

Salut,
 
Je me permet une autre syntaxe plus proche de celle de Madilina , en mettant :
For F=1 to Workbooks("Members" ).sheets.count    CmbFeuille.additem sheets(F).name
Next F  
 
@+

n°1320297
Madilina
pouetteuh
Posté le 07-03-2006 à 16:28:26  profilanswer
 

Tellement proche que c'est la meme! merci quand meme porcinet :)

n°1320326
tegu
Posté le 07-03-2006 à 16:55:17  profilanswer
 

Lord Nelson était distrait et/ou fatigué en répondant :)
Il fallait lire

Dim F As Worksheet
For Each F In Workbooks("Members" ).Worksheets
    CmbFeuille.additem F.name
Next F  

Et comme moi aussi je suis fatigué, je ne suis pas non plus à l'abri d'avoir glissé une erreur...


Message édité par tegu le 07-03-2006 à 16:58:21
n°1320328
Madilina
pouetteuh
Posté le 07-03-2006 à 16:59:50  profilanswer
 

L'indice n'appartient pas à la sélection.... J'abandonne pour aujourd'hui je prends mes cours avec moi pour demain...
Bonne soirée à tous et merci de m'avoir aidée... A demain sans doute!

n°1320355
tegu
Posté le 07-03-2006 à 17:17:32  profilanswer
 

Bon il ne trouve pas Members et comme je le craignais, j'ai oublié un détail :)
Il faut écrire Workbooks("Members.xls" ).Worksheets
Ça devrait marcher maintenant.


Message édité par tegu le 07-03-2006 à 17:17:53
n°1320358
Lord Nelso​n
Posté le 07-03-2006 à 17:18:35  profilanswer
 

Oui Tegu, tu as raison !
 
Mais il y avait encore une autre boulette :


Dim F As Worksheet
For Each F In Workbooks("Members.xls" ).Worksheets
    CmbFeuille.AddItem F.Name
Next F


Préciser .xls pour appeler le classeur Members.
 
A+
Horatio
 

n°1320370
Lord Nelso​n
Posté le 07-03-2006 à 17:24:20  profilanswer
 

Moralité :
 
Toujours tester avant de proposer une solution même quand la réponse paraît évidente.
Tester, tester, tester...
A+
Horatio

mood
Publicité
Posté le 07-03-2006 à 17:24:20  profilanswer
 

n°1320724
tegu
Posté le 08-03-2006 à 09:39:57  profilanswer
 

Je dirais même plus : tester dans les conditions exactes de l'exemple.
Car j'avais testé, non pas avec Workbooks("Members" ).Worksheets (qui m'aurait explosé à la figure), mais avec ActiveWorkbook.Worksheets
 
Que cela serve de leçon aux débutants ;)


Message édité par tegu le 08-03-2006 à 09:40:41
n°1320778
Madilina
pouetteuh
Posté le 08-03-2006 à 10:52:09  profilanswer
 

Ah ah je n'ai plus de bug mais ca ne marche pas quand meme (ca serait trop beau !)
je suis ouverte à toute propositions toujours!


Message édité par Madilina le 08-03-2006 à 14:05:37
n°1321730
porcinet82
Posté le 09-03-2006 à 12:53:41  profilanswer
 

Salut Madilina,
 
Pourquoi  n'utilises-tu pas simplement un code du genre :

Code :
  1. Private Sub ComboBox1_DropButtonClick()
  2. ComboBox1.Clear
  3. For i = 1 To Sheets.Count
  4.     ComboBox1.AddItem ("feuil" & i)
  5. Next i
  6. End Sub


 
J'avais fait ce code il y a quelques temps pour quelqu'un qui voulais mettre dans une combo placée sur une feuille, l'ensemble des feuilles du classeur actif.
 
@+

n°1321757
tegu
Posté le 09-03-2006 à 13:25:18  profilanswer
 

>Madilina: Et en gros tu veux qu'on diagnostique le problème sans connaître les symptômes.
« ...ca ne marche pas... » est une phrase à proscrire lorsqu'on met un message pour avoir de l'aide. On se doute bien que si tu es encore là c'est que ça ne marche pas.
Mais si tu pouvais nous donner un message d'erreur, préciser le contexte par rapport à tous les conseils qu'on t'a déjà donné, ça pourrait servir.
Les exemples qu'on t'a donné fonctionnent. Donne nous des détails, affiche ici le code que tu utilises...
 
>porcinet82: ça serait sympa de lire le topic avant de répondre, tu rabaches ce qu'on a déjà dit sur la forme (une boucle + syntaxe .additem) sauf qu'en plus tu introduis une grosse erreur, à savoir qu'une feuille Excel ne se préfixe pas forcément par « feuil »

n°1321777
porcinet82
Posté le 09-03-2006 à 13:42:50  profilanswer
 

Ouai c'est sur pour le préfixe, mais si tu lis ce que j'ai mit au dessus, tu verras que c'est code que j'avais deja ecris et que je ne faisait que proposer, et qu'il fallait le modifier.
Donc avec un peu de jugeote, tu modifies la ligne dans la boucle et sa fonctionne :
 

Code :
  1. Private Sub ComboBox1_DropButtonClick()
  2. ComboBox1.Clear
  3. For i = 1 To Sheets.Count
  4.     ComboBox1.AddItem Sheets(i).Name
  5. Next i
  6. End Sub


 
@+

n°1321831
Madilina
pouetteuh
Posté le 09-03-2006 à 14:28:08  profilanswer
 

Merci mais j'ai trouvé un échappatoire à mon problème, j'ai mis des titres à chaque feuille (comme ça en plus ca améliore la mis en page) et je rempli le combobox avec les données de la range qui correspond à la feuille...
Par contre j'ai pas du bien le faire parce qu'à chaque fois que je lance mon user ca rajoute des noms dans le combo à ceux précédemment ajoutés!
Je pense que ton code porcinet va m'aider pour le ComboBox1.clear :) Je vais essayer tout de suite merci


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

  Remplir combobox avec nom des feuilles

 

Sujets relatifs
comboboxRemplir une Gridview avec un web service
remplir des saisies clavier automatiquement ?Problème de n° d'index des feuilles Excel créées en VBA
Programmation VBA comboboxRemplir ComboBox a partir dune Base de Données (WinForms)
VBA copier coller pusieurs feuilles[ACCESS - VBA] - Remplir une table avec un formulaire VBA
afficher la 2eme colone d'un combobox = plantage 
Plus de sujets relatifs à : Remplir combobox avec nom des feuilles


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)