Rechercher dans ce blog

Nombre total de pages vues (en milliers)

BASE DE GESTION (DEVIS, FACTURE, BDD CLIENTS, BDD PRODUITS, SUIVI)

EN COURS......

Ce tutoriel  s'adresse à qui veut développer en interne une base de gestion simple à savoir  :

CHAPITRE I :
* Gestion d'une base de données clients :
               - similaire à celle développée dans le tuto "Créer mon formulaire".

CHAPITRE II :
* Gestion d'une base de données produits :
               - désignation des articles ou produits,
               - prix d'achat, coefficent de revente, prix de vent Hors Taxe.

CHAPITRE III :
* Gestion des devis :
               - exemple approprié
               - remplissage semi-automatique

CHAPITRE IV :
* Gestion des factures :
               - exemple approprié
               - remplissage semi-automatique

CHAPITRE V :
* Gestion du suivi des devis et des factures :
               - tableaux avec numérotation
               - suivis des échéances etc.

CHAPITRE VI :
* Formulaire ACCUEIL
* Archivages et  Recherche  des devis et factures.


L'ensemble des explications sera modulable en fonction de votre besoin et de la compréhension du présent tutoriel.

Donc allons-y  et bon courage !!!
(Cela va être long, mais le résultat sera à la hauteur de vos attentes).


CHAPITRE I - GESTION DE LA BASE CLIENTS

DEUX  FORMULAIRES à créer :
* GESTION CLIENTS    (A_GESTION_CLIENT) 
* NOUVEAU CLIENT    (A_NOUVEAU_CLIENT) 

Dans un premier temps téléchargez le fichier ci-joint (on va gagner du temps) : CLIENTS.xls

Renommez ce fichier BASE DE GESTION tout en conservant le nom de l'onglet  CLIENTS


1.1.- INSERTION du FORMULAIRE  "GESTION CLIENTS"

Maintenant insérez un Userform et insérez dans celui-ci :

* Une ComboBox
* Six TextBox
* Trois CommandButton
* Sept Label

avec la Boîte à outils :


Nommez vos Label respectivement dans Caption : 
* Nom & prénoms => Label1
* Adresse => Label2
* Code Postal => Label3
* Ville => Label4
* N° de téléphone => Label5
* Adresse e-mail => Label6
* N° de TVA => Label7



Nommez vos CommandButton respectivement  dans Caption:
* MODIFIER => CommandButton2 
* NOUVEAU CLIENT => CommandButton3 
* QUITTER  => CommandButton1


Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_GESTION_CLIENT
2) dans Caption nommez  GESTION CLIENTS

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts.

Vous remarquerez que j'ai volontairement rayer une CommandButton et que je ne vous ai pas indiquer de la placer nous reviendrons plus tard sur ce point.

Nous allons maintenant programmer cet UserForm que vous avez nommé A_GESTION_CLIENT

Sélectionnez A_GESTION_CLIENT
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_GESTION_CLIENT  *****
Option Explicit
Dim Ws As Worksheet


'***** Correspond au programme du FORMULAIRE à son ouverture *****
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer

Set Ws = Sheets("CLIENTS") 'Attention ce nom doit correspondre au nom de votre ONGLET ici "CLIENTS"
 

With Me.ComboBox1 'Programme pour alimenter la liste déroulante avec les données de la colonne A de l'onglet CLIENTS
    For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
      .AddItem Ws.Range("A" & J)
    Next J
End With
   

For I = 1 To 6
    Me.Controls("TextBox" & I).Visible = True
'affiche les données dans les textbox
Next I

End Sub

'***** Correspond au programme de la liste déroulante *****
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer




Sheets("CLIENTS").Activate 'Active l'onglet "CLIENTS"
 
   If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox1.ListIndex + 2
  For I = 1 To 6
    Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
  Next I
End Sub


'***** Correspond au programme du bouton MODIFIER *****
Private Sub CommandButton2_Click()
Sheets("CLIENTS").Activate
'Active l'onglet "CLIENTS"

If MsgBox("Etes-vous certain de vouloir modifier ce client ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim Ligne As Long
Dim I As Integer
  If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox1.ListIndex + 2
  For I = 1 To 6
    If Me.Controls("TextBox" & I).Visible = True Then
      Ws.Cells(Ligne, I + 1) = Me.Controls("TextBox" & I)
    End If
  Next I
    End If
End Sub



'**** Correspond au programme du bouton "QUITTER" *****
Private Sub CommandButton1_Click()
Unload Me
End Sub


'**** Correspond au programme du bouton "NOUVEAU CLIENT" *****
Private Sub CommandButton3_Click()
Sheets("CLIENTS").Select
Unload Me
A_NOUVEAU_CLIENT.Show
End Sub


'Fin  ***** Code de programmation de l'Userform A_GESTION_CLIENT  *****


Donc à ce stade si vous sélectionnez A_GESTION_CLIENT  et que vous appuyez sur la touche F5
le formulaire va s'ouvrir et vous pouvez déjà
a) sélectionner un nom via la liste déroulante et alimenter le formulaire en fonction de votre choix,
b)  modifier ce client,
c) et quitter le formulaire.
d) le bouton NOUVEAU CLIENT ne fonctionne pas car nous n'avons pas créer cet UserForm


