cs_nanie13
Messages postés25Date d'inscriptionmercredi 28 février 2007StatutMembreDernière intervention26 décembre 2007
-
6 mars 2007 à 09:06
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
8 mars 2007 à 09:10
Bonjour, je viens de terminer un facturier sous excel. Tout fonctionne normalement.
Pourriez vous m'aider à finaliser ce facturier s'il vous plait ?
En effet, je souhaiterais récupérer les données pour une nouvelle facture d'un client déjà enregistré, mais voilà je ne sais pas comment le faire ?
Merci par avance.
Sub Clients()
MaFeuille = InputBox("Entrez le numéro de la facture :")
Sheets(MaFeuille).Select
IMPORTANT = MsgBox("Est-ce un nouveau client ?", vbYesNo + vbQuestion, "question")
If IMPORTANT = vbYes Then
' Réponse oui : nouveau client
' Variable
Dim nom As String
Dim adresse1 As String
Dim adresse2 As String
Dim cp As String
Dim ville As String
Dim téléphone As String
' Message
nom = InputBox("saisir nom du client")
adresse1 = InputBox("saisir la 1ère ligne de l'adresse")
adresse2 = InputBox("saisir la 2ème ligne de l'adresse")
code_postal = InputBox("saisir code postal")
ville = InputBox("saisir ville")
téléphone = InputBox("saisir téléphone")
' Insere dans la feuille clients
Sheets("CLIENTS").Rows(3).Insert
Sheets("CLIENTS").Range("a3") = nom
Sheets("CLIENTS").Range("b3") = adresse1
Sheets("CLIENTS").Range("c3") = adresse2
Sheets("CLIENTS").Range("d3") = code_postal
Sheets("CLIENTS").Range("e3") = ville
Sheets("CLIENTS").Range("f3") = téléphone
' Insere dans la feuille facture
Sheets("MaFeuille").Range("D13") = nom
Sheets("MaFeuille").Range("D14") = adresse1
Sheets("MaFeuille").Range("D15") = adresse2
Sheets("MaFeuille").Range("D16") = code_postal
Sheets("MaFeuille").Range("F16") = ville
Sheets("MaFeuille").Range("D18") = téléphone
Else
' Réponse non : client déjà enregistré
Sheets("CLIENTS").Select
Columns("A:A").Select
End If
End Sub
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 6 mars 2007 à 10:02
Salut,
Tiens voila ce que je te propose. j'espère que cela t'aidera.
Sub Clients()
Dim Nom As String
Dim Adresse1 As String
Dim Adresse2 As String
Dim CodePostal As String
Dim Ville As String
Dim Tel As String
Dim MaFeuille As String
Dim IMPORTANT As VbMsgBoxResult
MaFeuille = InputBox("Entrez le numéro de la facture :")
Sheets(MaFeuille).Select
Nom = InputBox("Saisir nom du client")
IMPORTANT = MsgBox("Est-ce un nouveau client ?", vbYesNo + vbQuestion, "question")
If IMPORTANT = vbYes Then
' Réponse oui : nouveau client
'Rempli le reste des données
Adresse1 = InputBox("saisir la 1ère ligne de l'adresse")
Adresse2 = InputBox("saisir la 2ème ligne de l'adresse")
CodePostal = InputBox("saisir code postal")
Ville = InputBox("saisir ville")
Tel = InputBox("saisir téléphone")
' Insere dans la feuille clients
Sheets("CLIENTS").Rows(3).Insert
Sheets("CLIENTS").Range("A3").Value = Nom
Sheets("CLIENTS").Range("B3").Value = Adresse1
Sheets("CLIENTS").Range("C3").Value = Adresse2
Sheets("CLIENTS").Range("D3").Value = CodePostal
Sheets("CLIENTS").Range("E3").Value = Ville
Sheets("CLIENTS").Range("F3").Value = Tel
Else
' Réponse non : client déjà enregistré => on appel la fonction de recherche
If Not GetDonneesClient(Nom, Adresse1, Adresse2, CodePostal, Ville, Tel) Then
Call MsgBox("Ce client n'a pas été trouve", vbCritical Or vbOKOnly, "Erreur")
'Le client n'a pas été trouve on sort de la routine
Exit Sub
End If
End If
' Insere dans la feuille facture
Sheets(MaFeuille).Select
Sheets(MaFeuille).Range("D13").Value = Nom
Sheets(MaFeuille).Range("D14").Value = Adresse1
Sheets(MaFeuille).Range("D15").Value = Adresse2
Sheets(MaFeuille).Range("D16").Value = CodePostal
Sheets(MaFeuille).Range("F16").Value = Ville
Sheets(MaFeuille).Range("D18").Value = Tel
End Sub<hr />
Public Function GetDonneesClient(ByRef NomClient As String, ByRef Adresse1 As String, ByRef Adresse2 As String, _
ByRef CodePostal As String, ByRef Ville As String, ByRef Tel As String) As Boolean
Dim NumLigne As Long
Dim Wb As Worksheet
On Error GoTo HandleError
Set Wb = ActiveWorkbook.Worksheets("CLIENTS")
'Selectionne la feuille Clients
Wb.Select
'Sélectionne la colonne A
Wb.Columns("A:A").Select
'recherche SANS sensibilité a la casse, le nom du client
'Attention si plusieurs clients avec le meme nom ce sont les
'données du premier trouvé qui sont retournées
'Récupérration du nuléro de ligne
NumLigne = Selection.Find(NomClient, ActiveCell, xlFormulas, xlPart, xlByRows, xlNext, False).Row
'Flag pour retourner TRUE si le client est trouvé
GetDonneesClient = True
'Récupération de données client
Adresse1 = Wb.Range("B" & NumLigne).Value
Adresse2 = Wb.Range("C" & NumLigne).Value
CodePostal = Wb.Range("D" & NumLigne).Value
Ville = Wb.Range("E" & NumLigne).Value
Tel = Wb.Range("F" & NumLigne).Value
Exit Function
HandleError:
End Function , ----
[code.aspx?ID=41455 By Renfield]
cs_nanie13
Messages postés25Date d'inscriptionmercredi 28 février 2007StatutMembreDernière intervention26 décembre 2007 8 mars 2007 à 08:01
Bonjour, tout fonctionne.
Je souhaiterais un petit plus :
Exemple :
Nom base de données : Mr GROS Daniel
Nom recherché : GROS
Comment copier sur la facture Mr GROS Daniel
Toutes les autres lignes se copient normalement, sauf le nom qui reprend le nom indiqué lors de la recherche.
Merci pour votre aide
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 8 mars 2007 à 09:10
Salut,
Je pense qu'en cherchant tu aurais pu trouver un peu.
Il faut modifier GetDonneesClient de la facon suivante.
Public Function GetDonneesClient(ByRef NomClient As String, ByRef Adresse1 As String, ByRef Adresse2 As String, _
ByRef CodePostal As String, ByRef Ville As String, ByRef Tel As String) As Boolean
Dim NumLigne As Long
Dim Wb As Worksheet
On Error GoTo HandleError
Set Wb = ActiveWorkbook.Worksheets("CLIENTS")
'Selectionne la feuille Clients
Wb.Select
'Sélectionne la colonne A
Wb.Columns("A:A").Select
'recherche SANS sensibilité a la casse, le nom du client
'Attention si plusieurs clients avec le meme nom ce sont les
'données du premier trouvé qui sont retournées
'Récupérration du nuléro de ligne
NumLigne = Selection.Find(NomClient, ActiveCell, xlFormulas, xlPart, xlByRows, xlNext, False).Row
'Flag pour retourner TRUE si le client est trouvé
GetDonneesClient = True
'Récupération de données client
'récuperation de la totalité de la cellule du nom
NomClient = Wb.Range("A" & NumLigne).Value
Adresse1 = Wb.Range("B" & NumLigne).Value
Adresse2 = Wb.Range("C" & NumLigne).Value
CodePostal = Wb.Range("D" & NumLigne).Value
Ville = Wb.Range("E" & NumLigne).Value
Tel = Wb.Range("F" & NumLigne).Value
Exit Function
HandleError:
End Function , ----
[code.aspx?ID=41455 By Renfield]
Pense au moins a appuyer sur réponse acceptée sur le ou les post qui aurotn pu t'aider à avancer (si tu estime ton problème résolu bien entendu)