alimentation combobox particuliere

GHISLAIN

XLDnaute Impliqué
bonsoir a tous ,

voila , j alimente une combobox2 avec des nombres comportant 15 chiffres ex: 251452154870652

nb les numeros dans le doc joins sont en format texte , faut il les transformer ou pas ??? si oui de quelle façon ??

autre précision , je ne peux pas intervenir sur la feuille essai1 puisque celle ci est extraite d un autre programme et se met a jour automatiquement en utilisant des donnees externe.

je souhaiterais ne voir apparaitre dans la combobox que les 4 derniers chiffres soit pour l exemple : 0652

la liste de ces chiffres etant tres longue, je risque en ne concervant que les 4 derniers chiffres obtenir des doublons
doublons qu il faudra conserver pour que ma recherche puisse fonctionner , voir mon projet


si vous avez quelques suggestions a m apporter je vous en remercie par avance

tres amicalement

Ghislain
 

Pièces jointes

  • Recherche.zip
    42.7 KB · Affichages: 19
  • Recherche.zip
    42.7 KB · Affichages: 17
  • Recherche.zip
    42.7 KB · Affichages: 19

Robert

XLDnaute Barbatruc
Repose en paix
Re : alimentation combobox particuliere

Bonsoir Ghislain, bonsoir le forum,

Essaie comme ça :
Code:
Private Sub UserForm_Initialize()
Dim cel As Range

Me.ComboBox1.ColumnCount = 2
Me.ComboBox1.ColumnWidths = ";0"
For Each cel In Sheets("essai1").Range("a2:a" & Sheets("essai1").Range("a65536").End(xlUp).Row)
    If cel.Value <> "" Then
        With Me.ComboBox1
            .AddItem Right(cel.Value, 4)
            .Column(1, .ListCount - 1) = cel.Row
        End With
    End If
Next cel
Me.ComboBox2.ColumnCount = 2
Me.ComboBox2.ColumnWidths = ";0"
For Each cel In Sheets("essai1").Range("F2:F" & Sheets("essai1").Range("F65536").End(xlUp).Row)
    If cel.Value <> "" Then
        With Me.ComboBox2
            .AddItem Right(cel.Value, 4)
            .Column(1, .ListCount - 1) = cel.Row
        End With
    End If
Next cel
End Sub
Les deux comboboxes sont alimentées par les valeurs et par le numéro de ligne de chaque valeur. Cela permet ensuite, en affichant un item d'une des comboboxes, de récupérer les données de la ligne sans avoir à boucler pour rechercher la valeur afficher dans la combobox...
Code:
Private Sub ComboBox1_Change()
Dim li As Long

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
li = ComboBox1.Column(1, ComboBox1.ListIndex)
With Sheets("essai1")
    TextBox1 = Cells(li, 1)
    TextBox2 = Cells(li, 2)
    TextBox3 = Cells(li, 3)
    TextBox4 = Cells(li, 4)
    TextBox5 = Cells(li, 5)
     TextBox6 = Cells(li, 6)
    TextBox7 = Cells(li, 7)
    TextBox8 = Cells(li, 8)
    TextBox9 = Cells(li, 9)
    TextBox10 = Cells(li, 10)
    TextBox11 = Cells(li, 11)
    TextBox12 = Cells(li, 12)
    TextBox13 = Cells(li, 13)
    TextBox14 = Cells(li, 14)
    TextBox15 = Cells(li, 15)
    TextBox16 = Cells(li, 16)
    TextBox17 = Cells(li, 17)
    TextBox18 = Cells(li, 18)
    TextBox19 = Cells(li, 19)
    TextBox20 = Cells(li, 20)
End With
End Sub


Private Sub ComboBox2_Change()
Dim li As Long