1.2.- INSERTION du FORMULAIRE  "NOUVEAU CLIENTS"

Insérez un Userform et insérez dans celui-ci :

* Sept TextBox
* Deux CommandButton
* Sept Label

Nommez vos Label respectivement dans Caption :

* Nom & prénoms => Label1
* Adresse => Label2
* Code Postal => Label3
* Ville => Label4
* N° de téléphone => Label5
* Adresse e-mail => Label6
* N° de TVA => Label7

Nommez vos CommandButton respectivement  dans Caption:

* INSERTION NOUVEAU CLIENT => CommandButton1
* RETOUR CREATION DEVIS   => CommandButton2


Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_NOUVEAU_CLIENT
2) dans Caption nommez  NOUVEAU CLIENT

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléments


Nous allons maintenant programmer cet UserForm que vous avez nommé A_NOUVEAU_CLIENT

Sélectionnez A_NOUVEAU_CLIENT
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_NOUVEAU_CLIENT  *****

'***** Correspond au programme du bouton "INSERER NOUVEAU CONTACT*****
Private Sub CommandButton1_Click()
Dim L As Integer
Sheets("CLIENTS").Activate
If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Sheets("CLIENTS").Range("a65536").End(xlUp).Row + 1
'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("A" & L).Value = TextBox1
'Insère la donnée de la textbox1 dans la colonne A
Range("B" & L).Value = TextBox2
'Insère la donnée de la textbox2 dans la colonne B
'et à suivre....

Range("C" & L).Value = TextBox3
Range("D" & L).Value = TextBox4
Range("E" & L).Value = TextBox5
Range("F" & L).Value = TextBox6
Range("G" & L).Value = TextBox7
End If
MsgBox ("Coordonnées clients inscrits dans base CLIENTS")
'Vous informe que le présent contact est insérer dans votre tableau Excel.
End Sub


'***** Correspond au programme de la TextBox3  *****
'***** ne permettant que la saisie numérique          *****
Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(KeyAscii)) = 0 Then
    KeyAscii = 0
    TextBox3.ControlTipText = "Uniquement des chiffres, svp !"
End If
End Sub


'***** Correspond au programme de la TextBox5  *****
'***** permettant  la saisie semi-automatique du numéro de téléphone          *****
Private Sub TextBox5_Change()
'exemple pour format Téléphone xx.xx.xx.xx.xx

Dim Texte As String
TextBox5.MaxLength = 14
'nb caracteres maxi dans textbox

Texte = TextBox5.Text
Select Case Len(Texte)
Case 2, 5, 8, 11
Texte = Texte & "."
' Choix du point entre les chiffres... on peut y mettre par exemple soit "/" soit "-" tout simplement un vide " "
End Select
TextBox5.Text = Texte
End Sub



'***** Correspond au programme du bouton "RETOUR CRÉATION DEVIS*****
 
Private Sub CommandButton2_Click()
Unload Me
A_GESTION_CLIENT.CommandButton2.Visible = False
A_GESTION_CLIENT.CommandButton3.Visible = False
A_GESTION_CLIENT.Show
End Sub


'Fin ***** Code de programmation de l'Userform A_GESTION_CLIENT  *****




CHAPITRE II - GESTION DE LA BASE DE DONNEES PRODUITS

QUATRE  FORMULAIRES à créer :
* NOUVEAU PRODUIT                   (A_NOUVEAU_PRODUIT) 
* MODIFICATION DE PRODUIT (A_MODIFICATION_PRODUIT) 
* CHOIX PRODUIT                           (A_CHOIX_PRODUIT) 
* Descriptif produit à insérer       (A_INSERT_PRODUIT



Téléchargez le fichier ci-joint
BDD.xls

Ouvrez-le et déplacer l'onglet BDD  dans votre fichier ouvert BASE DE GESTION à la suite de l'onglet CLIENTS


2.1.- INSERTION du FORMULAIRE  "NOUVEAU PRODUIT"

Maintenant insérez un Userform et insérez dans celui-ci :

* Deux ComboBox
* Quatre TextBox
* Deux CommandButton
* Un Frame
* Neuf  Label

Nommez vos Label respectivement dans Caption :

* Choix suivant équipement existant => Label1
* OU => Label2
* Saisie manuelle  => Label3
* DESIGNATION => Label4
* ARTICLE  => Label5
* PRIX HT => Label6
* COEFF. REVENTE => Label7
* Prix de vente HT : => Label9

* le Label8  pas ne nomination.

Nommez vos CommandButton  respectivement dans Caption :
* INSERER NOUVEAU PRODUIT => CommandButton1
* QUITTER => CommandButton2

Nommez votre Frame dans Caption :
* EQUIPEMENT


Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_NOUVEAU_PRODUIT
2) dans Caption nommez  NOUVEAU PRODUIT

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts



