Fonction recherche en VBA

Padboll

XLDnaute Nouveau
Bonjour à tous. Dans le cadre de mes études, je suis amené à réaliser un projet qui consiste en la création d'un programme en VBA (avec formulaires, base de données et tout le bazar)

J'ai des difficultés à effectuer certaines opérations (il faut dire qu'on a été formés au langage assez rapidement). Bref j'en viens aux faits.

Je dispose d'une base de donnée clients sur la feuille "Particuliers" du classeur excel.
J'ai un formulaire avec 2 textbox dans lesquelles on peut écrire soit le nom du client ("Nom") soit le numéro du client("Numero") (est-il possible de n'entrer que des chiffres ?), une listbox("liste") dans laquelle je veux afficher les résultats et 3 boutons, un pour lancer la recherche une fois le nom saisi, un pour afficher un nouveau formulaire une fois le nom choisi et un autre pour revenir en arrière (pas important ici)

Voici le début de mon code quand je clique sur le bouton rechercher


Private Sub CommandButton3_Click()

Sheets("Particuliers").Select

Dim client As Variant, nombre As String

liste.Clear

If Nom.Text = "" And Numero.Text = "" Then
MsgBox "Veuillez entrer un nom ou un numéro de client"
Else: Nom.Text = client And Numero.Text = nombre
End If

If client <> "" Or nombre <> "" Then
'liste.rowsource= ???


End Sub


Ce que je voudrais faire c'est afficher dans la list box le nom et le prénom du client situés dans 2 colonnes différentes sur la feuille excel dans la listbox ou le nom et le prénom correspondant au numéro du client.
J'ai déjà essayé de trouver des codes avec la fonction .Find mais je ne comprends pas comment elle fonctionne et le code est faux.
D'ailleurs, j'ai l'impression qu'on ne peut pas mettre le résultat de 2 colonnes différentes dans une listbox. Je me trompe ?

J'espère avoir été assez précis dans mes explications...
 

Gorfael

XLDnaute Barbatruc
Re : Fonction recherche en VBA

Salut Padboll et le forum
il faut dire qu'on a été formés au langage assez rapidement
Ça ne sert pas à grand chose de passer des heures sur un langage dont tu n'utiliseras qu'une petite partie.

Quand tu demandes l'aide, soit le plus précis possible : Nom prénom dans deux colonnes... pourquoi ne pas les donner précisemment ? à partir des données que tu fournis, on peut t'aider à manipuler le langage et comme tu sais ce que tu as donné, tu peux comprendre ce que fait la macro et adapter ton code à ce que tu veux.

Utilises les balises de Code (#). On sait que c'est du code, et les indentation reste.

Si tu commences, penses à renommer tes contrôles, avant de les utiliser : avec 3 ça va, mais si tu en as 50, savoir ce que doit contenir TextBox22 et plus difficile que TB_Nom.

Élimine au maximum les Select/Selection/ActiveCell : servent rarement à autre chose qu'à ralentir ton code et si tu as une macro auto "WorkSheet_SelectionChange" ça risque de ne pas être triste le résultat.

Les déclarations de variables se font en tête de macro. N'utiliser le type Variant (valeur par défaut) que si c'est réellement nécessaire.
Code:
Private Sub CommandButton3_Click()
'Déclaration =======================
Dim Client, Nombre As String
Dim Cel As Range
'MEI ===============================
Sheets("Particuliers").Select 'Bof
Me.liste.Clear
'Recherche données =================
If Me.Nom = "" And Me.Numero = "" Then
    MsgBox "Veuillez entrer un nom ou un numéro de client"
    Exit Sub
End If
If Me.Numero = "" Then
'si c'est par le nom (Numéro=""=>Nom<>"") alors
'
'????????????
End Sub
Peux pas aller plus loin, parce que je ne sais pas ce qu'il faut faire.
Juste une idée comme ça : tu as une textBox que tu renseignes par le nom, avant de rechercher à partir de cette valeur. Donc, tu n'as pas deux clients de même nom :D. Moi, je penses qu'il peut exister des homonymes, et dans ce cas, il faudrait au moins le prénom. En général, moi je préfére travailler par ComboBox, contenant Nom et Prénom, ce qui évite les fautes d'orthographes, les doubles espaces en séparation "nom prénom" les problèmes de majuscules/miniscules, accents, etc...
A+

Nota : Excel fait toujours ce qu'on lui demande de réaliser et quelques fois ce que l'on veut
 

Discussions similaires

Réponses
5
Affichages
332

Statistiques des forums

Discussions
311 721
Messages
2 081 927
Membres
101 842
dernier inscrit
seb0390