Transformer nom en Fonction VBA??

Résolu/Fermé
ImiS - 21 nov. 2008 à 09:39
 ImiS - 21 nov. 2008 à 16:15
Bonjour,

Je voudrais juste savoir comment transformer un "nom" crée de la manière suivante: "Insertion - Nom- Définir" en fonction pour un code VBA.
Pour être plus clair j'ai crée des noms contenant des listes mais quand j'actives ce code:

Private Sub ComboBox1_Change()
Dim nbre As Byte, cptr As Byte, choix As Byte, col As Byte
Dim zone As String

Me.ComboBox1.Enabled = False
Me.ComboBox2.Enabled = True

choix = Me.ComboBox1.ListIndex + 1

zone = Choose(choix, "CVC", "plomberie", "courantft", "courantf", "SI", "levage", "PBA", "SO", "facade", "toiture", "VRD", "H", "D")

nbre = Application.CountA(Range(zone)) - 1
col = Choose(choix, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
For cptr = 0 To nbre
Me.ComboBox2.AddItem Sheets("feuil6").Cells(cptr + 13, col)
Next
End Sub

Il m'inscrit "CVC" au lieu de choisir la liste contenue dans le nom "CVC".

Merci d'avance

5 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
21 nov. 2008 à 11:49
Je voudrais juste savoir comment transformer un "nom" crée de la manière suivante: "Insertion - Nom- Définir" en fonction pour un code VBA.

tu te places au début de ta liste.

selection.currentregion.rows.select ' selectionne la zone en cours

selection.name="MaZone" ' je nomme la plage "MaZone"

et je la selectionne avec range(MaZone).select

aussi simple que cela.

n'hésite pas à me dire si cela te convient ou non!
0
Bonjour à vous Bidouilleur_R,

Nous sommes novices (Maxence et moi) donc on comprends approximativement les ligne ci dessus mais ou les intégrés dans le code????
0
Oui j'ai oublié de préciser (pardons on ^^) le code entier est celui ci:

Private Sub UserForm_Initialize()
Dim nbre As Byte, cptr As Byte
Me.ComboBox2.Enabled = False
nbre = Application.CountA(Range("element")) - 1
For cptr = 0 To nbre
Me.ComboBox1.AddItem Sheets("feuil6").Cells(7, cptr + 14)
Next

cette partie fonctionne parfaitement. ensuite là où ça se gâte:


Private Sub ComboBox1_Change()
Dim nbre As Byte, cptr As Byte, choix As Byte, col As Byte
Dim zone As String

Me.ComboBox1.Enabled = False
Me.ComboBox2.Enabled = True

choix = Me.ComboBox1.ListIndex + 1
zone = Choose(choix, "CVC", "plomberie", "courantft", "courantf", "SI", "levage", "PBA", "SO", "facade", "toiture", "VRD", "H", "D")
nbre = Application.CountA(Range(zone)) - 1
col = Choose(choix, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)

For cptr = 0 To nbre
Me.ComboBox2.AddItem Cells(cptr + 13, col)
Next
End Sub

Normalement le code devrait fonctioner ainsi >choix combobox1>envoie liste correspondante dans combobox2
le seul prob c'est que le renvoi fonctionne pas y'a que du vide:(
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
21 nov. 2008 à 13:28
j'ai modifié ton code mais comme je n'ai pas toute les donées... difficile.

1 ) la fonction CountA ne fonctionne pas chez moi (excel 2003)



Private Sub UserForm_Initialize()
Dim nbre As Byte, cptr As Byte
Me.ComboBox2.Enabled = False
'nbre = Application.CountA(Range("element")) - 1

' je modifie là
Sheets("feuil6").Select

nbre = Sheets("Feuil6").Cells(65536, 1).End(xlUp).Row - 2 ' " - 2 "si la liste commence à A3 avec le titre en A2
'


For cptr = 0 To nbre
Me.ComboBox1.AddItem Sheets("feuil6").Cells(7, cptr + 14)
Next
End Sub
'cette partie fonctionne parfaitement. ensuite là où ça se gâte:


Private Sub ComboBox1_Change()
Dim nbre As Byte, cptr As Byte, choix As Byte, col As Byte
Dim zone As String

Me.ComboBox1.Enabled = False
Me.ComboBox2.Enabled = True

choix = Me.ComboBox1.ListIndex + 1
zone = Choose(choix, "CVC", "plomberie", "courantft", "courantf", "SI", "levage", "PBA", "SO", "facade", "toiture", "VRD", "H", "D")
' je modifie là

nbre = Range(zone).Count
'nbre = Application.CountA(Range(zone)) - 1
' je finis


col = Choose(choix, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)

For cptr = 0 To nbre
Me.ComboBox2.AddItem Cells(cptr + 13, col)
Next
End Sub

' remarque cptr est une varible byte un integer serait mieux pour faire référence à une liste.
' je regarde encore mais je pense qu'il s'agit d'un débordement de plage.
' en fait ton combobox1 et 2 fonctionnent bien mais je pense qu'il pointe au delà de ta liste
'

je te conseille la chose suivante force la variables col à 5 et regarde si le résultat convient
tu devrais lire toute la colone 5

A+
0
Toujour aucune amélioration, je suis dsl mais j'aimerais bien vous envoyer mon fichier mais j'ai des protections admin et cijoint ne fonctionne pas et nous disposons que de ce poste là.

Si y'a un autre moyen je suis preneur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bon nous sommes dsl pour avoir posté deux sujets similaires mais c'est de la faute à Maxence enfin bref, le problème est résolu voir sujet : "Liste choix pas pris en compte par macro".

Les remerciements sont aussi inscrient sur le sujet mais on tiens à les réitérer donc voilà:

nous remercions Bidouilleur_R, Lermitte222 pour leurs aide et michel_m pour son aide précieuse et oui il est à l'origine du code ^^.

Merci à vous qui viennent porter secour à des novices comme nous.

Bonne journée
0