Nous allons maintenant programmer cet UserForm que vous avez nommé A_NOUVEAU_PRODUIT

Sélectionnez A_NOUVEAU_PRODUIT
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_NOUVEAU_PRODUIT  *****

Option Explicit
Dim Ws As Worksheet
Dim NbLignes As Integer


'***** Correspond au programme du FORMULAIRE à son ouverture *****

Private Sub UserForm_Initialize()
Dim I As Integer

Set Ws = Worksheets("BDD")


'Alimentation de la Combobox1 "Coeff. REVENTE" - Eléments se trouvant dans la colonne E
For I = 2 To Ws.Range("E65536").End(xlUp).Row
ComboBox1 = Ws.Range("E" & I)
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Ws.Range("E" & I)
Next I
Me.ComboBox1.List = ListSort(Me.ComboBox1.List) 
'Attention définir le programme ListSort dans un module - voir à la fin de la programmation de cet Userform.

'Alimentation de la Combobox2 "EQUIPEMENT" - Eléments se trouvant dans la colonne A
 For I = 2 To Ws.Range("A65536").End(xlUp).Row
ComboBox2 = Ws.Range("A" & I)
If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Ws.Range("A" & I)
Next I
Me.ComboBox2.List = ListSort(Me.ComboBox2.List)
End Sub



'**** Correspond au programme du bouton "QUITTER" *****
 Private Sub CommandButton2_Click()
Unload Me
End Sub


'***** Correspond au programme du bouton "INSERER NOUVEAU PRODUIT"  *****
Private Sub CommandButton1_Click()
Dim L As Integer

If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau produit ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Sheets("BDD").Range("a65536").End(xlUp).Row + 1
'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("A" & L).Value = TextBox1
'Insère la donnée de la liste déroulante dans la colonne A
Range("B" & L).Value = TextBox2
'Insère la donnée de la textbox1 dans la colonne B
'et à suivre....

Range("C" & L).Value = TextBox3
Range("D" & L).Value = TextBox4
Range("E" & L).Value = ComboBox1
Range("F" & L).Value = Label8
End If
End Sub


'***** Correspond au programme de la liste déroulante "Choix suivant équipement existant"   *****
Private Sub ComboBox2_Change()
TextBox1 = ComboBox2  'Dès sélection validée, la Textbox1 se met à jour
End Sub


'***** Correspond au programme de la liste déroulante "COEFF. REVENTE"   *****
Private Sub Combobox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'met à jour le Label7 après sortie de la texbox4
Label7 = CDec(TextBox4) * CDec(ComboBox1)
End Sub


'***** Correspond au programme de la TextBox4 "PRIX HT"   *****
'***** Force la saisie numérique et accepte le signe moins et la virgule   *****
Private Sub Textbox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub


'FIN ***** Code de programmation de l'Userform A_NOUVEAU_PRODUIT  *****

'***** Correspond au programme ListSort   *****
ATTENTION - Ajouter le code suivant dans un module standard :

       Function ListSort(liSte)
        '  Code pour trier le tableau de la liste dans l'ordre croissant
        Dim First As Integer, Last As Integer
       Dim I As Integer, J As Integer
       Dim Temp

       First = LBound(liSte)
       Last = UBound(liSte)
       For I = First To Last - 1
       For J = I + 1 To Last
       If liSte(I, 0) > liSte(J, 0) Then
        Temp = liSte(J, 0)
         liSte(J, 0) = liSte(I, 0)
         liSte(I, 0) = Temp
      End If
      Next J
      Next I
      ListSort = liSte
      End Function




2.2.- INSERTION du FORMULAIRE  "MODIFICATION PRODUIT"

Maintenant insérez un Userform et insérez dans celui-ci :

* Deux ComboBox
* Six TextBox
* Deux CommandButton
* Deux Frame
* Huit  Label

Nommez vos CommandButton  respectivement dans Caption :
* MODIFIER => CommandButton1 
* QUITTER => CommandButton2


Nommez vos Label respectivement dans Caption :
* Equipement => Label1
* Désignation=> Label2
* Article=> Label3
* Prix HT=> Label4
* Coefficient revente => Label5
* Prix de vente HT : => Label6
* Equipement => Label7
* DESIGNATION=> Label8

Nommez votre Frame dans Caption :
* RECHERCHE PRODUIT => Frame1 
* A modifier si nécessaire => Frame2



Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_MODIFICATION_PRODUIT
2) dans Caption nommez  MODIFICATION PRODUIT

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts :

Nous allons maintenant programmer cet UserForm que vous avez nommé A_MODIFICATION_PRODUIT

Sélectionnez A_MODIFICATION_PRODUIT
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_MODIFICATION_PRODUIT  *****

Option Explicit

Dim Ws As Worksheet
Dim NbLignes As Integer


