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 :

Obtenir à partir de la liste de clients de la feuille Liste, Un état de reçu pour chaque client par feuille en [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
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Par défaut Obtenir à partir de la liste de clients de la feuille Liste, Un état de reçu pour chaque client par feuille en
    Bonjour les amis;
    J'ai pas beaucoup d'atouts en excel VBA, mais je voudrais
    Obtenir à partir de la liste de clients de la feuille Liste disponible dans le fichier joint, faire un état ou une facture avec entête pour chaque client listé dans le tableau de la feuille "Liste". J essaie depuis le début de semaine sans issue.

    Merci d'avance pour votre aide.Recu_mtc_2020.xlsx

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 572
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 572
    Par défaut
    Bonjour

    Le plus simple est de faire un publipostage Word à partir de la liste Excel

    Pas besoin de code VBA

  3. #3
    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 ami, la forum
    une proposition : tu te positionne sur la ligne que vous voulez imprimer le reçu puis cliquer sur le bouton pour imprimer le reçu
    Tester et revenir pour dire si ça te convient
    Bonne continuation
    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
    Sub factureAimprimer()
    Dim w1 As Worksheet
    Dim w2 As Worksheet
    Dim L As Long
     
    Set w1 = Worksheets("Liste")
    Set w2 = Worksheets("Facture")
     
    Application.ScreenUpdating = False
    L = ActiveCell.Row
    If MsgBox("Etes-vous certain de vouloir imprimer le reçu N°  :   " & Cells(L, 12), vbYesNo, "Demande de confirmation") = vbYes Then
     
          w2.Select
          w2.Range("D5:D15").ClearContents
     
           w2.Range("D1").Value = CDate(w1.Cells(L, 12))
            w2.Range("G2").Value = w1.Cells(L, 4)
            w2.Range("D5").Value = w1.Cells(L, 2) & "  " & w1.Cells(L, 3)
            w2.Range("D6").Value = w1.Cells(L, 5)
            w2.Range("D7").Value = w1.Cells(L, 7)
            w2.Range("D9").Value = w1.Cells(L, 8)
            w2.Range("D11").Value = w1.Cells(L, 9)
            w2.Range("D13").Value = w1.Cells(L, 10)
            w2.Range("D15").Value = w1.Cells(L, 11)
     
            w2.PageSetup.PrintArea = ("B1:G15")
            w2.PrintOut
            w2.PageSetup.PrintArea = ""
    End If
    w2.Select
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Autre proposition, sur la feuille "Etat", sélectionnez le nom de l'étudiant que vous voulez imprimer.
    Pièce jointe 543531

    le 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
    Sub Lister_Noms()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim DerLig_f1 As Long, Lig As Long
        Application.ScreenUpdating = False
        Set f1 = Sheets("Liste")
        Set f2 = Sheets("Etat")
        DerLig_f1 = f1.Range("B" & Rows.Count).End(xlUp).Row
        Lig = 1
        For Each c In f1.Range(f1.Cells(2, "D"), f1.Cells(DerLig_f1, "D"))
            f2.Cells(Lig, "J") = c.Value
            Lig = Lig + 1
        Next c
     
        f2.Names.Add Name:="Liste", RefersToR1C1:="=Etat!R1C10:R" & Lig - 1 & "C10"
        f2.Cells(5, "C").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Liste"
            .IgnoreBlank = True
            .InCellDropdown = True
            .ShowInput = True
            .ShowError = True
        End With
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
     
    Sub Imprimer()
        ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
    End Sub
    Le fichier
    Pièce jointe 543534

    Cdlt

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Par défaut Merci à tous
    Merci à tous pour vos réponses; Mais je voudrais juste avoir les états de chaque clients dans une feuille sans l'imprimer en attendant. c-a-d une ligne de client je correspond une feuille de reçu jusau'a 200 clients donc 200 feuilles de reçu.

    C'est possible en VBA?

  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
    Je propose d’enregistrer votre petite application dans un dossier et puis enregistrer tous vos reçus format PDF
    si ça te convient :
    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
    Sub factureAimprimer()
    Dim w1 As Worksheet
    Dim w2 As Worksheet
    Dim Ligne As Long
    Dim L As Integer
    Set w1 = Worksheets("Liste")
    Set w2 = Worksheets("Facture")
    Ligne = w1.Cells(Rows.Count, 1).End(xlUp).Row
    Application.ScreenUpdating = False
     
    For L = 2 To Ligne
          w2.Select
          w2.Range("D5:D15").ClearContents
           w2.Range("D1").Value = w1.Cells(L, 12)
           w2.Range("G2").Value = w1.Cells(L, 4)
            w2.Range("D5").Value = w1.Cells(L, 2) & "  " & w1.Cells(L, 3)
            w2.Range("D6").Value = w1.Cells(L, 5)
            w2.Range("D7").Value = w1.Cells(L, 7)
            w2.Range("D9").Value = w1.Cells(L, 8)
            w2.Range("D11").Value = w1.Cells(L, 9)
            w2.Range("D13").Value = w1.Cells(L, 10)
            w2.Range("D15").Value = w1.Cells(L, 11)
     
     
      '*************************Enregistrement Rapport Format PDF*******************
    Dim Ar(0) As String
        Ar(0) = Feuil2.Name
        Sheets(Ar).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & "Reçu  " & w2.Range("D1").Value _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
      '********************************************************************************
       Next L
    Application.ScreenUpdating = True
    End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Par défaut Merci à toi
    Citation Envoyé par BENNASR Voir le message
    Bonjour ami, la forum
    une proposition : tu te positionne sur la ligne que vous voulez imprimer le reçu puis cliquer sur le bouton pour imprimer le reçu
    Tester et revenir pour dire si ça te convient
    Bonne continuation
    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
    Sub factureAimprimer()
    Dim w1 As Worksheet
    Dim w2 As Worksheet
    Dim L As Long
     
    Set w1 = Worksheets("Liste")
    Set w2 = Worksheets("Facture")
     
    Application.ScreenUpdating = False
    L = ActiveCell.Row
    If MsgBox("Etes-vous certain de vouloir imprimer le reçu N°  :   " & Cells(L, 12), vbYesNo, "Demande de confirmation") = vbYes Then
     
          w2.Select
          w2.Range("D5:D15").ClearContents
     
           w2.Range("D1").Value = CDate(w1.Cells(L, 12))
            w2.Range("G2").Value = w1.Cells(L, 4)
            w2.Range("D5").Value = w1.Cells(L, 2) & "  " & w1.Cells(L, 3)
            w2.Range("D6").Value = w1.Cells(L, 5)
            w2.Range("D7").Value = w1.Cells(L, 7)
            w2.Range("D9").Value = w1.Cells(L, 8)
            w2.Range("D11").Value = w1.Cells(L, 9)
            w2.Range("D13").Value = w1.Cells(L, 10)
            w2.Range("D15").Value = w1.Cells(L, 11)
     
            w2.PageSetup.PrintArea = ("B1:G15")
            w2.PrintOut
            w2.PageSetup.PrintArea = ""
    End If
    w2.Select
    Application.ScreenUpdating = True
    End Sub
    Merci pour l'aide, vraiment
    mais la recopie du reçu en bas de la feuille principale n'y est plus.

  8. #8
    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
    je comprends pas bien
    tu veux une feuille synthèse et une feuille pour chaque reçu??
    les deux en meme temps??

  9. #9
    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
    En l'absence d'une réponse je suppose que c'est ce que tu demande :
    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
    Sub factureAimprimer()
    Dim w1 As Worksheet
    Dim w2 As Worksheet
    Dim Ligne As Long
    Dim L As Integer
    Set w1 = Worksheets("A")
    Set w2 = Worksheets("1")
    Ligne = w1.Cells(Rows.Count, 2).End(xlUp).Row
    Application.ScreenUpdating = False
      Lig = 4
     Sheets("Synthèse").Columns("A:AA").Delete Shift:=xlUp
    For L = 5 To Ligne
          w2.Select
           w2.Range("E4").Value = w1.Cells(L, 4)
           w2.Range("C6").Value = w1.Cells(L, 2) & "  " & w1.Cells(L, 2)
            w2.Range("C8").Value = w1.Cells(L, 8)
             w2.Range("E8").Value = w1.Cells(L, 9)
             w2.Range("D10").Value = w1.Cells(L, "K")
             w2.Range("D11").Value = w1.Cells(L, "L")
              w2.Range("D12").Value = w1.Cells(L, "M")
               w2.Range("I13").Value = w1.Cells(L, "N")
              w2.Range("I15").Value = w1.Cells(L, "O")
               w2.Range("I17").Value = w1.Cells(L, "P")
                w2.Range("H19").Value = w1.Cells(L, "E")
      w2.Range("B4:I23").Copy Sheets("Synthèse").Range("B" & Lig)
      Lig = Lig + 25
     
       Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = w2.Range("E4").Value
       w2.Select
        w2.Cells.Select
        Application.CutCopyMode = False
        w2.Cells.Copy
        Worksheets(Worksheets.Count).Select
        Cells.Select
        ActiveSheet.Paste
     
       Next L
    Application.ScreenUpdating = True
    End Sub
    Merci de cliquer sur RESOLU en bas si c'est le cas

    Bonne continuation
    Fichiers attachés Fichiers attachés

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 27
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    je comprends pas bien
    tu veux une feuille synthèse et une feuille pour chaque reçu??
    les deux en meme temps??
    Au fait quand je prend un reçu1 je voudrais avoir sa copie exacte en bas avec les meme informations dans la meme feuille .

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

Discussions similaires

  1. [XL-2010] Requêtes à partir d'une liste d'excel comme paramètres pour MS query (via ODBC)
    Par Zigo56 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/11/2018, 16h11
  2. Réponses: 0
    Dernier message: 09/03/2012, 18h38
  3. Réponses: 4
    Dernier message: 24/01/2011, 20h50
  4. Réponses: 12
    Dernier message: 03/12/2007, 18h53
  5. [SQL] Obtenir un tableau à partir d'une liste
    Par JMO91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2006, 00h07

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