Importer ligne entière dans une zone de liste..vb excel
erti1711
Messages postés75Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention16 juin 2006
-
17 juin 2005 à 10:47
cs_wape
Messages postés262Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention19 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
cs_wape
Messages postés262Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention19 décembre 201012 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
erti1711
Messages postés75Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention16 juin 20061 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
cs_wape
Messages postés262Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention19 décembre 201012 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