If Me.ComboBox2.ListIndex = -1 Then Exit Sub
li = ComboBox2.Column(1, ComboBox2.ListIndex)
With Sheets("essai1")
    TextBox1 = Cells(li, 1)
    TextBox2 = Cells(li, 2)
    TextBox3 = Cells(li, 3)
    TextBox4 = Cells(li, 4)
    TextBox5 = Cells(li, 5)
     TextBox6 = Cells(li, 6)
    TextBox7 = Cells(li, 7)
    TextBox8 = Cells(li, 8)
    TextBox9 = Cells(li, 9)
    TextBox10 = Cells(li, 10)
    TextBox11 = Cells(li, 11)
    TextBox12 = Cells(li, 12)
    TextBox13 = Cells(li, 13)
    TextBox14 = Cells(li, 14)
    TextBox15 = Cells(li, 15)
    TextBox16 = Cells(li, 16)
    TextBox17 = Cells(li, 17)
    TextBox18 = Cells(li, 18)
    TextBox19 = Cells(li, 19)
    TextBox20 = Cells(li, 20)
End With
End Sub
Le fichier :
 

Pièces jointes

  • Ghislain_v01.xls
    230.5 KB · Affichages: 42
  • Ghislain_v01.xls
    230.5 KB · Affichages: 39
  • Ghislain_v01.xls
    230.5 KB · Affichages: 39

ChTi160

XLDnaute Barbatruc
Re : alimentation combobox particuliere

Bonjour Ghislain ,
un Coucou Particulier à Robert

Arff afin de mettre mon grain de sel où je ne devrait pas Lol

Robert ,pourquoi mettre
With Sheets("essai1")
et ne pas mettre le Point qui va bien avec Lol (ex : TextBox1 = .Cells(li, 1))
j'ai aussi à partir de ton fichier , pensé , afin de simplifier le code , de mettre deux Boucles du Genre

Code:
With Sheets("essai1")
    For i = 1 To 20
       Me.Controls(i) =.Cells(li, i)
    Next i
End With

ceci sans prétention Aucune Lol
Bonne Journée
Amicalement
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : alimentation combobox particuliere

Bonjour le fil, bonjour le forum,

Bon sang ! Mais c'est bien dur... Comme tu as raison Ô toi le Chti qui vient non pas mettre un grain de sel mais un point salvateur qui vient réparer mes omissions impossibles...

Oui la boucle sur les contrôles simplifierait le code. J'avais pensé aussi que la première (ou la seconde je ne me souviens plus) combobox pouvait renvenyer le numéro de ligne par sa propriété ListIndex + 2. Mais j'attendais d'avoir un retour de Ghislain qui, visiblement, a disparu (si j'ose dire) avant de continuer...

C'est un plaisir de te revoir... Merci à toi.
 

GHISLAIN

XLDnaute Impliqué
Re : alimentation combobox particuliere

bonsoir Robert et chti160,

non non robert je n ai pas disparu juste journee de taf lol!!!!!!!!!!!!!!
deja un grand merci pour ton excelent travail et si je ouie dire excelent talent d'ecxelien
je suis bluffé je post a 20h38 et tu me sort un truc tip top a 21h48 je ne peux que m incliner et tu as pris soin de revoir tous mon code

franchement chapeau !!!!


Pour repondre a chti160 j'ai bien voir les grain de sel venir nous eclairer nous debutant de leur competences
je vais integrer ça proposition sans etre sur que celle ci fonctionne

j ai du , dans mon projet modifier , TRES LEGEREMENT , le code de Robert .

TextBox11 =(Cells(li, 11) par TextBox11 = Val(Cells(li, 11)) pour avoir un retour correct dans le textbox


je vais donc tester la proposition de chti160 par


With Sheets("essai1")
For i = 1 To 20
Me.Controls(i) =Val(.Cells(li, i))
Next i
End With

je vous remercie de votre talent de surtout de prendre le temps de nous le partager

excellente soiree a tous

tres amicalement

ghislain
 

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 231
Membres
104 453
dernier inscrit
benjiii88