Futura Sciences
Image de la rubrique en cours

Forum FS Generation

Précédent   Vous êtes ici : Forum FS Generation » Informatique » Logiciel - Software - Open Source

Découvrir d'autres sujets sur ces thèmes : , , ,


Réponse
Vieux 13/05/2008, 16h05   Sujet [EXCEL VBA] => Lister des combobox et écrire leur contenu - Message #1
catsur
 
Date d'inscription: mai 2008
Âge: 21
Messages: 4
[EXCEL VBA] => Lister des combobox et écrire leur contenu
Bonjour,

Je voudrais faire varier le numéro d'une combobox, le problème c'est que je n'arrive pas à mettre, je pense, une syntaxe correcte.

Voici mon code :
______________________________ __
dim num_combobox as variant

num_combobox = 2


'C'est ici que je n'arrive pas à faire varier ma combobox. La syntaxe est fausse, et là est mon problème

cells (1,1) = ComboBox & num_combobox.Value

______________________________ __

Je débute en VB au fait... J'ai cherché mais pas trouvé de réponse...

Voilà.

Je veux faire un tel code car j'ai 40 combobox à aller lire, et à chaque fois j'ai les mêmes opérations (longues!), donc je ne vais pas aller tout copier-coller et changer les variables 40 fois...

Merci de votre aide!
catsur est déconnecté   Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

   
Vieux 16/05/2008, 12h58   Sujet [EXCEL VBA] => Lister des combobox et écrire leur contenu - Message #2
EspritTordu
 
Date d'inscription: janvier 2005
Messages: 1 013
Re : [EXCEL VBA] => Lister des combobox et écrire leur contenu
Vous avez beaucoup de combobox, et souhaitez les contrôler par un index numérique pour éviter de répéter le code une multitude de fois, n'est-ce pas?

Quel Excel avez-vous? si ce n'est pas Excel d'Office de Vista alors Le VBA est une version dérivée de Visual Basic 6.0.
Dans ce dernier les contrôles peuvent être regroupés en un "groupe de contrôle" permettant d'identifier alors ces derniers facilement par un index numérique: en clair, vous créez deux combos, avec le même nom, et VB vous demande si vous voulez créez avec ceux-ci un groupe, portant le nom commun du combo, mais où les combos sont identifiés séparement par le nom du groupe dont il font parti plus un nombre d'index. (dans la mesure qu'il est impossible d'avoir des contrôles, quels qui soient, ayant le même nom!)
Après il ne vous reste alors plus qu'à faire varier l'index dans le code pour accéder en une boucle for simple aux contrôles groupés:
Code:
'J'ai créé deux combos, j'accède dans ce code à leur propriété text par exemple dim i as long for i=1 to 2 MonCombo(i).text="Combo " & i next i
Le hic, c'est que dans VBA, cette fonction pratique n'a pas été transposée() : il n'est pas possible, à ma connaissance, de faire des groupes de contrôles dans Excel VBA 6.0 !!!


Grouper les contrôles est une chose parfois qui devient brouillon : on ne sait plus à quel groupe le contrôle que l'on a dessiné appartient, surtout si on a plusieurs groupes.

D'autres solutions existent. En voilà deux (qu'on peut d'ailleurs être combiner pour avoir un code plus confortable!).
Vous pouvez créer une sub, ou une fonction, dans laquelle vous faîtes exécuter votre opération, en généralisant, le combo et les variables nécessaires. Alors, il ne vous reste plus qu'a appeler cette fonction/sub autant de fois qu'il y a de combo et en adaptant les variables à chaque fois.

Code:
Sub MonOperation (Variable1 as string, Variable2 as long) '.... lignes d'opérations end sub sub load () 'Par exemple Moncombo1.text=MonOperation ("Rouge", 10) Moncombo2.text=MonOperation ("Vert", 30) '... on continue end sub

