Problème de compilation et de création de liste

Poussin

XLDnaute Occasionnel
Bonjour à tous. Je voudrais créer une interface qui me permettrait, à partir d'une liste déroulante, de choisir le nom de famille d'une personne. Chaque nom de famille est lié à un métier différent (il existe seulement 3 métiers pour une centaine de famille).
Ainsi dans le code de mon userform pour la partie nom j'ai écris le code suivant malheureusement il me trouve une erreur de compilation : séparateur d eliste ou ) attendu pour le NBVAL. Voici le code de cette partie :

Code:
Sub UserForm_Initialize()
'Initialisation de l'User Form Societe

'Index des valeurs
Dim I
Dim J As Integer
    <couleur nom="rouge">J = NBVAL(E2:E200</couleur>)
     
    For I = 2 To J
        nom.AddItem Sheets("Feuil1").Cells(I, 5)
    Next
    
End Sub

Pour ce qui concerne la partie métier je voudrais là aussi créer une liste déroulante par contre vu qu'il n'y a que 3 métiers il va y avoir des redondances c'est pourquoi je voudrais connaître la solution pour supprimer les doublons. Je vous remercie pour votre aide comme d'habitude et vous souhaite une excellente journée.
 

JNP

XLDnaute Barbatruc
Re : Problème de compilation et de création de liste

Bonjour Poussin :),
2 syntaxes possibles :
Code:
J = Evaluate("CountA(E2:E200)")
ou
Code:
J = Application.WorksheetFunction.CountA(Range("E2:E200"))
Bonne soirée :cool:
 

Poussin

XLDnaute Occasionnel
Re: Re : Problème de compilation et de création de liste

Merci beaucoup pour ta réponse. Quelle est la différence entre les 2 solutions ? L'un d'entre elles est-elle meilleure ?

De plus maintenant je dois faire la même chose pour les métiers mais je me retrouve avec les métiers qui se répètent je voudrais donc éliminer chaque doublon dans la liste pour avoir comme choix possible seulement les 3 métiers différents.

Je te remercie par avance pour ta réponse encore merci
 

JNP

XLDnaute Barbatruc
Re : Problème de compilation et de création de liste

Re :),
La deuxième est peut-être un poil plus rapide, mais dans ton cas, ça ne change pas grand chose :rolleyes:...
Sinon, tu pouvais aussi obtenir la dernière ligne avec
Code:
Range("E35000").End(xlUp).Row
Pour les doublons, voici un fil où j'avais récupéré le code de JB, très efficace et en plus trié :p...
Bon courage :cool:
 

Poussin

XLDnaute Occasionnel
Merci pour ta réponse détaillée, c'est super !!!

Alors j'ai essayé le code de JB mais il me met une erreur de value.

Code:
For I = 2 To L
        nomPanel.AddItem Sheets("Feuil1").Cells(I, 2)

    Next
    Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range([b2], [B65000].End(xlUp))
    MonDico.Item(c.Value) = c.Value
  Next c
  temp = MonDico.items
  '--
  Call tri(temp, LBound(temp), UBound(temp))
  Me.nomPanel = temp
  End Sub
  
  Sub tri(a, gauc, droi)
  ref = a((gauc + droi) \ 2)
  g = gauc: d = droi
  Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call tri(a, g, droi)
  If gauc < d Then Call tri(a, gauc, d)

End Sub

Je ne comprends pas trop comment ça marche. Il crée une sorte de dictionnaire afin d epouvoir comparer chaque argument à l'intérieur pour ensuite supprimer les doublons ?
 

Poussin

XLDnaute Occasionnel
Re: Re : Problème de compilation et de création de liste

Voici mon fichier test si jamais tu mets en commentaire la partie de JP tu verras que les métiers sont redondants dans la liste et avec le fichier de JP cela ne fonctionne plus merci pour ton aide.

Vraiment merci pour tout je commence à comprendre les macros :)
 

Pièces jointes

  • test.xlsm
    23.6 KB · Affichages: 50
  • test.xlsm
    23.6 KB · Affichages: 55
  • test.xlsm
    23.6 KB · Affichages: 52

JNP

XLDnaute Barbatruc
Re : Re: Re : Problème de compilation et de création de liste

