probleme de selection

V

violaine

Guest
bonjour le forum
je dois afficher les coordonnées d une personne par une boite de dialogue mais dans ma liste de personne plusieurs personnes portent le même nom
dc je dois les différencier par leur prenom
comment faire?

par contre je voudrai garder le code du depart pour eviter de refaire tt mon code
voir exemple joint

merci bonne journee
 

Pièces jointes

  • exemple.zip
    14.7 KB · Affichages: 22
  • exemple.zip
    14.7 KB · Affichages: 23
  • exemple.zip
    14.7 KB · Affichages: 26
O

omicron

Guest
Bonjour Violaine,

Je pense qu'en adaptant dans ton code le test de la condition de la façon suivante, cela devrait marcher ...

=====================================================
Dim Plage As Range ' Idem
Dim L As Long ' Déclaration de Variable de Type Numérique de -32,768 à 32,767

With Sheets("Feuil1") ' La Feuille Cible "With" (tout ce qui suit avec un ".")
L = .Range("A65536").End(xlUp).Row ' On trouve la dernière cellule non vide
' en partant du bas de la colonne "A"
Set Plage = .Range("A10:A" & L) ' Définition dynamique de la Plage de Cellule par creation d'Objet (Set)
End With ' Fin de Avec

'Lancement d'un Boucle For Each (Pour Chaque Item Contenu dans une Collection)
For Each Cell In Plage 'Pour chaque Cellule dans la Plage donc ;-)

'Début de Condition SI.
'Si la Condition est Valeur de Cellule = Valeur de TextBox1 et Cellule adjacente droite = Valeur TextBox2
If Cell.Value = TextBox1.Value and Cell.Offset(0,1) = TextBox2.Text Then
'Alors :
UserForm2.TextBox1 = TextBox1.Value 'La TextBox2 prend la valeur de la Cellule trouvée (Cell)
UserForm2.TextBox2 = Cell.Offset(0, 1).Value
UserForm2.TextBox3 = Cell.Offset(0, 2).Value
UserForm2.TextBox4 = Cell.Offset(0, 3).Value
Exit For 'Sortie de la Boucle, car la condition est remplie
End If 'Fin de la Condition

'Passage à la Prochaine Cellule de la Plage (si on est pas Sorti pas Exit For)
Next Cell

Unload UserForm1
UserForm2.Show

End Sub
=====================================================

Cordialement.

Omicron.
 
R

Robert

Guest
Salut Violaine, salut le forum,

Dans le CommandButton1_Click() (bouton OK) de ton premier UserForm remplace la ligne 19 par celle-ci:

If Cell.Value = TextBox1.Value And Cell.Offset(0, 1).Value = TextBox2.Value Then

Au lieu de vérifier uniquement le nom, la macro teste maintenant aussi le prénom. L'inconvénient est qu'il te faudra, dés lors, toujours taper le prénom... Je pense que l'utilisation de ComboBox ou de ListBox aurait été bien plus pratique pour ton cas.

Attention dans ton exemple tu as commencé la liste à la ligne 2 alors que le code indique de n'effectuer sa recherche qu'à partir de la ligne 10 : Set Plage = .Range("A10:A" & L). J'imagine que tu as envoyé ce fichier à titre d'exemple mais que l'original est correct.

À plus,

Robert

p.s. chapeau pour les commentaires du code, c'est sympa de prendre le temps d'expliquer aussi clairement...
 
R

Robert

Guest
Re Violaine, Salut Omicron,

Omicron, on se retrouve encore avec les même plans, c'est rigolo...

Violaine pour que ton exemple fonctionne il faut soit que tu commences la liste à la ligne 10 soit que tu modifies le code : Set Plage = .Range("A10:A" & L) par Set Plage = .Range("A3:A" & L).

À plus,

Robert
 

Discussions similaires

Réponses
12
Affichages
652

Statistiques des forums

Discussions
313 060
Messages
2 094 924
Membres
106 128
dernier inscrit
lopierre