'***** Correspond au programme du FORMULAIRE à son ouverture *****
 
Private Sub UserForm_Initialize()
    Set Ws = Worksheets("BDD")
    NbLignes = Ws.Range("A65536").End(xlUp).Row
   
    With Me.ComboBox2
      .ColumnCount = 2
      .ColumnWidths = "-1;0"
    End With
   
   InitCombo1
'Lance de programme InitCombo

 
End Sub


'***** Correspond au programme de la liste déroulante "Equipement"   *****
Private Sub Combobox1_CHANGE()
Dim J As Long

  Nettoyage
'Lance le programme Nettoyage
 
  Me.ComboBox2.Clear
'Efface les données de la combobox2
  If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  With Me.ComboBox2
    For J = 2 To NbLignes
      If Ws.Range("A" & J) = Me.ComboBox1 Then
        .AddItem Ws.Range("B" & J)
        .List(.ListCount - 1, 1) = J
      End If
    Next J
  End With
  End Sub


'***** Correspond au programme de la liste déroulante "Désignation"   *****
Private Sub ComboBox2_Change()
Dim Ligne As Long
Dim I As Integer

  Nettoyage
'Lance le programme Nettoyage


  If Me.ComboBox2.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
  For I = 1 To 4
    Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
  Next I




For I = 5 To 6
    Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I - 4)
  Next I
 

End Sub


'***** Correspond au programme du bouton "MODIFIER"  *****
Private Sub CommandButton1_Click()
If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim Ligne As Long
Dim I As Integer
 
  If Me.ComboBox2.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
    For I = 1 To 4
      If Me.Controls("TextBox" & I).Visible = True Then
      Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
      End If
    Next I


   For I = 5 To 6
      If Me.Controls("TextBox" & I).Visible = True Then
      Ws.Cells(Ligne, I - 4) = Me.Controls("TextBox" & I)
      End If
    Next I


   End If
End Sub


'***** Correspond au programme du bouton "QUITTER"  *****
Private Sub CommandButton2_Click()
Unload Me
End Sub


'***** Correspond au programme de la textbox3  *****
Private Sub Textbox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)

'
met à jour la Textbox4 après sortie de la texbox3
TextBox4 = CDec(TextBox2) * CDec(TextBox3)
End Sub


'***** Correspond au programme  de remplissage de la Combobox1"  *****
Sub InitCombobox1()
Dim J As Long
Dim Mondico As Object

  Set Mondico = CreateObject("Scripting.dictionary")
  For J = 2 To NbLignes
    Mondico(Ws.Range("A" & J).Value) = ""
  Next J
  With Me.ComboBox1
    .Clear
    If Mondico.Count > 0 Then
      .List = Application.Transpose(Mondico.keys)
    End If
  End With
End Sub


'*****  Programmation de Nettoyage en effaçant les données de toutes les textbox du formulaire" *****
Sub Nettoyage()
Dim I As Integer
  For I = 1 To 6
    Me.Controls("TextBox" & I) = ""
  Next I
End Sub


'FIN ***** Code de programmation de l'Userform A_MODIFICATION_PRODUIT  *****



2.3.- INSERTION du FORMULAIRE  "CHOIX PRODUIT"

Maintenant insérez un Userform et insérez dans celui-ci :

* Trois ComboBox
* Dix TextBox
* Cinq CommandButton
* Deux Frame
* Quatre  Label

Nommez vos CommandButton  respectivement dans Caption :
* INSERER PRODUIT dans DEVIS ou FACTURE => CommandButton1 
* MODIFIER => CommandButton2

* CREER un NOUVEAU PRODUIT => CommandButton 3

* SUIVI DEVIS => CommandButton 4
* SUIVI FACTURES => CommandButton5


Nommez vos Label respectivement dans Caption :
* Equipement => Label1
* Désignation => Label2
* Article => Label3
* Prix  HT => Label4

* Coeff. revente => Label5
* Prix de revente HT => Label6

Nommez les Frame dans Caption :
* GESTION PRODUITS => Frame1 
* QUITTER (choix suivi DEVIS ou FACTURES) => Frame2



Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_CHOIX_PRODUIT
2) dans Caption nommez  CHOIX PRODUIT

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts :



Nous allons maintenant programmer cet UserForm que vous avez nommé A_CHOIX_PRODUIT

Sélectionnez A_CHOIX_PRODUIT
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_CHOIX_PRODUIT  *****

Option Explicit
Dim Ws As Worksheet
Dim NbLignes As Integer


'***** Correspond au programme du FORMULAIRE à son ouverture *****

Private Sub UserForm_Initialize()
    Set Ws = Worksheets("BDD")
    NbLignes = Ws.Range("A65536").End(xlUp).Row
   
    With Me.ComboBox2
      .ColumnCount = 2
      .ColumnWidths = "-1;0"
    End With
   
   InitCombo1 'Lance le programme InitCombo1

 

 Dim I As Integer
