Re : travail sur base donnees
Bonjour le Forum,
Gorfael, je te soumet un code issu de l'un de mes projets.
Je sais qu'il est difficile de comprendre un code tronqué, mais le code suivant peut d'indiquer le chemin à suivre.
Le principe : dans un Userform, on sélectionne le type de valeur recherchée dans la base. On saisi dans un TextBox l'occurence recherchée et on lance la recherche (cmd1Find_Click)
Public Sub cmd1Find_Click() 'La macro associée au bouton "Rechercher"
Dim Cr$ 'Critère
Dim Oc$ 'Occurence Cherchée
Dim Li% 'List Index du critère
Dim i% 'Compteur1
Dim y% 'Compteur 2
Dim n% 'Compteur 3 (nbre occurences trouvées)
Dim z& 'Compteur données Data
Dim Ot$ 'Occurence trouvée
Dim Hwsh As Worksheet
Set Hwsh = Sheets("Data") 'Déclare et charge la feuille servant de base de données
Cells(1, 1).Select
z = Cells(1, 1).CurrentRegion.Rows.Count 'Compte le nbre de lignes de la base de données
cbx1Result.Value = "" 'Remise à zéro de la valeur de la combobox (efface la recherche précédente)
Cr = CStr(cbx1Rech.Value) '---> c'est le titre de la colonne de recherche (exemple  nom de la colonne = "Nom")
Oc = CStr(txb1OccRec.Value) '---> c'est le critère recherché (le nom du client recherché)
Li = CInt(cbx1Rech.ListIndex) '---> la valeur de du type d'occurence recherchée
------- Remise à zéro des labels du userform affichant les résultats --------
For i = 14 To 29
    Me.Controls("Label" & i).Caption = ""
Next i
'--------------------------------
y = 0
n = 0
'--- Selon le choix retenu dans la listBox, on défini la colonne de recherche :
Select Case Li 'Critère choisi par l'utilisateur dans la Combobox
    Case 0 ' 1er choix de la combobox (index = 0)
        Li = Li + 4 'Recherche dans la 4ème colonne (0+4)
    Case 1 '2ème choix de la combobox (index = 1)
        Li = Li + 5 'Recherche dans la 6ème colonne (1+5)
    Case 2 '3ème choix de la combobox (index = 2)
        Li = Li + 6  'Recherche dans la 8ème colonne (2+6)
    Case 3 '4ème choix de la combobox (index = 3)
        Li = Li + 6 'Recherche dans la 9ème colonne (3+6)
    Case Else
        MsgBox "Selection erronée ", vbCritical, "Erreur  "
        Exit Sub
End Select
Dim Tr(30, 6) 'déclare un tableau destiné à recevoir les données trouvées (30 valeurs possibles, avec 6 données par valeurs)
Hwsh.Activate 'active la base de données
For i = 2 To z 'pour occurence trouvée, on incrémente le tableau avec les valeurs souhaitées correpondant à l'occurrence trouvée
    Ot = Cells(i, Li).Value
        If UCase(Ot) = UCase(CStr(Oc)) Then
            Tr(y, 0) = CStr(Cells(i, 1).Value) 'Réf
            Tr(y, 1) = CStr(Cells(i, 4).Value) 'Date
            Tr(y, 2) = (CStr(Cells(i, 5).Value) & "-" & CStr(UCase(Cells(i, 6).Value))) 'Compte + Clé
            Tr(y, 4) = CStr(Cells(i, 9).Value) 'Montant
            Tr(y, 5) = CStr(Cells(i, 2).Value) 'Agent
            Tr(y, 6) = CStr(Cells(i, 1).Row) 'ligne
            n = n + 1
            y = y + 1
        Else: End If
Next i
'---------------
'Le tableau est désormais rempli, on transfère les valeurs vers la combobox qui affichera toutes les occurences trouvées
cbx1Result.List = Tr
'------------------
'La 1ère ligne de la combobox affiche le nombre d'occurences trouvées
Select Case n
    Case 0
        cbx1Result.Value = "Recherche infructeuse"
        
    Case 1
        cbx1Result.Value = "Une occurence trouvée"
    
    Case Else
        cbx1Result.Value = CStr(n) & " occurences trouvées"
End Select
Hwsh.Cells(1, 1).Select
End Sub
'""""""""""""""""""""""""""""""""""""""""""""""
Pour un code complet, fais des recherches sur ce forum avec les mots clés "Moteur de recherche"
Bon après midi
Kotov