IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

automatisation de remplissage des contrats et leur impression [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2022
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2022
    Messages : 25
    Par défaut automatisation de remplissage des contrats et leur impression
    Bonjour à tous!
    je suis debutante en vba et j'ai un projet à réaliser
    en tavail, on a besoin de remplir plusieurs contrat et c'est difficile de les faire une à une à chaque fois, donc je suis censée réaliser un projet en vba pour le faire.
    j'ai pensé à faire une acceuil qui contient une liste déroulante pour choisir le contrat que je souhaite repmlir , pour me diriger vers la feuille de calcul du contrat de travail concerné , apres , avoir un user form qui me demande d'entrer tous les donnees que j'ai dèja mis en table excel (Nom,prenom, date de naissance...) , et je pense poser le modèle de contrat comme il est en feuille de calcul et puis le remplir à chaque fois par les donnéés collectes à partir de mon USER FORM et avoir la possibilite de le sauvegarder (en word ou power point...) pour l'impression , et apres ma contrat devient vide de nouveau.
    c'est mon idéé en générale mais j'ai plein de choses qui sont encore non claire.
    aussi pour les contrats , ils sont recto-verso , serait-il valide de poser les deux faces en une seule feuille de calcul ou bien chaque face doit etre séparé?
    j'aimerais bien q'un expert en vba me guide ...
    et si vous avez d'autres idéés je serais heureuse d'entendre de vous
    MERCI!

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    dans l'exemple que je vais donner, nous avons une liste des facture par fournisseur. si tu veux imprimer et enregistrer format PDF une facture tu n'as qu'à mettre mettre le souris sur la ligne correspondante...le code remplit la facture avec les données de la ligne sélectionnée...enregistre en PDF et imprime la facture
    j'espère que ça rassemble un peu à ce que tu cherches à faire
    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub factureAimprimer()
    Dim w1 As Worksheet
    Dim w2 As Worksheet
    Dim L As Long
    Dim D As Date
    Set w1 = Worksheets("Liste")
    Set w2 = Worksheets("Facture")
    D = Date
    Application.ScreenUpdating = False
    L = ActiveCell.Row
    If MsgBox("Etes-vous certain de vouloir imprimer la facture de la cliente :   " & Cells(L, 3), vbYesNo, "Demande de confirmation") = vbYes Then
           w2.Range("E4").Value = CDate(w1.Cells(L, 1))
            w2.Range("E6").Value = w1.Cells(L, 2)
            w2.Range("D8").Value = w1.Cells(L, 3)
            w2.Range("B14").Value = w1.Cells(L, 4)
            w2.Range("D14").Value = w1.Cells(L, 5)
            w2.Range("E32").Value = w1.Cells(L, 6)
            w2.PageSetup.PrintArea = ("A1:E32")
            w2.PrintOut
            w2.PageSetup.PrintArea = ""
    End If
    w2.Select
     
      '*************************Enregistrement Rapport Format PDF*******************
    Dim Ar(0) As String
        Ar(0) = Feuil2.Name
        Sheets(Ar).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & "Facture  " & Range("E6") _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
      '********************************************************************************
     
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2022
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2022
    Messages : 25
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    Bonjour
    dans l'exemple que je vais donner, nous avons une liste des facture par fournisseur. si tu veux imprimer et enregistrer format PDF une facture tu n'as qu'à mettre mettre le souris sur la .........
    [/CODE]
    Bonjour BENNASR , merci pour votre attention , oui ça fait partie de ce que je souhaite réaliser sauf qu'au lieu d'entrer les donees dans une ligne directement je souhaite réaliser un user form et c'est a partir de l'user form que je peux cliquer sur un bouton pour lancer la contrat, aussi j'ai essayé votre code et meme si je repond par non lors d'affichge de message de confirmation la contrat se lance ,
    En tout cas votre travail est surement utile pour moi , merci de l'avoir partagé

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    re
    juste glisser le "if" en bas pour ne pas enregistrer le pdf si la réponse est non
    ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub factureAimprimer()
    Dim w1 As Worksheet
    Dim w2 As Worksheet
    Dim L As Long
    Dim D As Date
    Set w1 = Worksheets("Liste")
    Set w2 = Worksheets("Facture")
    D = Date
    Application.ScreenUpdating = False
    L = ActiveCell.Row
    If MsgBox("Etes-vous certain de vouloir imprimer la facture de la cliente :   " & Cells(L, 3), vbYesNo, "Demande de confirmation") = vbYes Then
           w2.Range("E4").Value = CDate(w1.Cells(L, 1))
            w2.Range("E6").Value = w1.Cells(L, 2)
            w2.Range("D8").Value = w1.Cells(L, 3)
            w2.Range("B14").Value = w1.Cells(L, 4)
            w2.Range("D14").Value = w1.Cells(L, 5)
            w2.Range("E32").Value = w1.Cells(L, 6)
            w2.PageSetup.PrintArea = ("A1:E32")
            w2.PrintOut
            w2.PageSetup.PrintArea = ""
     
    w2.Select
     
      '*************************Enregistrement Rapport Format PDF*******************
    Dim Ar(0) As String
        Ar(0) = Feuil2.Name
        Sheets(Ar).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & "Facture  " & Range("E6") _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
      '********************************************************************************
     End If
    Application.ScreenUpdating = True
    End Sub

  5. #5
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2022
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2022
    Messages : 25
    Par défaut
    ouiii ça marche, merci !

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Principe modifié selon votre demande
    deux clique DANS LA COLONNE C de l'onglet "Liste"
    s'ouvre un USERFORM avec les données de la lignes selectionnées
    Tu complète ton userform (saisie des donnée et dans notre cas un textbox en rouge)
    tu clique sur valider et comme ça tu imprime et enregistre la facture en PDF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    With Sheets("Liste")
    Set plage = .Range("C2:C" & .Range("C65536").Row)
    If Not Intersect(Target, plage) Is Nothing And Target.Cells.Count = 1 Then
    UserForm1.Show
    Cancel = True
    End If
    End With
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Dim DernLigne As Long
     
    Private Sub CommandButton1_Click()
    Dim w1 As Worksheet
    Dim w2 As Worksheet
    Dim L As Long
    Dim D As Date
    Set w1 = Worksheets("Liste")
    Set w2 = Worksheets("Facture")
    D = Date
    Application.ScreenUpdating = False
    L = ActiveCell.Row
    If MsgBox("Etes-vous certain de vouloir imprimer la facture de la cliente :   " & Cells(L, 3), vbYesNo, "Demande de confirmation") = vbYes Then
            w2.Activate
            w2.Range("E4").Value = TextBox1.Value
            w2.Range("E6").Value = TextBox2.Value
            w2.Range("D8").Value = TextBox3.Value
            w2.Range("B14").Value = TextBox4.Value
            w2.Range("D14").Value = TextBox5.Value
            w2.Range("E32").Value = TextBox6.Value
            w2.Range("D18").Value = TextBox7.Value
     
            w2.PageSetup.PrintArea = ("A1:E32")
            w2.PrintOut
            w2.PageSetup.PrintArea = ""
     
    w2.Select
     
      '*************************Enregistrement Rapport Format PDF*******************
    Dim Ar(0) As String
        Ar(0) = Feuil2.Name
        Sheets(Ar).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & "Facture  " & Range("E6") _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
      '********************************************************************************
     End If
    Application.ScreenUpdating = True
    End Sub
     
    Private Sub CommandButton2_Click()
    Unload Me
    End Sub
     
    Private Sub UserForm_Initialize()
    DernLigne = Sheets("Liste").Range("A" & Rows.Count).End(xlUp).Row
    Dim i As Integer
    With Sheets("Liste")
    Ligne = ActiveCell.Row
    TextBox1.Value = .Range("A" & Ligne)
    TextBox2.Value = .Range("B" & Ligne)
    TextBox3.Value = .Range("C" & Ligne)
    TextBox4.Value = .Range("D" & Ligne)
    TextBox5.Value = .Range("E" & Ligne)
    TextBox6.Value = .Range("F" & Ligne)
     
    End With
     
    End Sub
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Analyser une image : détecter des cases et leur remplissage
    Par cojac dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 16/09/2015, 14h30
  2. [Batch] supprimer des fichiers .pdf après leurs impression
    Par minouche1979 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/05/2014, 14h27
  3. les etats ACCESS: automatisation de leur impression
    Par yassineos19 dans le forum Access
    Réponses: 2
    Dernier message: 11/08/2011, 17h39
  4. Réponses: 5
    Dernier message: 24/06/2008, 22h10
  5. Réponses: 11
    Dernier message: 16/10/2004, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo