Rechercher des valeurs
hamzy
Messages postés
17
Statut
Membre
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Merci les gars pours vos reponses mais j'ai un autre soucis.
j'ai un userform avec les champs matricule, nom, prenom, date d'embauche, fonction, service, responsable de service et une base de données (feuille excel) qui contient toutes les données saisies à partir du userfom.
les valeurs des champs sont rangés sur la feuille ligne par ligne.
j'aimerais pouvoir rechercher mes données saisies à partir du champ matricule ou nom.
à chaque matricule ou nom entrer, la macro va rechercher sur la feuille excel si le matricule ou le nom existe et renvoi les valeurs trouvées de la ligne correspondante dans les champs du userform nom, prenom, date d'embauche, fonction, service, responsable de service.
lorsque le nom ou le matricule entré n'est pas retrouvé, il affiche une message du genre "recherche infructueuse".
Merci de votre attention.
j'ai un userform avec les champs matricule, nom, prenom, date d'embauche, fonction, service, responsable de service et une base de données (feuille excel) qui contient toutes les données saisies à partir du userfom.
les valeurs des champs sont rangés sur la feuille ligne par ligne.
j'aimerais pouvoir rechercher mes données saisies à partir du champ matricule ou nom.
à chaque matricule ou nom entrer, la macro va rechercher sur la feuille excel si le matricule ou le nom existe et renvoi les valeurs trouvées de la ligne correspondante dans les champs du userform nom, prenom, date d'embauche, fonction, service, responsable de service.
lorsque le nom ou le matricule entré n'est pas retrouvé, il affiche une message du genre "recherche infructueuse".
Merci de votre attention.
7 réponses
-
Re-
Alors pour chercher, dans la colonne A de la feuille "base", la valeur contenue dans le textbox1 (matricule) voici le code (et mes sources) :
sources, merci une nouvelle fois à Michel_m : https://forums.commentcamarche.net/forum/affich-15642764-programme-parcourir-plusieurs-tableaux-ecel
Private Sub CommandButton1_Click() Dim lignecherchee As Long Dim valeur valeur = TextBox1 If Application.CountIf(Sheets("base").Columns(1), valeur) > 0 Then 'test si le matricule a déjà été saisi lignecherchee = Sheets("base").Columns(1).Find(valeur, Range("A2"), xlValues).Row 'renvoie la ligne correspondante au matricule TextBox2.Value = Range("D" & lignecherchee) 'renvoie dans le Textbox2 (nom) la valeur contenue dans la colonne D TextBox3.Value = Range("E" & lignecherchee) TextBox4.Value = Range("F" & lignecherchee) ComboBox1.Value = Range("G" & lignecherchee) Else MsgBox ("recherche infructueuse") 'si la valeur cherchée n'existe pas End If End Sub
Bien sur à adapter (modifier les lignes en gras...) -
Merci pijaku.
Et en ce qui concerne la recherche à partir du Nom. -
Salut,
Mais c'est qu'il réclame en plus?
je plaisante car:
Oups j'avais omis ce détail...
Alors cette macro est à adapter bien sur...
Descriptif en commentaires.
Private Sub CommandButton1_Click() Dim lignecherchee As Long Dim valeur If TextBox1 <> "" Then 'si le matricule est entré dans le 1er TextBox on exécute la recherche du matricule valeur = TextBox1 If Application.CountIf(Sheets("base").Columns(1), valeur) > 0 Then lignecherchee = Sheets("base").Columns(1).Find(valeur, Range("A2"), xlValues).Row TextBox2.Value = Range("D" & lignecherchee) ComboBox1.Value = Range("F" & lignecherchee) Else MsgBox ("l'entrée recherchée n'existe pas") End If Elseif TextBox2 <> "" Then 'sinon si le nom est entré et pas le N° de matricule, on cherche par le nom valeur = UCase(TextBox2) If Application.CountIf(Sheets("base").Columns(4), valeur) > 0 Then lignecherchee = Sheets("base").Columns(4).Find(valeur, Range("D2"), xlValues).Row TextBox1.Value = Range("A" & lignecherchee) ComboBox1.Value = Range("F" & lignecherchee) Else MsgBox ("l'entrée recherchée n'existe pas") End If End If End Sub
dans cette macro :
TextBox1 = textBox "matricule"
TextBox2 = TextBox "nom"
Combobox1 = rien du tout c'est juste pour te montrer que cela fonctionne identiquement pour tous les contrôles...
Sheets("base") = feuille contenant ta base de données
Columns(1) : le 1 représente le N° de la colonne ou sont "rangés" les N° de matricule
Columns(4) : le 4 représente le N° de la colonne ou sont "rangés" les noms
-
j'ai testé la recherche par le nom (en adaptant le code) mais elle ne me donne aucun resultat même si le nom existe dans la base.
je crois que c'est en rapport avec cette ligne de code :
"If Application.CountIf(Sheets("base").Columns(4), valeur) > 0".
En plus, j'ai un dossier contenant toutes les photos des agents contenus dans ma base de données excel, j'aimerais pouvoir afficher dans un contrôle image la photo de chaque agent trouvée.
Merci d'avance t'es un mec bien.-
Je ne crois pas que cela vienne de cette ligne mais plutôt de celle ci :
valeur = UCase(TextBox2)
UCase mets le nom contenu dans le TextBox en majuscules. Si ta base est bien remplie, les noms devraient être en majuscule...
Pour les images, tu peux toujours tenté de t'inspirer de cela : ici sources: https://silkyroad.developpez.com/VBA/XlOrganigramme/
Mais accroche toi car là c'est de la haute voltige...
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
concernant le code pour convertir le nom en majuscule j'ai pas de soucis avec.
le probleme avec ce code c'est que la recherche ne me renvoi aucune valeur, il ne retrouve aucun nom saisie. pourtant ces noms existe vraiment dans ma base. -
'Lut,
Dans quelle colonne sont tes noms?
Dans l'exemple je suppute qu'ils sont colonne D, à adapter à ton cas :Elseif TextBox2 <> "" Then valeur = UCase(TextBox2) If Application.CountIf(Sheets("base").Columns(4), valeur) > 0 Then lignecherchee = Sheets("base").Columns(4).Find(valeur, Range("D2"), xlValues).Row -
bonjour
pijaku, concernant ton post 5 sur l'inclusion de photos
c'est hard pour un organigramme mais pour inclure dans un usf c'est facile (il faut que toutes les photos soient du m^me format)
tite demo
https://www.cjoint.com/?mtlt6ANizY