Re :),
Vraiment merci pour tout je commence à comprendre les macros :)
Ne le prends pas mal, mais c'est un tout petit commencement :rolleyes:...
Ton fichier en retour nettoyé (et oui, on utilise une ou l'autre des méthodes, pas les 2 en même temps :p...). Attention, Dim TextBox As Double : totalement interdit vu que tu as un contrôle TextBox1 :mad:...
Et tu avais perdu le .List de Me.nomPanel.List = temp :(...
Bon courage :cool:
 

Pièces jointes

  • Combos Dicos.xlsm
    23.9 KB · Affichages: 53

Poussin

XLDnaute Occasionnel
Re: Re : Re: Re : Problème de compilation et de création de liste

Alors je passe en mode tableau et je dois retrouver la valeur de la colonne 3 avec la fonction evaluate de ma macro.

Le problème est que je n'arrive pas à bien définir ma variable appelée tout simplement variable.

Je me suis pourtant aidé d'une macro existante -> fichier image.

Je joins mon fichier merci encore pour ton aide :-(
 

Pièces jointes

  • test.xlsm
    29.2 KB · Affichages: 47
  • test.xlsm
    29.2 KB · Affichages: 46
  • test.xlsm
    29.2 KB · Affichages: 45
  • plage39.png
    plage39.png
    27.9 KB · Affichages: 26

JNP

XLDnaute Barbatruc
Re : Problème de compilation et de création de liste

Re :),
Je me demande à quoi servait de supprimer les doublons pour revenir en arrière :mad:...
Je déteste bosser pour rien :eek:...
Arrête de raisonner en formule (uniquement quand c'est plus intérressant) et utilise réellement VBA :rolleyes:
Code:
variable = Range("Test[Colonne2]")(Range("Test[Colonne1]").Find(ComboBox1, lookat:=xlWhole).Row)
Bonne soirée :cool:
 

Poussin

XLDnaute Occasionnel
Non non la partie doublons va servir aussi. Je t'explique : après avoir sélectionné le monsieur je pourrai ainsi comparé en fonction du secteur. L'objectif est de comparer les résultats d'un vendeur en général avec ceux d'un échantillon que je choisirais.

Par exemple comparer les résultats de Mr Y avec avec la filière boulanger et en faire un autre avec la filière boucher.

J'ai modifié comme tu me l'as indiqué mais il me met erreur de range. L'idée se serait de récupérer à partir du nom du monsieur chaque information située dans la même ligne dans une variable différente.

Si j'avais choisi EVALUATE c'était pour prévoir une utilisation plus simple en dynamique car ma bae de données va s'agrandir rapidement ainsi que les chiffres pour chaque artisan.

Je te remercie du temps que tu m'accordes. Je ne voudrais pas que tu penses que tu travailles pour rien. Ton travail m'est très utile.

Bonne soirée à toi aussi. MErci encore.
 

Pièces jointes

  • test.xlsm
    29.7 KB · Affichages: 47
  • test.xlsm
    29.7 KB · Affichages: 49
  • test.xlsm
    29.7 KB · Affichages: 51

JNP

XLDnaute Barbatruc
Re : Problème de compilation et de création de liste

Re :),
C'est sûr que si tu modifie ton fichier avant de tester, ça risque pas de marcher :mad::mad::mad:!!!
Les codes que l'on te fournit fonctionne avec LE fichier que tu as fourni :mad: !
Code:
variable = Range("Test[Colonne2]")(Range("Test[Colonne1]").Find(ComboBox1, lookat:=xlWhole).Row)
utilise les entêtes de ton tableau, donc si tu changes les entêtes, tu changes de code :rolleyes:...
Code:
variable = Range("Test[Métier]")(Range("Test[Monsieur]").Find(ComboBox1, lookat:=xlWhole).Row)
Si j'avais choisi EVALUATE c'était pour prévoir une utilisation plus simple en dynamique car ma bae de données va s'agrandir rapidement ainsi que les chiffres pour chaque artisan.
Erreur totale : un, les tableaux 2007/2010 renvoient en transparence des zones nommées qui sont toujours de la taille du tableau, deux, en nommant correctement les contrôles de ton USF, tu peux faire directement des boucles d'import/export, voire en passant par des modules de classe, des chargement de combo en instantané en fonction des combos déjà remplis :p...
Mais bon, si tu préfère VLookUp, que même les formulistes abandonnent rapidement, c'est ton choix :rolleyes:...
Bon vent :cool:
 

Poussin

XLDnaute Occasionnel
Re: Re : Problème de compilation et de création de liste

Parfait je m'excuse sincèrement pour mon étourderie. Cela marche presque nickel. Je récupère bien le métier par contre je récupère celui de la ligne d'en-dessous voilà cela sera ma dernière question concernant ce sujet je vais potasser tout ça même si USF et combos ne me parlent pas vraiment :)

Bonne continuation et peut-être à bientôt sur un nautre topic.

Merci merci beaucoup pour tout
 

Discussions similaires

Réponses
2
Affichages
270

Statistiques des forums

Discussions
312 165
Messages
2 085 881
Membres
103 009
dernier inscrit
dede972