Bonjour,
Je travaille actuellement sur un fichier Excel, dans lequel j'ai en colonne A des codes (doublons possibles), en colonne B (le nom correspondant), et d'autres colonnes. Ce tableau fait plus de 10000 lignes.
Sur mon Userform, j'ai une Combox (Recherche) qui filtre les codes de la colonne A sans Doublons :
[cpp]Me.Recherche.List = SansDoublonsTrié(Range([A6], [A65000].End(xlUp))) 'Filtrer les codes sans doublons[/cpp]
Function correspondante
[cpp]Function SansDoublonsTrié(champ As Range)
Dim temp()
j = 1
ReDim temp(1 To j)
For i = 1 To champ.Count
témoin = Not IsError(Application.Match(champ(i), temp, 0))
If Not témoin And champ(i) <> "" Then
ReDim Preserve temp(1 To j)
temp(j) = champ(i)
j = j + 1
End If
Next i
Call Tri(temp, 1, j - 1)
SansDoublonsTrié = temp
End Function[/cpp]
A la sélection d'un choix dans la Combobox (Recherche), cela alimente alors une ListBox (CodeList) des codes identiques.
[cpp]Private Sub Recherche_Change() 'au changement dans la Combobox "Recherche"
Dim cel As Range 'déclare la variable cel (CELlule)
Me.CodeList.ColumnCount = 2
Me.CodeList.Clear 'vide la listbox "CodeList"
'Boucle sur toutes les cellules éditées cel de la colonne A de l'onglet "Sheet1"
For Each cel In Sheets("Sheet1").Range("A6:A" & Sheets("Sheet1").Cells(Application.Rows.Count, 1).End(xlUp).Row)
'condition : si la valeur de la cellule (convertie en texte) est égale à la valeur de la combobox "Recherche"
If CStr(cel.Value) = Me.Recherche.Value Then
Me.CodeList.AddItem cel.Value 'ajoute la valeur de la cellule dans la première colonne de la listbox (colonne 0)
With Me.CodeList 'prend en compte la listbox "CodeList"
.List(.ListCount - 1, 1) = cel.Offset(0, 1).Value 'ajoute la valeur de la cellule décalée d'une colonne dans la seconde colonne
End With 'fin de la prise en compte de la listbox "CodeList"
End If 'fin de la condition
Next cel 'prochaine cellule cel de la boucle
End Sub[/cpp]
Mon souci est maintenant le suivant, lorsque je clique sur l'une des lignes de la Listbox (Recherche) je souhaiterai que la ligne correspondante du fichier Excel, alimente alors différents TextBox des valeurs présentes dans le fichier Excel : et là je coince un peu, je ne trouve pas la solution à mon problème.
Vous trouverez un fichier Excel synthétique, (pas l'original : trop lourd) à [strike]
Actuellement, lorsque je clique sur une des lignes de la Listbox (CodeList), ce n'est pas la bonne ligne qui est reprise dans mes Textbox.
Une aide serait la bienvenue :??:
Didier
_____________
Moderator dixit : deux fois désolé.
1°) Pas de lien, merci. [:zeb:6]
2°) Je pars en WE, je ne peux pas t'aider avant Lundi Mais d'autres peuvent le faire
Je travaille actuellement sur un fichier Excel, dans lequel j'ai en colonne A des codes (doublons possibles), en colonne B (le nom correspondant), et d'autres colonnes. Ce tableau fait plus de 10000 lignes.
Sur mon Userform, j'ai une Combox (Recherche) qui filtre les codes de la colonne A sans Doublons :
[cpp]Me.Recherche.List = SansDoublonsTrié(Range([A6], [A65000].End(xlUp))) 'Filtrer les codes sans doublons[/cpp]
Function correspondante
[cpp]Function SansDoublonsTrié(champ As Range)
Dim temp()
j = 1
ReDim temp(1 To j)
For i = 1 To champ.Count
témoin = Not IsError(Application.Match(champ(i), temp, 0))
If Not témoin And champ(i) <> "" Then
ReDim Preserve temp(1 To j)
temp(j) = champ(i)
j = j + 1
End If
Next i
Call Tri(temp, 1, j - 1)
SansDoublonsTrié = temp
End Function[/cpp]
A la sélection d'un choix dans la Combobox (Recherche), cela alimente alors une ListBox (CodeList) des codes identiques.
[cpp]Private Sub Recherche_Change() 'au changement dans la Combobox "Recherche"
Dim cel As Range 'déclare la variable cel (CELlule)
Me.CodeList.ColumnCount = 2
Me.CodeList.Clear 'vide la listbox "CodeList"
'Boucle sur toutes les cellules éditées cel de la colonne A de l'onglet "Sheet1"
For Each cel In Sheets("Sheet1").Range("A6:A" & Sheets("Sheet1").Cells(Application.Rows.Count, 1).End(xlUp).Row)
'condition : si la valeur de la cellule (convertie en texte) est égale à la valeur de la combobox "Recherche"
If CStr(cel.Value) = Me.Recherche.Value Then
Me.CodeList.AddItem cel.Value 'ajoute la valeur de la cellule dans la première colonne de la listbox (colonne 0)
With Me.CodeList 'prend en compte la listbox "CodeList"
.List(.ListCount - 1, 1) = cel.Offset(0, 1).Value 'ajoute la valeur de la cellule décalée d'une colonne dans la seconde colonne
End With 'fin de la prise en compte de la listbox "CodeList"
End If 'fin de la condition
Next cel 'prochaine cellule cel de la boucle
End Sub[/cpp]
Mon souci est maintenant le suivant, lorsque je clique sur l'une des lignes de la Listbox (Recherche) je souhaiterai que la ligne correspondante du fichier Excel, alimente alors différents TextBox des valeurs présentes dans le fichier Excel : et là je coince un peu, je ne trouve pas la solution à mon problème.
Vous trouverez un fichier Excel synthétique, (pas l'original : trop lourd) à [strike]
Vous devez être connecté pour voir les liens.
[/strike] pour plus de compréhension.Actuellement, lorsque je clique sur une des lignes de la Listbox (CodeList), ce n'est pas la bonne ligne qui est reprise dans mes Textbox.
Une aide serait la bienvenue :??:
Didier
_____________
Moderator dixit : deux fois désolé.
1°) Pas de lien, merci. [:zeb:6]
2°) Je pars en WE, je ne peux pas t'aider avant Lundi Mais d'autres peuvent le faire