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