Une autre possibilité, c'est de demander de lister tous les contrôles dessinés sur la feuille UserForm et de distinguer ceux que vous avez astucieusement nommés (cela revient implicitement à créer un groupe de contrôle en fait):
Code:
'J'ai créé plusieurs combos sur une feuille type Windows nommée UserForm1, dont les noms sont composés ainsi Moncombo01, Moncombo02... Dim obj as object, i as long For each Obj in UserForm1.controls if Obj.name=lcase(left(obj.name, len(obj.name)-2))="moncombo" then obj.text="MonCombo" next
C'est une méthode parmi d'autres, plus ou moins discutable d'ailleurs, la propriété left permettant d'extraire de la chaîne de caractères du nom de contrôle, la chaîne "moncombo" qu'on utilise pour identifier les combos souhaités ; cela suppose qu'il n'y a pas de combos que l'on ne veut pas considérer ayant dans leur nom la chaîne "moncombo". La fonction lcase() est une précaution, pour que dans l'égalité on ne considère pas la casse(minuscules/majuscules) des chaînes de caractères mises en jeu ; cette dernière convertit effectivement toutes chaînes en minuscules (Ucase convertit tout en majuscules)

J'espère vous faire avancer!
EspritTordu est déconnecté   Réponse avec citation
Vieux 19/05/2008, 10h28   Sujet [EXCEL VBA] => Lister des combobox et écrire leur contenu - Message #3
catsur
 
Date d'inscription: mai 2008
Âge: 21
Messages: 4
Re : [EXCEL VBA] => Lister des combobox et écrire leur contenu
Oui vous m'avez bien fait avancer, et vous m'avez même appris des choses dont je n'ai pas forcement besoin!

Merci beaucoup pour votre réponse si complète (ce qui est rare!)

Merci!
catsur est déconnecté   Réponse avec citation
Vieux 20/05/2008, 10h13   Sujet [EXCEL VBA] => Lister des combobox et écrire leur contenu - Message #4
EspritTordu
 
Date d'inscription: janvier 2005
Messages: 1 013
Re : [EXCEL VBA] => Lister des combobox et écrire leur contenu
J'aimerais revenir sur un point, une erreur : il ne s'agit pas d'une sub MonOperation, mais nécessairement d'une fonction (function); outre une différence de nomination pour une chose assez similaire, c'est qu'avec une sub vous ne pouvez pas extraire un résultat dans une égalité tel que MonCombo1.text=Monoperation ("Rouge", 10). Une sub vous permet seulement d'écrire Monoperation ("Rouge", 10) et d'éxécuter les opérations qu'elle contient en fonction des variables indiquées, rouge et 10 en l'occurence.

Dernière modification par EspritTordu 20/05/2008 à 10h17.
EspritTordu est déconnecté   Réponse avec citation
Bienvenue
Si ceci est votre première visite, vous devez vous inscrire avant de pouvoir envoyer des messages. En étant inscrit vous pourrez poster votre question, participer aux débats, joindre vos images... alors n'attendez-plus, cela vous prendra 1 minute !

Pour commencer à lire les messages, depuis la page d'accueil des forums, sélectionnez le forum qui vous tente et partez ensuite à sa découverte...

Publicité

A voir aussi
problème utilisation VBA sur excel 2007 (Forum Logiciel - Software - Open Source)
Contrôles et VBA en Excel (Forum Logiciel - Software - Open Source)
Ecrire dans un table Access avec VBA (Forum Logiciel - Software - Open Source)
Publipostage en vba de excel vers word (Forum Logiciel - Software - Open Source)
Impression excel / vba (Forum Logiciel - Software - Open Source)










A voir aussi (Futura Sciences n'est pas responsable du contenu de ces publicités)
Réponse


Dossiers à découvrir

Outils
Modes d'affichage

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Les dernières actualités
24/07 14:25 - Knol, l'encyclopédie en ligne de Google, est lancée
24/07 11:37 - Bientôt la fin de la crise de l'oxygène solaire ?
24/07 09:31 - Un moteur actionné par la lumière
23/07 17:28 - Le volcanisme à l'origine de l'extinction marine du Crétacé supérieur ?
23/07 14:54 - Les mouches seraient sensibles au champ magnétique
23/07 11:31 - Faut-il jeter de la chaux dans les océans pour refroidir la planète ?
23/07 09:32 - Un pseudo GPS pour les futurs explorateurs lunaires

Fuseau horaire GMT +2. Il est actuellement 16h16.

Propulsé par vBulletin
Copyright © 2000 - 2008, Jelsoft Enterprises Ltd. Tous droits réservés.
Traduction par l'association vBulletin francophone