For I = 2 To Ws.Range("E65536").End(xlUp).Row
ComboBox3 = Ws.Range("E" & I)
If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Ws.Range("E" & I)
Next I
Me.ComboBox3.List = ListSort(Me.ComboBox3.List)
End Sub


'***** Correspond au programme de la liste déroulante "Equipement"   ***** 
Private Sub Combobox1_Change()
Dim J As Long


  Nettoyage 'Lance le programme Nettoyage
 
  Me.ComboBox2.Clear
'Efface les données de la combobox2
  If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  With Me.ComboBox2
    For J = 2 To NbLignes
      If Ws.Range("A" & J) = Me.ComboBox1 Then
        .AddItem Ws.Range("B" & J)
        .List(.ListCount - 1, 1) = J
      End If
    Next J
  End With
  TextBox5 = ComboBox1 'remplit la texbox5
End Sub


'***** Correspond au programme de la liste déroulante "Designation"   *****

Private Sub ComboBox2_Change()
Dim Ligne As Long
Dim I As Integer

  Nettoyage 'Lance le programme Nettoyage
  If Me.ComboBox2.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
  For I = 1 To 4
    Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
  Next I
 
  TextBox6 = ComboBox2 'remplit la texbox6
  TextBox7 = TextBox1
  TextBox8 = TextBox2
  ComboBox3 = TextBox3
  TextBox9 = TextBox3
  TextBox10 = TextBox4
End Sub



'* Correspond au programme de la liste déroulante  dans le Frame GESTION PRODUITS   **

Private Sub ComboBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox10 = CDec(TextBox8) * CDec(ComboBox3)
TextBox9 = ComboBox3
End Sub


'***** Correspond au programme du bouton "INSERER PRODUIT ... FACTURE"  *****

Private Sub CommandButton1_Click()
A_INSERT_PRODUIT.Label1 = ComboBox2.Value
A_INSERT_PRODUIT.Label2 = TextBox1.Value
A_INSERT_PRODUIT.Label3 = TextBox4.Value
Unload Me
A_INSERT_PRODUIT.Show vbModeless
End Sub


'***** Correspond au programme du bouton "MODIFIER"  *****

Private Sub CommandButton2_Click()
If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim Ligne As Long
Dim I As Integer
 
  If Me.ComboBox2.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
    For I = 5 To 10
      If Me.Controls("TextBox" & I).Visible = True Then
      Ws.Cells(Ligne, I - 4) = Me.Controls("TextBox" & I)
      End If
    Next I
   End If
End Sub


'***** Correspond au programme du bouton "CREER un NOUVEAU PRODUIT"  *****

Private Sub CommandButton3_Click()
A_NOUVEAU_PRODUIT.ComboBox1 = ""
A_NOUVEAU_PRODUIT.Show
Unload Me
End Sub


'***** Correspond au programme du bouton "SUIVI DEVIS"  *****

Private Sub CommandButton4_Click()
Unload Me
A_RECAP_SUIVI_DEVIS.Show
End Sub


'***** Correspond au programme du bouton "SUIVI FACTURES"  *****

Private Sub CommandButton5_Click()
Unload Me
A_RECAP_SUIVI_FACTURES.Show
End Sub




'***** Programmation liée à la TextBox8"  *****

Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'met à jour la texbox 10 après sortie de la texbox8
TextBox10 = CDec(TextBox8) * CDec(TextBox9)
End Sub


'***** Correspond au programme du InitCombo *****

Sub InitCombo1()
Dim J As Long
Dim Mondico As Object

  Set Mondico = CreateObject("Scripting.dictionary")
  For J = 2 To NbLignes
    Mondico(Ws.Range("A" & J).Value) = ""
  Next J
  With Me.ComboBox1
    .Clear
    If Mondico.Count > 0 Then
      .List = Application.Transpose(Mondico.keys)
    End If
  End With
End Sub


'Programmation de Nettoyage en effaçant les données de toutes les textbox
Sub Nettoyage()
Dim I As Integer
  For I = 1 To 4
    Me.Controls("TextBox" & I) = ""
  Next I
End Sub


'Fin  ***** Code de programmation de l'Userform A_CHOIX_PRODUIT  *****


2.4.- INSERTION du FORMULAIRE  "Descriptif produit à insérer"

Insérer un nouvel Onglet et nommez le  DETAILS
Dans la colonne A de cet onglet listez vos différents taux de TVA


Maintenant insérez un Userform et insérez dans celui-ci :

* Une ComboBox
* Une TextBox
* Un CommandButton

* Huit  Label

Nommez la CommandButton  respectivement dans Caption :
* INSERER PRODUIT  => CommandButton1 

Nommez vos Label respectivement dans Caption :
* Quantité  => Label4
* % TVA :  => Label5
* Désination :  => Label6
* Article :  => Label7
* Prix de de vente HT :  => Label8

Sans nom dans Caption pour le Label1, Label2 et Label3

Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_INSERT_PRODUIT
2) dans Caption nommez  Descriptif produit à insérer

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts :



