Recherche et ajout dans unserform

Nikky 74

XLDnaute Nouveau
Bonjour à tous. J'aurais deux petites questions pour mon userform sur lequel je fais la gestion d'une clientèle.

J'ai un userform clientèle qui contient trois onglet. Quand je saisi le début du nom et que je met rechercher, ça me ressort ma fiche cliente, pas de soucis. Seulement, j'aimerais aussi boir les produit qu'elle à acheté dans mon deuxième onglet. Mais il veut pas me les sortir. Voici mon code :

Code:
'Bouton Rechercher
Private Sub Rechercher_Click()
Dim l1 As Integer, l2 As Integer, ltxt0 As Integer
Dim i As Integer, txt0 As String, txt1 As String

'Effacer la listbox
ListBox1.Clear

'Lire le champ nom
'Adapter TextBox1.Text d'aprés ta Form
'tu peut entrer un nom partiel
'Ex: pour "dup" on recupere "DUPONT" "DUPIUS" "DUPALAIS"..
txt0 = Nom.Text

'longueur de la chaine à comparer
ltxt0 = Len(txt0)
'si la chaine est vide on ne fait rien
If ltxt0 = 0 Then Exit Sub

'on commence la recherche
Sheets("Clientes").Select
'l1 est le numéro de la ligne ou commence la recherche
l1 = 2 'par exemple

'on regarde ou se trouve la dernière ligne du tableau
ActiveCell.SpecialCells(xlLastCell).Select
l2 = ActiveCell.Row

'revient en haut du tableau
Range("A2").Select

'de la première à la dernière ligne
For i = l1 To l2
'placer le contenu de la cellule dans txt1
txt1 = Sheets("Clientes").Cells(i, 1).Text
'comparer en majuscules avec le nom cherché
If UCase(Left(txt1, ltxt0)) = UCase(txt0) Then
'si c'est bon on l'ajoute a la ListBox1
'je conserve en préfixe la valeur de la ligne ou il se trouve
txt1 = txt1 & " " & Sheets("Clientes").Cells(i, 2).Text ' on accole le prénom
ListBox1.AddItem (Str(i) & " : " & txt1)
End If
Next

'on regarde le contenu de ListBox1
Select Case ListBox1.ListCount
Case 0 ' vide
MsgBox "N'éxiste pas"

Case 1 ' un seul correspond
'lire l'enregistrement 0
txt1 = ListBox1.List(0)
'recuperer la n° de la ligne ou se trouve le nom dans le tableau
'c'est le préfixe que j'ai conservé plus haut
i = Val(txt1)
'lire les valeur de la ligne du taleau (Nom,Prenom...)
Nom.Value = Sheets("Clientes").Range("A" & i).Value
Prénom.Value = Sheets("Clientes").Range("B" & i).Value
Datedenaissance.Value = Sheets("Clientes").Range("C" & i).Value
Numérocliente.Value = Sheets("Clientes").Range("D" & i).Value
Adresse.Value = Sheets("Clientes").Range("E" & i).Value
Codepostal.Value = Sheets("Clientes").Range("F" & i).Value
Ville.Value = Sheets("Clientes").Range("G" & i).Value
Pays.Value = Sheets("Clientes").Range("H" & i).Value
Téléphone.Value = Sheets("Clientes").Range("I" & i).Value
Portable.Value = Sheets("Clientes").Range("J" & i).Value
email.Value = Sheets("Clientes").Range("K" & i).Value
Fournisseuraccès.Value = Sheets("Clientes").Range("L" & i).Value
Typedepeau.Value = Sheets("Clientes").Range("M" & i).Value
Taille.Value = Sheets("Clientes").Range("N" & i).Value
Poids.Value = Sheets("Clientes").Range("O" & i).Value
Commentaires.Value = Sheets("Clientes").Range("P" & i).Value

Date1.Value = Sheets("Soins effectués").Range("A" & i).Value
Référence1.Value = Sheets("Soins effectués").Range("B" & i).Value
Dénomination1.Value = Sheets("Soins effectués").Range("C" & i).Value
Type1.Value = Sheets("Soins effectués").Range("D" & i).Value
Esthéticienne1.Value = Sheets("Soins effectués").Range("G" & i).Value
Montant1.Value = Sheets("Soins effectués").Range("H" & i).Value

Case Else 'sinom montre la listbox pour faire un choix
ListBox1.AddItem (" 0 : Fermer la liste")
ListBox1.Visible = True
End Select

