Sghaier Chafaa
XLDnaute Junior
Bonjour tt le monde
pas trop doué en VBA, je collecte et assemble des codes pour arriver à mon objectif
je suis à moitié chemin, mais depuis des jours je vise à rechercher intuitivement / avec saisie semi automatique mais sans aboutir
mon code actuel:
c'est ici que je me bloque :
car ,je pense , je doit trouver comment changer le chargement de "RechercheAvecDCI1" de cette forme:
à une forme oû RechercheAvecDCI1 doit contenir la liste à valeur unique et trié
quelqu'un a de solution svp ?
pas trop doué en VBA, je collecte et assemble des codes pour arriver à mon objectif
je suis à moitié chemin, mais depuis des jours je vise à rechercher intuitivement / avec saisie semi automatique mais sans aboutir
mon code actuel:
VB:
Dim f, ligneEnreg, RechercheAvecDCI(), RechercheAvecDCI1()
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim values As Collection
Dim item As Variant
' Référence à la feuille f1
Set ws = ThisWorkbook.Sheets("f1")
' Référence à la colonne B de la feuille f1
Set rng = ws.Range("F:F")
' Collection pour stocker les valeurs uniques
Set values = New Collection
'charger/parcourir la colonne F de la feuille °f1° dans/avec la variable °RechercheAvecDCI1°
RechercheAvecDCI1 = Application.Transpose(ws.Range("F2:F" & ws.[a65000].End(xlUp).Row).value)
' Parcours de la colonne B pour récupérer les valeurs uniques
On Error Resume Next ' Ignorer les erreurs si une valeur est déjà dans la collection
For Each cell In rng
If cell.value <> "" Then
values.Add cell.value, CStr(cell.value)
End If
Next cell
On Error GoTo 0 ' Réactiver les erreurs
' Trier les valeurs par ordre alphabétique
Call SortCollection(values)
' Effacer le contenu actuel de la combobox
ComboChoixMedct1.Clear
' Ajouter les valeurs à la combobox
For Each item In values
ComboChoixMedct1.AddItem item
Next item
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'FONCTION DE TRIE ALPHABETIQUE UTILISEE POUR LE TRI DE LA LISTE DéROULANTE
Sub SortCollection(ByRef values As Collection)
Dim i As Long
Dim j As Long
Dim temp As Variant
For i = 1 To values.Count - 1
For j = i + 1 To values.Count
If StrComp(values(i), values(j), vbTextCompare) > 0 Then
temp = values(j)
values.Remove j
values.Add temp, temp, i
End If
Next j
Next i
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'LA FONCTION QUI CHERCHE ET REMPLIE la liste déroulante et LES ZONES DES TEXTE PAR LES INFO
Private Sub ComboChoixMedct1_click()
'on récupère tous les champs
'charger liste des medicaments par DCI si l'option de recherche par DCI est coché
If Opt_Btn_DCI.value = True Then
For i = 1 To UBound(RechercheAvecDCI1)
If RechercheAvecDCI1(i) = ComboChoixMedct1 Then
ligneEnreg = i + 1
Me.Controls("TxtBx_DCI") = f.Cells(ligneEnreg, 6)
Me.Controls("TxtBx_Categ") = f.Cells(ligneEnreg, 5)
Me.Controls("TxtBx_AP") = f.Cells(ligneEnreg, 7)
End If
Next i
end sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
c'est ici que je me bloque :
VB:
'recherche intuitif de liste trié POUR ComboChoixMedct1
Private Sub ComboChoixMedct1_Change()
???? ici que je me Bloque ????
End Sub
car ,je pense , je doit trouver comment changer le chargement de "RechercheAvecDCI1" de cette forme:
VB:
RechercheAvecDCI1 = Application.Transpose(f.Range("F2:F" & f.[a65000].End(xlUp).Row).value)
à une forme oû RechercheAvecDCI1 doit contenir la liste à valeur unique et trié
quelqu'un a de solution svp ?