Nous allons maintenant programmer cet UserForm que vous avez nommé A_INSERT_PRODUIT

Sélectionnez A_INSERT_PRODUIT
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_INSERT_PRODUIT  *****

'***** Correspond au programme du FORMULAIRE à son ouverture *****

 Private Sub UserForm_Initialize()
Dim I As Integer
For I = 1 To Sheets("DETAILS").Range("A65536").End(xlUp).Row
ComboBox1 = Sheets("DETAILS").Range("A" & I)
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("DETAILS").Range("A" & I)
Next I
End Sub


'***** Correspond au programme du bouton "INSERER PRODUIT"  *****
 
Private Sub CommandButton1_Click()
Dim L As Integer


ActiveSheet.Select
'sélectionne la feuille active
If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau produit ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = ActiveSheet.Range("a65536").End(xlUp).Row + 1
'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("A" & L) = "x"
Range("D" & L).Value = Label1
'Insère la donnée de la textbox1 dans la colonne D
Range("G" & L).Value = Label2
'Insère la donnée de la textbox2 dans la colonne G
'et à suivre....

Range("H" & L).Value = TextBox4
Range("I" & L).Value = ComboBox1
Range("J" & L).Value = Label3
Range("K" & L).FormulaR1C1 = "=IF(OR(RC[-1]=0,RC[-3]=0,RC[-1]="""",RC[-3]=""""),"""",RC[-1]*(1+RC[-2]))"
Range("L" & L).FormulaR1C1 = "=IF(OR(RC[-2]=0,RC[-4]=0,RC[-2]="""",RC[-4]=""""),"""",RC[-2]*RC[-4])"
Range("M" & L).FormulaR1C1 = "=IF(OR(RC[-3]=0,RC[-5]=0,RC[-3]="""",RC[-5]=""""),"""",(RC[-3]*RC[-4])*RC[-5])"
Range("N" & L).FormulaR1C1 = "=IF(OR(RC[-4]=0,RC[-6]=0,RC[-4]="""",RC[-6]=""""),"""",RC[-3]*RC[-6])"
End If

Unload Me
'Ferme le formulaire
A_CHOIX_PRODUIT.Show
End Sub



'Fin  ***** Code de programmation de l'Userform A_INSERT_PRODUIT  *****






CHAPITRE III - GESTION DES DEVIS

Un  FORMULAIRE à créer : 
* NUMERO DE DEVIS                   (A_NUMERO_DEVIS) 




Maintenant insérez un Userform et insérez dans celui-ci :

* Une TextBox
* Un CommandButton

* Deux  Label

Nommez la CommandButton  respectivement dans Caption :
* VALIDER le N° de DEVIS  => CommandButton1 

Nommez vos Label respectivement dans Caption :
* N° du dernier devis  => Label2
Sans nom dans Caption pour le Label1

Dans la TextBox1 insérer les lettres suivantes  DEV-

Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_NUMERO_DEVIS
2) dans Caption nommez  NUMERO DE DEVIS

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts :


Nous allons maintenant programmer cet UserForm que vous avez nommé A_NUMERO_DEVIS

Sélectionnez A_NUMERO_DEVIS
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_NUMERO_DEVIS  *****

'***** Correspond au programme du FORMULAIRE à son ouverture *****

Private Sub UserForm_Initialize()
Label1 = Range("p2")
End Sub


'***** Correspond au programme du bouton "VALIDER le N° de DEVIS"  *****

Private Sub CommandButton1_Click()
DateDuJour = Format(Date, "dd/mm/yyyy")

ActiveSheet.Select
Range("N3") = TextBox1
Range("N4") = DateDuJour

Unload Me
A_GESTION_CLIENT.CommandButton1.Visible = False
A_GESTION_CLIENT.Show
End Sub




'Fin  ***** Code de programmation de l'Userform A_NUMERO_DEVIS  *****



Téléchargement FICHIER
Téléchargez le fichier (cliquez sur le lien suivant )  :   FICHE DEVIS
Après téléchargement, Clic droit sur l'onglet DEVIS et Copier (cochez "Créer une copie) dans le classeur BASE DE GESTION.xlsm    où bon vous semble.



CHAPITRE IV - GESTION DES FACTURES

Un  FORMULAIRE à créer : 
* NUMERO DE FACTURE                   (A_NUMERO_FACTURE) 




Maintenant insérez un Userform et insérez dans celui-ci :

* Une TextBox
* Un CommandButton

* Deux  Label

Nommez la CommandButton  respectivement dans Caption :
* VALIDER le N° de FACTURE  => CommandButton1 

Nommez vos Label respectivement dans Caption :
* N° de la dernière facture  => Label2
Sans nom dans Caption pour le Label1

Dans la TextBox1 insérer les lettres suivantes  FACT-

Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de B_NUMERO_FACTURE
2) dans Caption nommez  NUMERO DE FACTURE

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts :



Nous allons maintenant programmer cet UserForm que vous avez nommé B_NUMERO_FACTURE

