Rechercher des valeurs

hamzy Messages postés 17 Statut Membre -  
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.

7 réponses

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
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...)
0
hamzy Messages postés 17 Statut Membre
 
Merci pijaku.
Et en ce qui concerne la recherche à partir du Nom.
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
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
0
hamzy Messages postés 17 Statut Membre
 
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.
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hamzy Messages postés 17 Statut Membre
 
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.
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
'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
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
Salut michel,
Effectivement c'est hard à mettre en place... J'ai "chipé" ton fichier et regarderait cela tout à l'heure.
Bonne journée

<EDIT> Effectivement, c'est tout simple d'insérer une photo dans un UserForm...
A toi de jouer Hamzi!!<\EDIT>
0