Importer ligne entière dans une zone de liste..vb excel

erti1711 Messages postés 75 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 16 juin 2006 - 17 juin 2005 à 10:47
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 - 17 juin 2005 à 17:58
Bonjour a tous,
je travaille sur excel,j'ai une feuille CLIENT a 9 colonnes et je m'intéresse au deux premières colonnes c'est a dire le CODECLIENT et le NOMCLIENT.
En faite j'ai des centaines de noms et moi je veux juste que ca affiche dans une liste modifiable tous les noms commencant par les premières lettres saisies dans la zone de texte avec les renseignements supplémentaire se trouvant a la meme ligne.La liste sera affiché dans un autre userform apart
Ex: je saisie dans la zone de texte du 1er Userform1
BAR puis j'appuies sur un bouton OK et après ca m'affiche tous les noms des clients commencant par BAR dans le 2ème userform.
Les noms des clients ne sont pas rangés dans l'ordre alphabétique.
Je vous fournis mon code pour le moment.Pour le moment il marche nikel mais ca importe uniquement les noms ou le code client suivant l'option de recherche choisis.Et moi je souhaiterais que ca importe les lignes entières.
MERCI

Dim oCel As Range

ListeClt.lstclt.Clear
txtrech.Text = UCase(txtrech.Text)
If txtrech.Text = "" Then
txtrech.SetFocus
MsgBox "Aucun critère de recherche saisi !", vbCritical
Exit Sub
End If
Worksheets("CLIENT").Select
If (rdcodclt.Enabled = True) Then
For Each oCel In ActiveSheet.Range("A2:A" & ActiveSheet.Range("A65536").End(xlUp).Row)
If oCel.Value Like txtrech.Text & "*" Then
ListeClt.lstclt.AddItem oCel.Value
End If
Next oCel
ElseIf (rdnom.Enabled = True) Then
For Each oCel In ActiveSheet.Range("B2:B" & ActiveSheet.Range("B65536").End(xlUp).Row)
If oCel.Value Like txtrech.Text & "*" Then
ListeClt.lstclt.AddItem oCel.Value
End If
Next oCel
End If
If ListeClt.lstclt.ListCount = 0 Then
With txtrech
.SelStart = 0
.SelLength = Len(txtrech.Text)
.SetFocus
End With
MsgBox "Aucun client trouvé !", vbCritical
Else
ListeClt.lstclt.ListIndex = 0
ListeClt.Show
ListeClt.lstclt.Enabled = True
End If
End Sub

3 réponses

cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
17 juin 2005 à 13:12
Bonjour,

Si ce n'est pas déjà fait, il faut modifier la propriété "ColumnCount" de la ListBox en y mettant la valeur 9. Puis adapter le code comme suit :

For Each oCel In ActiveSheet.Range("A2:A" & ActiveSheet.Range("A65536").End(xlUp).Row)
If oCel.Value Like txtRech.Text & "*" Then
With ListeClt.lstclt
.AddItem Cells(oCel.Row, 1).Value
For iCol = 2 To 9
.List(.ListCount - 1, iCol - 1) = Cells(oCel.Row, iCol).Value
Next iCol
End With
End If
Next oCel

Idem pour la recherche dans la colonne B.

wape
0
erti1711 Messages postés 75 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 16 juin 2006 1
17 juin 2005 à 14:13
Merci beaucoup ca marche nikel,
et juste une dernière question.Comment on fait pour que ca importe les données par la suite sur la feuille de devis a des emplacements précise??
Je m'explique:
Je sélectionne dans la liste le client qui m'intéresse puis je clik sur bouton ok et ensuite ca renvoit ,le nom prénom adresse cp ville etc... sur la feuille DEVIS dans des emplacements précise.Merci beaucoup
0
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
17 juin 2005 à 17:58
Re,

Essaye qqch du genre :

Private Sub cmdOK_Click()


'Sélectionner la feuille DEVIS
Worksheets("DEVIS").Select


With ListeClt.lstclt
'Mettre la valeur de la 1ère colonne dans la cellule A1
ActiveSheet.Range("A1").Value = .Text
'Mettre la valeur de la 2ème colonne dans la cellule B5
ActiveSheet.Range("B5").Value = .List(.ListIndex, 1)
'Mettre la valeur de la 3ème colonne dans la cellule C9
ActiveSheet.Range("C9").Value = .List(.ListIndex, 2)
'Et ainsi de suite...
End With

End Sub

wape
0
Rejoignez-nous