Transformer nom en Fonction VBA??

Résolu
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. 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. 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. 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
    1. 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
      1. 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
        1. 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