Sélectionnez B_NUMERO_FACTURE
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform B_NUMERO_FACTURE  *****

'***** Correspond au programme du FORMULAIRE à son ouverture *****

Private Sub UserForm_Initialize()
Label1 = Range("p2")
End Sub


'***** Correspond au programme du bouton "VALIDER le N° de DEVIS"  *****

Private Sub CommandButton1_Click()
DateDuJour = Format(Date, "dd/mm/yyyy")

ActiveSheet.Select
Range("N3") = TextBox1
Range("N4") = DateDuJour

Unload Me
A_GESTION_CLIENT.CommandButton1.Visible = False
A_GESTION_CLIENT.Show
End Sub



'Fin  ***** Code de programmation de l'Userform B_NUMERO_FACTURE  *****


Téléchargement FICHIER
Téléchargez le fichier (cliquez sur le lien suivant )  :   FICHE FACTURE
Après téléchargement, Clic droit sur l'onglet DEVIS et Copier (cochez "Créer une copie) dans le classeur BASE DE GESTION.xlsm    où bon vous semble.




CHAPITRE V - GESTION DU SUIVI des DEVIS et des FACTURES

Deux  FORMULAIRES à créer : 
* Récapitualif informations pour suivi de devis        (A_RECAP_SUIVI_DEVIS) 
* Récapitualif informations pour suivi de factures   (A_RECAP_SUIVI_FACTURES) 


5.1.- INSERTION du FORMULAIRE  "Récapitulatif informations pour suivi de devis"

Maintenant insérez un Userform et insérez dans celui-ci :

* Onze TextBox
* Un CommandButton

* Onze Label

Nommez la CommandButton  respectivement dans Caption :
* INSERER dans SUIVI DEVIS  => CommandButton1 

Nommez vos Label respectivement dans Caption :
* Numéro de devis  => Label1
* Date  => Label2
* NOM  => Label3
* Adresse  => Label4

* Code Postal - Ville  => Label5
* Adresse mail => Label6
* Téléphone => Label7
* Date validité devis : => Label8
* TOTAL HT => Label9
* TVA => Label10
* TOTAL TTC => Label11


Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_RECAP_SUIVI_DEVIS
2) dans Caption nommez  Récapitulatif informations pour suivi de DEVIS

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts :

Nous allons maintenant programmer cet UserForm que vous avez nommé A_RECAP_SUIVI_DEVIS

Sélectionnez A_RECAP_SUIVI_DEVIS
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_RECAP_SUIVI_DEVIS  *****

'***** Correspond au programme du FORMULAIRE à son ouverture *****

Private Sub UserForm_Initialize()
ActiveSheet.Select
TextBox1 = Range("n3").Value
TextBox2 = Range("n4").Value
TextBox3 = Range("k8").Value
TextBox4 = Range("k9").Value
TextBox5 = Range("k11").Value
TextBox6 = Range("k12").Value
TextBox7 = Range("k13").Value
TextBox8 = Range("G19").Value
TextBox9 = Range("N38").Value
TextBox10 = Range("N39").Value
TextBox11 = Range("N41").Value
End Sub
 

'***** Correspond au programme du bouton "INSERER dans  SUIVI DEVIS"  *****

Private Sub CommandButton1_Click()
Dim L As Integer
Sheets("SUIVI DEVIS").Activate
If MsgBox("Etes-vous certain de vouloir d'enregistrer ces données ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Sheets("SUIVI DEVIS").Range("a65536").End(xlUp).Row + 1
'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("A" & L).Value = TextBox1
'Insère la donnée de la textbox1 dans la colonne A
Range("B" & L).Value = TextBox2
'Insère la donnée de la textbox2 dans la colonne B
'et à suivre....

Range("C" & L).Value = TextBox3
Range("D" & L).Value = TextBox4
Range("E" & L).Value = TextBox5
Range("F" & L).Value = TextBox6
Range("G" & L).Value = TextBox7
Range("H" & L).Value = TextBox8
Range("I" & L).Value = TextBox9
Range("J" & L).Value = TextBox10
Range("K" & L).Value = TextBox11

End If
MsgBox ("Référence devis insérée dans SUIVI DEVIS")
'Vous informe que le présent contact est insérer dans votre tableau Excel.
Unload Me
'Ferme le formulaire
A_ACCUEIL.Show
End Sub



'Fin  ***** Code de programmation de l'Userform A_RECAP_SUIVI_DEVIS  *****

Téléchargement FICHIER
Téléchargez le fichier (cliquez sur le lien suivant )  :   SUIVI DEVIS
Après téléchargement, Clic droit sur l'onglet DEVIS et Copier (cochez "Créer une copie) dans le classeur BASE DE GESTION.xlsm    où bon vous semble.



5.2.- INSERTION du FORMULAIRE  "Récapitulatif informations pour suivi de factures"

Maintenant insérez un Userform et insérez dans celui-ci :

* Onze TextBox
* Un CommandButton

* Onze Label

Nommez la CommandButton  respectivement dans Caption :
* INSERER dans SUIVI FACTURES => CommandButton1 

Nommez vos Label respectivement dans Caption :
* Numéro de devis  => Label1
* Date  => Label2
* NOM  => Label3
* Adresse  => Label4
* Code Postal - Ville  => Label5
* Adresse mail => Label6
* Téléphone => Label7
* Date validité devis : => Label8
* TOTAL HT => Label9
* TVA => Label10
* TOTAL TTC => Label11


Sélectionnez cet UserForm  :
1) dans la ligne (Name) donnez le  nom de A_RECAP_SUIVI_FACTURES
2) dans Caption nommez  Récapitulatif informations pour suivi de FACTURES

