Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/09/2011, 11h08   #1
Membre confirmé
 
Avatar de bosk1000
 
Inscription : juin 2008
Messages : 526
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 526
Points : 257
Points : 257
Par défaut nommer des combobox en série

bonjour à tous

j'ai 40 combobox à nommer
les 10 première serais cmb_nom01, jusqu'à cmb_nom10
ensuite cmb_type01 à cmb_type10
cmb_produit01 à cmb_produit10
cmb_marque01 à cmb_marque10

existe t il un moyen de les nommer rapidement et facilement ou dois-je les nommer une par une ?
bosk1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h19   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,

A part le copier coller des noms (en modifiant le numero final), je ne vois pas
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h35   #3
Membre confirmé
 
Avatar de bosk1000
 
Inscription : juin 2008
Messages : 526
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 526
Points : 257
Points : 257
bon tans pis
merci
bosk1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h36   #4
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Moi j'ai une idée tordue :

Instancier un objet combobox et essayer de l'affecter à tous les objets de ton userform contenant les combobox. Si ça plante, suivant et si ça marche c'est que t'es bien tombé sur une combobox et tu peux la renommer comme tu veux.

Mais je vois au moins un problème dans l'histoire c'est que tu ne sais pas comment ta collection d'objets va être parcourure. Par contre si tes combobox s'appellent combobox1, combobox2...etc alors tu peux t'en sortir.

Sous réserve que l'on puisse faire un Resume sur un label:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
On Error Goto lErrorHandler
 
Dim myControl As MSForms.Control, myCombobox As MSForms.ComboBox
 
For Each myControl In Usf.Controls
 
    Set myCombobox = myControl
 
    [...]   'Renomme ta combobox en fonction de son nom de départ
 
    lNextControl:
 
Next myControl
 
Exit Sub
 
lErrorHandler:
 
Resume lNextControl
 
End Sub

[EDIT] Il y a même plus simple sans passer par mon test tordu d'affectation d'objet!

Code :
If TypeName(myControl) = "ComboBox" Then [...]
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 14h04   #5
Membre confirmé
 
Avatar de bosk1000
 
Inscription : juin 2008
Messages : 526
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 526
Points : 257
Points : 257
j'avoue ne pas comprendre ce que je dois faire avec ton code
je le place dans le formulaire ? ou sur un programme à part ?
quelle événementiel pour le lancer
bosk1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 14h43   #6
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
De préférence dans le userform concerné histoire que les objets concernés soient accessibles (je ne sais pas quelle est leur portée mais comme ça, on évite les problèmes).
Sinon pour rendre ça plus général, tu peux toujours passer la collection de contrôles en arguments à la procédure que tu mets dans un module à part.

A moins que tu ne doives renommer fréquemment tes combobox, pas besoin de lancer sur évènement. Juste une procédure que tu lances à la main pour t'éviter de les renommer une par une.

Pour que ce soit plus clair:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub renommerCbx()
 
Dim myControl As MSForms.Control
 
For Each myControl In usf.Controls
 
    If TypeName(myControl) = "ComboBox" Then
 
        Select Case CInt(Mid(Control.Name, 9))
 
            Case Is <= 10
                myControl.Name = ...    'Faut utiliser une variable que tu incrémentes à chaque passage dans ce Case
 
            Case Is > 10 And Is <= 20 
                [...]
 
             [...]
 
        End Select
 
    End If
 
Next myControl
 
End Sub

C'est plus clair comme ça? C'est pas forcément plus rapide que de renommer à la main mais au moins c'est plus fun
Et puis si un jour c'est pas 40 mais 200 combobox à renommer, ça gagne en intérêt!
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 16h21   #7
Membre confirmé
 
Avatar de bosk1000
 
Inscription : juin 2008
Messages : 526
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 526
Points : 257
Points : 257
ok
merci je comprend mieux
bosk1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h44.


 
 
 
 
Partenaires

Hébergement Web