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 :
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 :
Merci d'avance pour votre réponse
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