Placez tous ces éléments pour un avoir un aspect de l'UserForm similaire à l'image ci-dessous.... mais vous pouvez choisir vos propres couleurs et le placement de tous les éléménts :


Nous allons maintenant programmer cet UserForm que vous avez nommé A_RECAP_SUIVI_FACTURES

Sélectionnez A_RECAP_SUIVI_FACTURES
Double-cliquez sur celui-ci.
Sélectionnez le code ci-après et insérez le :

'Début  ***** Code de programmation de l'Userform A_RECAP_SUIVI_FACTURES  *****

'***** Correspond au programme du FORMULAIRE à son ouverture *****

Private Sub UserForm_Initialize()
ActiveSheet.Select
TextBox1 = Range("n3").Value
TextBox2 = Range("n4").Value
TextBox3 = Range("k8").Value
TextBox4 = Range("k9").Value
TextBox5 = Range("k11").Value
TextBox6 = Range("k12").Value
TextBox7 = Range("k13").Value
TextBox8 = Range("G19").Value
TextBox9 = Range("N38").Value
TextBox10 = Range("N39").Value
TextBox11 = Range("N41").Value
End Sub
 

'***** Correspond au programme du bouton "INSERER dans  SUIVI DEVIS"  *****

Private Sub CommandButton1_Click()
Dim L As Integer
Sheets("SUIVI FACTURES").Activate
If MsgBox("Etes-vous certain de vouloir d'enregistrer ces données ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Sheets("SUIVI DEVIS").Range("a65536").End(xlUp).Row + 1
'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("A" & L).Value = TextBox1
'Insère la donnée de la textbox1 dans la colonne A
Range("B" & L).Value = TextBox2
'Insère la donnée de la textbox2 dans la colonne B
'et à suivre....

Range("C" & L).Value = TextBox3
Range("D" & L).Value = TextBox4
Range("E" & L).Value = TextBox5
Range("F" & L).Value = TextBox6
Range("G" & L).Value = TextBox7
Range("H" & L).Value = TextBox8
Range("I" & L).Value = TextBox9
Range("J" & L).Value = TextBox10
Range("K" & L).Value = TextBox11

End If
MsgBox ("Référence devis insérée dans SUIVI FACTURES")
'Vous informe que le présent contact est insérer dans votre tableau Excel.
Unload Me
'Ferme le formulaire
A_ACCUEIL.Show
End Sub


'Fin  ***** Code de programmation de l'Userform A_RECAP_SUIVI_FACTURES  *****

Téléchargement FICHIER
Téléchargez le fichier (cliquez sur le lien suivant )  :   SUIVI FACTURES
Après téléchargement, Clic droit sur l'onglet DEVIS et Copier (cochez "Créer une copie) dans le classeur BASE DE GESTION.xlsm    où bon vous semble.



CHAPITRE VI -
* Formulaire ACCUEIL
* Archivages et  Recherche  des devis et factures.




A suivre
La suite en COURS DE REDACTION (mis à jour le  22.09.2014)

4 commentaires :

  1. Bonjour et bravo pour vos tutoriels, vraiment très intéressant et j' attend la suite avec impatience. Cordialement

    RépondreSupprimer
  2. Dommage qu'il ne soit pas fini j'aurais bien aimer voir se que ca donne

    RépondreSupprimer
  3. Bravo pour votre investissement dans le partage de vos connaissances.
    Cela prend beaucoup de temps et ce que vous avez produit est très bien fait.
    Je vous encourage à reprendre la plume...

    RépondreSupprimer
  4. bon Tutoriels et surtout très significatif pour nous apprenant en Excel.Merci beaucoup. pourrais t-on recevoir le fichier Excel pour les factures vba avec les liens SVP !!!

    RépondreSupprimer

Pour vous aider à publier votre commentaire, voici la marche à suivre :
1) Ecrivez votre texte dans le formulaire de saisie ci-dessus
2) Si vous avez un compte, vous pouvez vous identifier dans la liste déroulante Commentaire
Sinon, vous pouvez saisir votre nom ou pseudo par Nom/URL
3) Vous pouvez, en cliquant sur le lien S'abonner par e-mail, être assuré d'être avisé en cas d'une réponse
4) Cliquer sur Publier enfin.

Le message sera publié après modération.
Merci