Facturier

Résolu
cs_nanie13 Messages postés 25 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 26 décembre 2007 - 6 mars 2007 à 09:06
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Derniè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

3 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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]

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_nanie13 Messages postés 25 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 26 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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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)

@+: Ju£i?n
Pensez: Réponse acceptée
3
Rejoignez-nous