Transformer nom en Fonction VBA??

Résolu
ImiS -  
 ImiS -
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
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    1. ImiS
       
      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
  2. ImiS
     
    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
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  4. ImiS
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ImiS
     
    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