XL 2010 comment je peux configurer le neveu et le code dans les TextBox1 et 2

kahlouch

XLDnaute Occasionnel
bonjour

comment je peux configurer le niveau et le code dans les TextBox1 et 2
a partire de résultat de (cboSpeca) dans ce formulaire
les données sont dans la Feuil –(liste)
-----------------------------------------------------------
désolé il y a une erreur dans le titre
je ne pouvais pas le corrigé ....!
 

Pièces jointes

  • Formulaire Saisie22.xlsm
    33.9 KB · Affichages: 40
Dernière édition:

thebenoit59

XLDnaute Accro
Bonjour Kahlouch.

J'ai modifié un peu ton fichier, pour qu'il soit plus simple à utiliser.
J'ai essayé de te détailler les étapes, reviens vers moi si tu ne comprends pas tout.
En gros j'ai ajouté ton tableau de spécialités dans un tableau virtuel (array).
J'ai créé un index avec un dictionnaire, la clef de recherche est le nom de spécialité qui renvoie à la ligne du tableau virtuel.
Une fois le combobox changé il recherche le numéro de ligne et renvoie les deux informations demandées dans les textbox.
 

Pièces jointes

  • Kahlouch - Combobox renvoie vers Textbox.xlsm
    32.9 KB · Affichages: 45

kahlouch

XLDnaute Occasionnel
Re..

le même code de hier
me le par une façon correcte moi je ne poivre pas le mètre correctement
--------------------------------------------------------------------------------------------------------------------------

Private Sub UserForm_Initialize()
'**' Dans cette procédure nous allons ajouter les clés du dictionnaire comme source pour la combobox.
Me.cboSpeca.List = dicoSpecialite.Keys
End Sub

Private Sub cboSpeca_Change()
Dim nomSpecialite$, ligneSpecialite%, codeSpecialite$, niveauSpecialite$
'**' Au changement de valeur de la combobox, nous enregistrons la nouvelle valeur dans une variable.
'**' Vérifions que cette valeur existe dans le dictionnaire.
'**' Si c'est le cas nous ajoutons le code et le niveau dans les textbox.
With Me
nomSpecialite = .cboSpeca.Value
.txt1.Value = ""
.txt2.Value = ""
If Not dicoSpecialite.exists(nomSpecialite) Then Exit Sub
ligneSpecialite = dicoSpecialite(nomSpecialite)
codeSpecialite = arraySpecialite(ligneSpecialite, 2)
niveauSpecialite = arraySpecialite(ligneSpecialite, 3)
.txt1.Value = codeSpecialite
.txt2.Value = niveauSpecialite
End With
End Sub
-----------------------------------------------------------------------------------------------
Option Explicit

'**'
'On va décomposer le code au maximum pour éviter les erreurs par la suite.
'**'

Public wkTravail As Workbook
Public shSource As Worksheet, shListe As Worksheet
Public arraySpecialite(), dicoSpecialite As Object

Sub initialisationUserForm()
'**' Procédure d'initialisation, voir ci-dessous.
initialisation
'**' Affichage de l'userform.
frmSaisie.Show
End Sub

Sub initialisation()
Dim i%
'**' Enregistrement du classeur et des deux feuilles.
Set wkTravail = ThisWorkbook
With wkTravail
Set shSource = .Sheets("Source")
Set shListe = .Sheets("Liste")
End With
'**' Enregistrement du tableau dans un tableau virtuel.
arraySpecialite = shListe.Range("tableauSpecialites")
'**' Création d'un dictionnaire avec comme clé la spécialité et comme item la ligne.
Set dicoSpecialite = CreateObject("Scripting.Dictionary")
For i = LBound(arraySpecialite) + 1 To UBound(arraySpecialite)
dicoSpecialite(arraySpecialite(i, 1)) = i
Next i
End Sub
 

Discussions similaires

Réponses
9
Affichages
156

Statistiques des forums

Discussions
312 198
Messages
2 086 133
Membres
103 128
dernier inscrit
pmordel@parisbrestconsult