Recherche sur Base de Donnée Excel
Résolu/Fermé
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
-
17 janv. 2012 à 11:05
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 19 janv. 2012 à 08:11
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 19 janv. 2012 à 08:11
A voir également:
- Recherche sur Base de Donnée Excel
- Formules excel de base - Guide
- Liste déroulante excel - Guide
- Recherche musique - Guide
- Si et excel - Guide
- Aller à la ligne sur excel - Guide
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
17 janv. 2012 à 11:31
17 janv. 2012 à 11:31
Bonjour,
Pour rechercher un "mot" dans une feuille excel, tu peux utiliser la méthode Find sous VBA.
Voici un exemple qui va chercher, dans la feuille "Feuil1", dans la colonne B (Columns(2)), le contenu de la ComboBox13 :
Pour rechercher un "mot" dans une feuille excel, tu peux utiliser la méthode Find sous VBA.
Voici un exemple qui va chercher, dans la feuille "Feuil1", dans la colonne B (Columns(2)), le contenu de la ComboBox13 :
Dim Trouve As Range Dim Valeur_trouvee As String Dim Lign As Long If ComboBox13 = "" Then Exit Sub With Sheets("Feuil1") Set Trouve = .Columns(2).Cells.Find(ComboBox13) If Trouve Is Nothing Then MsgBox ComboBox13 & " pas trouvée!" Else Valeur_trouvee = Trouve.Address Lign = Trouve.Row MsgBox ComboBox13 & " trouvée dans la cellule : " & Valeur_trouvee & " ligne : " & Lign End If End With Set Trouve = Nothing
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
17 janv. 2012 à 16:22
17 janv. 2012 à 16:22
Il serait plus aisé pour moi de t'orienter si tu me disais :
- le nom de la feuille dans laquelle chercher les données,
- le numéro de la colonne ou chercher et qu'elle colonne voisine (ou pas) vérifie la seconde condition,
- ou sont contenues, dans ton userform, les infos à chercher? TextBox? ComboBox? autre... Me donner leurs noms...
ps : je me rends compte que la macro ci dessus ne fonctionne pas dans ton cas. Je la reprendrais dès que tu m'auras donné les infos nécessaires à son adaptation.
- le nom de la feuille dans laquelle chercher les données,
- le numéro de la colonne ou chercher et qu'elle colonne voisine (ou pas) vérifie la seconde condition,
- ou sont contenues, dans ton userform, les infos à chercher? TextBox? ComboBox? autre... Me donner leurs noms...
ps : je me rends compte que la macro ci dessus ne fonctionne pas dans ton cas. Je la reprendrais dès que tu m'auras donné les infos nécessaires à son adaptation.
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
6
17 janv. 2012 à 16:45
17 janv. 2012 à 16:45
Je vais essayer de faire un exemple simple:
Feuille 1
Collone A Collone B Collone C
A C E
A C F
A D E
A D F
B C E
B C F
B D E
B D F
Et je recherche par exemple le numéro de la ligne qui contient : A D F
Je me chargerai de faire les adaptations a mon besoin spécifique, comme ca je vérifirai que j'ai bien compris comment marche la macro.
Ps: Mais userform me serviront qu'a atribuer des valeur a mes criteres de recherche ("valeur 1", "valeur 2",...)
Feuille 1
Collone A Collone B Collone C
A C E
A C F
A D E
A D F
B C E
B C F
B D E
B D F
Et je recherche par exemple le numéro de la ligne qui contient : A D F
Je me chargerai de faire les adaptations a mon besoin spécifique, comme ca je vérifirai que j'ai bien compris comment marche la macro.
Ps: Mais userform me serviront qu'a atribuer des valeur a mes criteres de recherche ("valeur 1", "valeur 2",...)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
17 janv. 2012 à 16:53
17 janv. 2012 à 16:53
3 critères? ou 4 ou 5 ....
Dis nous tout, tout de suite ça serait mieux.
Dis nous tout, tout de suite ça serait mieux.
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
6
17 janv. 2012 à 17:01
17 janv. 2012 à 17:01
J'ai 5 critere et parfois 6.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 17/01/2012 à 17:04
Modifié par pijaku le 17/01/2012 à 17:04
6 critères, à chercher dans qu'elles colonnes? nom de ta feuille? informations saisies dans quoi dans l'userform? Combobox? textbox? leur noms...
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
6
17 janv. 2012 à 17:28
17 janv. 2012 à 17:28
les criteres sont a chercher dans les colonnes A B C D E G.
Nom de la feuille :TOTO
Dans les user form il n'y a que des OptionButton.
qui définiron les valeurs de valeur1, valeur 2....valeur6
Il y a l'userform1 avec OptionButton1,OptionButton2,OptionButton3
userform2 avec OptionButton3,OptionButton4,OptionButton5
ect..
Nom de la feuille :TOTO
Dans les user form il n'y a que des OptionButton.
qui définiron les valeurs de valeur1, valeur 2....valeur6
Il y a l'userform1 avec OptionButton1,OptionButton2,OptionButton3
userform2 avec OptionButton3,OptionButton4,OptionButton5
ect..
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
18 janv. 2012 à 12:31
18 janv. 2012 à 12:31
Bonjour,
Comme promis, une solution. J'ai perso utilisé des combobox, mais le code doit être identique avec des optionbutton. J'avais juste pas envie de me casser la nénette...
Le code est assez "complexe", donc je l'ai largement commenté. En cas de souci, ne pas hésiter à poser vos questions.
Tu peux aléatoirement choisir de 3 à 6 critères de recherches, si inférieur à 3 = blocage.
Le code du bouton de l'Userform :
Tu trouveras ci joint mon classeur exemple. Mon userform est basé sur des combobox, comme le code ci-dessus, mais tu pourras, je penses l'adapter avec tes optionbutton.
En cas de difficulté d'adaptation, il me faudra le classeur contenant l'userform, sans données confidentielles...
Comme promis, une solution. J'ai perso utilisé des combobox, mais le code doit être identique avec des optionbutton. J'avais juste pas envie de me casser la nénette...
Le code est assez "complexe", donc je l'ai largement commenté. En cas de souci, ne pas hésiter à poser vos questions.
Tu peux aléatoirement choisir de 3 à 6 critères de recherches, si inférieur à 3 = blocage.
Le code du bouton de l'Userform :
Private Sub CommandButton1_Click() 'au clic sur le bouton, recherche : 'dans la colonne B du contenu de la liste 1 'test si contenu de C = liste2 Dim TablDonnees(), Valeur(5), i As Long, j As Long, drlig As Long, Cpt As Byte 'comptage du nombre de critères renseignés : For i = 1 To 6 If Me.Controls("ComboBox" & i).Value <> "" Then Cpt = Cpt + 1 End If Next 'Si le nombre de critères renseignés est inférieur à 3, 'message à l'utilisateur et ... on ne fait rien! If Cpt < 3 Then MsgBox "Merci de renseigner plus de " & Cpt & " critères" Exit Sub End If 'Valeur(5) est une variable tableau qui permet de stocker 6 noms, '(6 car on commence à l'indice 0, Valeur(0), et on finit à 5, Valeur(5), soit 6 éléments) 'le contenu donc de nos 6 combobox 'la boucle qui suit est en fait équivalente à : 'Valeur(0) = ComboBox1 'Valeur(1) = ComboBox2 'Valeur(2) = ComboBox3 'Valeur(3) = ComboBox4 'Valeur(4) = ComboBox5 'Valeur(5) = ComboBox6 '--- Remplissage de la variable Valeur(i) : For i = 0 To 5 Valeur(i) = Me.Controls("ComboBox" & i + 1).Value Next With Sheets("Feuil1") drlig = .Range("A" & Rows.Count).End(xlUp).Row ReDim TablDonnees(1 To 6, 1 To drlig - 1) '--- Remplissage de la variable TablDonnees() : For i = 2 To drlig '1ère ligne du tableau = colonne A de la feuille TablDonnees(1, i - 1) = .Cells(i, 1).Value '2ème ligne du tableau = colonne B de la feuille TablDonnees(2, i - 1) = .Cells(i, 2).Value '3ème ligne du tableau = colonne C de la feuille TablDonnees(3, i - 1) = .Cells(i, 3).Value '4ème ligne du tableau = colonne D de la feuille TablDonnees(4, i - 1) = .Cells(i, 4).Value '5ème ligne du tableau = colonne E de la feuille TablDonnees(5, i - 1) = .Cells(i, 5).Value '6ème ligne du tableau = colonne G de la feuille TablDonnees(6, i - 1) = .Cells(i, 7).Value Next 'explications : 'TablDonnees = Application.Transpose(.Range("A2:G" & drlig).Value) 'va remplir une variable tableau multidimensionnelle, de sorte que : 'TablDonnees(1, 1) = Range("A2"), TablDonnees(2, 1) = Range("B2"), 'TablDonnees(3, 1) = Range("C2"), TablDonnees(4, 2) = Range("D3") 'TablDonnees(6, i) = Range("G" & i) ou i = variable n° de ligne End With 'Si un ou plusieurs critères ne sont pas souhaités, et donc pas choisis dans les combobox 'la comparaison entre la concaténation des Valeur et celle des TablDonnees 'renverra toujours FAUX, il faut donc, Si valeur = rien que le tabldonnees de la colonne 'correspondante soient tous = à rien : For i = 0 To 5 If Valeur(i) = "" Then For j = 1 To drlig - 1 TablDonnees(i + 1, j) = "" Next End If Next 'il convient de comparer maintenant, la concaténation de nos variables Valeur 'et la concaténation des "colonnes" de notre variable tableau 'si les concaténations sont identiques, nous avons trouvé la bonne ligne 'cette ligne est en fait l'indice i de notre variable tableau, + 1 car on commence en 2ème ligne (A2...) For i = 1 To drlig - 1 If TablDonnees(1, i) & TablDonnees(2, i) & TablDonnees(3, i) & TablDonnees(4, i) & TablDonnees(5, i) & TablDonnees(6, i) = Join(Valeur, "") Then MsgBox "trouvé ligne : " & i + 1 Exit Sub End If Next MsgBox "pas trouvé" End Sub
Tu trouveras ci joint mon classeur exemple. Mon userform est basé sur des combobox, comme le code ci-dessus, mais tu pourras, je penses l'adapter avec tes optionbutton.
En cas de difficulté d'adaptation, il me faudra le classeur contenant l'userform, sans données confidentielles...
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
6
18 janv. 2012 à 18:22
18 janv. 2012 à 18:22
Merci je suis en ce moment en trian d'essayer de comprendre comment ca marche.
SI j'ai bien compris TablDonnees est une matrice de taille variable qui stock en mémoire tempon les lignes de mon tableau réel?
SI j'ai bien compris TablDonnees est une matrice de taille variable qui stock en mémoire tempon les lignes de mon tableau réel?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
19 janv. 2012 à 08:11
19 janv. 2012 à 08:11
Bonjour,
SI j'ai bien compris TablDonnees est une matrice de taille variable qui stock en mémoire tempon les lignes de mon tableau réel?
C'est tout à fait ça.
N'hésite pas à poser moultes questions...
SI j'ai bien compris TablDonnees est une matrice de taille variable qui stock en mémoire tempon les lignes de mon tableau réel?
C'est tout à fait ça.
N'hésite pas à poser moultes questions...
Modifié par Mrfrize le 17/01/2012 à 11:50
J'ai plusieur criteres dans plusieur colone, et je voudrai faire une recherche sur l'ensemble des criteres.
Colonne A Colonne B ....
Ligne 1 A C
Ligne 2 A D
Ligne 3 B C
Ligne 4 B D
.....
Dans cette exemple je voudrai trouver la ligne qui contient et A et C.
Merci
17 janv. 2012 à 12:44
17 janv. 2012 à 15:53
Désoler d'insiter mais je ne comprends pas comment fonctionne ta macro.