affichage d'un userform suite à une recherche

  • Initiateur de la discussion damien
  • Date de début
D

damien

Guest
bonjour à tous

serait'il possible que si la cellule "a1" égal un nom de la base qui se trouve en base il m'ouvre un userform avec le prenom qui se trouve en colonne B.

feuil2 colonne A les noms
feuil2 colonne B les prénoms

merci
damien
 

Pièces jointes

  • prenom.zip
    6.7 KB · Affichages: 30
  • prenom.zip
    6.7 KB · Affichages: 27
  • prenom.zip
    6.7 KB · Affichages: 29
@

@+Thierry

Guest
Bonjour Damien, le Forum

Je ne télécharge pas les fichiers (règles de sécurité du bureau) mais je me figure bien ton exemple.

Pour un exemple simple :
Un Classeur Vierge
En Feuil1 tu mets ce code en Private Module
En Feuil2 tu saisis des données de A1:B50

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Cell As Range
If Target.Address = "$A$1" Then

For Each Cell In Sheets("Feuil2").Range("A1:B50")
If UCase(Target.Text) = UCase(Cell.Text) Then
MsgBox "Matching " & Target.Value & " with " & Cell.Offset(0, 1)
End If
Next
End If
End Sub

En Feuil1 Cellule "A1", Tu saisis une des données figurant dans la colonne "A" de la Feuil2.

Tu devrais avoir un Message Box t'indiquant la valeur retournée. (Attention autant de message que de fois où la valeur sera trouvée en, colonne "A" de Feuil2.)

Il te suffira ensuite d'adapter ce code à un UserForm... Pour ce Faire je te suggère de Déclarer une Variable Public de Type String que tu déclareras en haut d'un module standard ("Module1" par exemple) voici la syntax :
Public TheMatch As String

Pour adapter ceci au code ci-dessus : tu remplaces la ligne "MsgBox..." par :
TheMatch = Cell.Offset(0, 1)
Et toujours dans le code du dessus tu ajoutes :
UserForm1.Show
Après le Next et Avant le End If


Et dans le Private Module du UserForm (imaginons que ce soit un TextBox)

Private Sub UserForm_Initialize()
TextBox1 = TheMatch
End Sub



Une démo assez complète sur un sujet assez similaire... :

=> Démo Téléchargeable USF_ListBox_A_La_Volee.zip (48k)

=> Le Fil de Discussion DEMO Userform ListBox éphémère / Créé de toute pièce à la Volée en VBA !! (qui rappellera des souvenirs à un certain petit lapin bleu !! lol)

Bonne Fin d'Aprèm
@+Thierry
 
M

michel

Guest
bonsoir Damien , bonsoir @+Thierry

merci pour ce bon souvenir ....effectivement c'etait ma premiere utilisation d'un tableau indexé séquentiellement ...;o)...
et j'avoue que j'ai eu beaucoup de mal à en comprendre le principe de fonctionnement


tres bonne soiree
michel
 
D

damien

Guest
re bonjour
merci à vous ça marche mais je voudrai que ça marche dans toute la colonne. A mon avis je doit remplacer ceci
If Target.Address = "$A$1" Then
mais par quoi

voici la totalité

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xlig As Byte

xlig = Range("a225").End(xlUp).Row + 1

Dim Plage As Range, Cell As Range
If Target.Address = "$A$1" Then

For Each Cell In Sheets("base").Range("A1:B50")
If UCase(Target.Text) = UCase(Cell.Text) Then
TheMatch = Cell.Offset(0, 1)

End If
Next
UserForm1.Show
End If
End Sub

merci encore

damien
 
@

@+Thierry

Guest
Bonsoir Damien, Michel , le Forum

Et oui Michel on évolue tous et toute sur XLD !

Pour Damien va d'urgence dans ce fil :

Lien supprimé
"Y - A - TOU - CE - QUI - FO" !

Moi je t'avais mis dans cet exemple $A$1 en application de ce que tu as demandé comme exemple. Mais dans le fil que j'ai fait au dessus tu trouveras ton bonheur, j'en suis certain !

PS I = Pour les déclarations de Dim, Conventionnellement on les groupe ensemble en début de Sub, on commence à les initialiser qu'ensuite...

PS II = Sur 225 cellules çà va encore mais si tu as besoin de traîter de plus grands tableaux, regarde ce fil d'aujourd'hui Lien supprimé mon post du 03-05-04 18:56, j'ai montre un exemple avec une "Array" qui va beaucoup plus vite...

Bonne Soirée
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
314 190
Messages
2 106 992
Membres
109 734
dernier inscrit
JoFco