End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer, ind As Integer
Dim txt As String
'indice du choix
ind = ListBox1.ListIndex
'texte choisi
txt = ListBox1.List(ind)
'recuperer la n° de la ligne ou se trouve le nom dans le tableau
'c'est le préfixe que j'ai conservé plus haut
i = Val(txt)
'faire disparaire la listbox
ListBox1.Visible = False
'lire les valeur de la ligne du taleau (Nom,Prenom...)
Nom.Value = Sheets("Clientes").Range("A" & i).Value
Prénom.Value = Sheets("Clientes").Range("B" & i).Value
Datedenaissance.Value = Sheets("Clientes").Range("C" & i).Value
Numérocliente.Value = Sheets("Clientes").Range("D" & i).Value
Adresse.Value = Sheets("Clientes").Range("E" & i).Value
Codepostal.Value = Sheets("Clientes").Range("F" & i).Value
Ville.Value = Sheets("Clientes").Range("G" & i).Value
Pays.Value = Sheets("Clientes").Range("H" & i).Value
Téléphone.Value = Sheets("Clientes").Range("I" & i).Value
Portable.Value = Sheets("Clientes").Range("J" & i).Value
email.Value = Sheets("Clientes").Range("K" & i).Value
Fournisseuraccès.Value = Sheets("Clientes").Range("L" & i).Value
Typedepeau.Value = Sheets("Clientes").Range("M" & i).Value
Taille.Value = Sheets("Clientes").Range("N" & i).Value
Poids.Value = Sheets("Clientes").Range("O" & i).Value
Commentaires.Value = Sheets("Clientes").Range("P" & i).Value
End Sub

Ensuite, dans mon deuxième onglet, on saisi la vente des produits. Donc ça se présente de cette manière :



Y'a t'il une macro possible pour faire valider tous les boutons ok (il y en à d'autres, en fonction du nombre de produits achetés) au lieu de faire mon code comme ceci :

Code:
Private Sub Ok1_Click()

Dim Z As Integer
Z = Sheets("Soins effectués").Range("A65536").End(xlUp).Row + 1
    If Me.Référence1.Value = "" Then
        MsgBox "Il faut au moins mettre une référence !", vbCritical + vbOKOnly
    Exit Sub
    End If
        Sheets("Soins effectués").Range("A" & Z).Value = Date1.Value
        Sheets("Soins effectués").Range("B" & Z).Value = Numérocliente1.Value
        Sheets("Soins effectués").Range("C" & Z).Value = Référence1.Value
        Sheets("Soins effectués").Range("D" & Z).Value = Dénomination1.Value
        Sheets("Soins effectués").Range("E" & Z).Value = Type1.Value
        Sheets("Soins effectués").Range("G" & Z).Value = Séance1.Value
        Sheets("Soins effectués").Range("H" & Z).Value = Esthéticienne1.Value
        Sheets("Soins effectués").Range("I" & Z).Value = Montant1.Value

        MsgBox "Soin rajouté !", vbInformation + vbOKOnly
    Call Efface_Tout
End Sub

Merci d'avance pour votre réponse :)
 

Roland_M

XLDnaute Barbatruc
Re : Recherche et ajout dans unserform

bonjour, pas possible de valider tous en même temps vu les noms différents
mais tu peux raccourcir comme ceci !
Code:
Private Sub Ok1_Click()
If Me.Référence1.Value = "" Then
   MsgBox "Il faut au moins mettre une référence !", vbCritical + vbOKOnly: Exit Sub
End If
Dim Z As Integer
With Sheets("Soins effectués")
  Z = .Range("A65536").End(xlUp).Row + 1
 .Range("A" & Z) = Date1.Value
 .Range("B" & Z) = Numérocliente1.Value
 .Range("C" & Z) = Référence1.Value
 .Range("D" & Z) = Dénomination1.Value
 .Range("E" & Z) = Type1.Value
 .Range("G" & Z) = Séance1.Value
 .Range("H" & Z) = Esthéticienne1.Value
 .Range("I" & Z) = Montant1.Value
End With
MsgBox "Soin rajouté !", vbInformation + vbOKOnly
Call Efface_Tout
End Sub
Roland
 

Pierrot93

XLDnaute Barbatruc
Re : Recherche et ajout dans unserform

Bonsoir Nicky, ROland

Petite question idiote sans doute, mais pourquoi ne pas utiliser qu'un seul bouton OK, et qui validerait la totalité...

C'est juste un avis, je n'ais sans doute pas toutes les données du problème...

bonne soirée
@+
 

Nikky 74

XLDnaute Nouveau
Re : Recherche et ajout dans unserform

Parce que quand j'aurais mon bouton rechercher valider, les données s'inscriront dans les textbox... Et que un jour je peux acheter un produit et un autre jour 3 donc il faut pas que ça écrase les autre données ;) Puisque avant de rajouter un produit, il faut aller chercher la fiche cliente et donc voir les produits déjà acheté
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16