XL 2013 Créer un Facturier

Le_Troll_Du_27

XLDnaute Occasionnel
Je viens de commencer ce module Facture. L'organigramme:

  1. Accueil
  2. Paramètres
  3. Variables
  4. Modèle
  5. BD Client
  6. BD Article
  7. Archive_Facture
  8. Relance_Facture
  9. Dernière_Relance


J'expose mon problème

Le modèle type de facture sert à:
  1. Créer un Devis
  2. Créer une Facture
  3. Créer une Simulation
Cette liste déroulante est en L16

En G16 le n°de facture sous la forme de Calcul
=GAUCHE(L16;1)&GAUCHE(I8;1)&""&ANNEE(J16)&GAUCHE(N16;1)&JOUR(J16)&""&MOIS(J16)

(14) G J L N
(15) Facture n° Date Type: Livraison:
(16) F2015M259 25/09/2015 Facture Mail

Voici ce que j'ai commencé
Code:
Option Explicit

Sub Archive()

Dim Ligne                     As Long
Dim Trouve                    As Range

    With Sheets("Facture_Archive")
        Set Trouve = .Range("A:A").Find(Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("G16"), lookat:=xlWhole)
        If Trouve Is Nothing Then
            Ligne = .Range("B" & Rows.Count).End(xlUp).Row + 9

            'N° Facture
            .Range("B" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("G16")
            'Date Facture
            .Range("C" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("J16")
            'Type
            .Range("D" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("L16")
            'ModeLiv
            .Range("E" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N16")
            'Mode règl.
            .Range("F" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("J19")
            'Échéance
            .Range("G" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("C19")
            'N° de Transaction
            .Range("H" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N19")
            'Nom / Raison Sociale
            .Range("I" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("H8")
            'Prénom / Nom
            .Range("J" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("I8")
            'Adresse
            .Range("K" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("H9")
            'Code Postal
            .Range("L" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("H10")
            'Ville
            .Range("M" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("J10")
            'Total HT
            .Range("N" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N44")
            'TVA 5,5%
            .Range("O" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N41")
            'TVA 10%
            .Range("P" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N42")
            'TVA 20%
            .Range("Q" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N43")
            'Remise
            .Range("R" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N38")
            'Total TTC
            .Range("S" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N44")
            'Frais de Port
            .Range("T" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N39")
            'Acompte
            .Range("U" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("N46")
            'Réglement
            .Range("U" & Ligne) = Sheets("Facture" & Space(1) & Sheets.Count - 4).Range("G48")
        Else
            MsgBox "Facture déjà crée"
        End If
    End With

End Sub

Le code avant d'avoir penser au système Devis, Facture, Simulation

Code:
Sub Copie_Renomme_Facture()

    'on ouvre les factures déjà existantes
    For Each feuille In Sheets

        '        '############################################ Pas encore effectuer ########################
        '        'Liste déroulante en L16 pour selectionner Facture, Devis, Simulation
        '        If Target.Address(False, False) = "L16" Then
        '            Select Case Target.Value
        '                Case "Facture": chemin = "C:\Users\Public\Documents\Facture\"
        '                    Call Macro1
        '                Case "Devis": chemin = "C:\Users\Public\Documents\Devis\"
        '                    Call Macro2
        '                Case "Simulation": chemin = "C:\Users\Public\Documents\Simulation\"
        '                    Call Macro3
        '            End Select
        '        End If
        '        '############################################ Fin Zone Liste déroulante ###################


        If Left(feuille.Name, 7) = "Facture" Then
            feuille.Visible = True
        End If

    Next feuille
    Sheets("Modele").Copy After:=Sheets(Sheets.Count)                          'copie après le total de feuilles (cad en dernier)
    Sheets("Modele (2)").Name = "Facture" & Space(1) & Sheets.Count - 4        'renomme l'onglet avec numérotation en prenant : nombre de feuille - feuilles créer = 1,2,3 ...

    '#################DEBUT######################
    'réinitialisation de la facture d'origine
    Sheets("Modele").Select

    'réinitialisation Partie Haute
    Range("M7:N7").Select
    Range("L16").Select
    Range("N16").Select
    Range("J19").Select
    Range("L19:N19").Select
    Selection.ClearContents

    'réinitialisation Partie Centrale
    Range("C24:C35").Select
    Range("J24:J35").Select
    Selection.ClearContents

    'réinitialisation Partie HT
    Range("L38").Select
    Range("G48").Select
    Range("N46").Select
    Selection.ClearContents
    '###################FIN######################

    'on selectionne et colorise la nouvelle facture
    Sheets("Facture" & Space(1) & Sheets.Count - 4).Select
    With ActiveWorkbook.Sheets("Facture" & Space(1) & Sheets.Count - 4).Tab
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.399975585192419
    End With
    Sheets("Facture" & Space(1) & Sheets.Count - 4).Unprotect "admin"
    Sheets("Facture" & Space(1) & Sheets.Count - 4).Shapes("BOUTON").Delete    'on supprime le bouton dans la nouvelle facture
    Sheets("Facture" & Space(1) & Sheets.Count - 4).Protect "admin"
End Sub

Je voudrais fusionner les deux.

Je joins mon fichier qui est protéger. Mot de passe afficher dans la page d'accueil

Free - Envoyez vos documents
Cordialement
Laurent
 

Staple1600

XLDnaute Barbatruc
Re : Créer un Facturier

Re


Une suggestion pour réduire ton code
Normalement ces deux versions de ton code font la même chose que ton code initial
Code:
Sub reductionI()
'réinitialisation Partie Haute
Range("M7:N7,L16,N16,J19,L19:N19") = ""
'réinitialisation Partie Centrale
Range("C24:C35,J24:J35") = ""
'réinitialisation Partie HT
Range("L38,G48,N46") = ""
End Sub
Code:
Sub reductionII()
Range("C24:C35,J24:J35,G48,J19,L16,L38,M7:N7,N16,N46,L19:N19") = ""
End Sub
 

Le_Troll_Du_27

XLDnaute Occasionnel
Re : Créer un Facturier

Ok pour le code appel mais cela fonctionne juste pour créer à partir du modèle mais il s'appellera facture. Si en L16 tu sélectionne admettons devis tu auras toujours l'appellation de l'onglet facture. D'où le sujet comment faire ? avec case je pense mais la je sèche
 

Le_Troll_Du_27

XLDnaute Occasionnel
Re : Créer un Facturier

[dsl, oui tes 2 codes fonctionnent très bien. Tu as condensé
Code:
    'réinitialisation Partie Haute
     Range("M7:N7").Select
     Range("L16").Select
     Range("N16").Select
     Range("J19").Select
     Range("L19:N19").Select
     Selection.ClearContents

     'réinitialisation Partie Centrale
     Range("C24:C35").Select
     Range("J24:J35").Select
     Selection.ClearContents

     'réinitialisation Partie HT
     Range("L38").Select
     Range("G48").Select
     Range("N46").Select
     Selection.ClearContents

Il est clair qu'il beaucoup plus court. C'est très que tu ai fait cela çà me permet de voir d'autre avancé.

J'ai juste remarqué que j'ai fais une erreur sur le calcul des frais de port mais çà c'est pas très grave je reprendrai le calcul plus tard. Ce soir je suis sur l'Userform UGestionArticle

J'aurai cru que d'autre XlNaute se serai penché dessus mais pas grave. Je reprends toutes les vidéos au fur à mesure pour mon apprentissage du vba.

Cordialement

Laurent
 

Staple1600

XLDnaute Barbatruc
Re : Créer un Facturier

Bonjour à tous

Laurent
[
J'aurai cru que d'autre XlNaute se serai penché dessus mais pas grave. Je reprends toutes les vidéos au fur à mesure pour mon apprentissage du vba.
Cordialement
Laurent
D'autres se pencheront sans doute mais en temps et en heure et à leur rythme comme l'explique bien la charte ;)
2 – Tous les membres du forum répondent gracieusement aux questions. Il n’y a donc aucune obligation de résultat et de délai.
 

Discussions similaires

Réponses
17
Affichages
926

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 812
dernier inscrit
abdouami