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

Excel Discussion :

Publipostage excel / excel [XL-2019]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2024
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Publipostage excel / excel
    Bonjour, nouveau membre et quasi débutant je souhaite automatiser l'édition d'une facture (feuille excel) à partir d'une première feuille dans laquelle il y a les données à ''fusionner". Si le code fonctionne sans problème pour la première ligne avec une impression puis une sauvegarde en pdf, je suis coincé sur le fait d'avoir plusieurs ligne à traiter et je n'arrive pas à trouver une boucle qui me permettre d'éditer toutes les factures.
    Voici mon code et merci d'avance:
    Sub testfacture()
    '
    ' testfacture Macro
    '
    Dim Nomfic As String
    '
    If vbNo = MsgBox("Voulez-vous editez les factures des comités ?", vbYesNo, "FACTURATION COMITES") Then
    Exit Sub
    Else
    'Stop
    A = (Year(Date))
    Sheets("MENU").Select
    Sheets("COMITE").Visible = True
    Sheets("COMITE").Select
    Sheets("FACTURATION").Visible = True
    Sheets("FACTURATION").Select
    Range("D4").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C1")
    Range("E4").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C2")
    Range("D5").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C4")
    Range("D6").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C5")
    Range("D7").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C3")
    Range("E7").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C2")
    Range("F16").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C9")
    Range("F19").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C10")
    Range("F22").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R2C11")
    Range("E4").Select
    'Sheets("FACTURATION").PrintOut
    Nomfic = ActiveCell.Value & " " & A

    With Sheets("FACTURATION")
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Marc\Documents\ACTIV\SPF" & Nomfic _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=False
    MsgBox "Comité " & Nomfic & " facture éditée.", vbInformation, "FACTURATION COMITE"
    End With

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 421
    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 421
    Points : 16 267
    Points
    16 267
    Par défaut
    Bonjour
    De façon générale on crée une facture type avec une cellule contenant l'ID de la facture et on utilise RECHERCHEV ou INDEX/EQUIV pour la remplir

    Une simple boucle pour changer l'ID puis imprimer/exporter suffit

    Les select sont à proscrire
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour

    là si je comprends bien tu traites la facture de la première ligne de données qui est sur le ligne2 de ton tableau (R2Cx).

    Déjà commence par créer un "Sub TraiteFacture(MaLigne as long)" qui contiendra en gros ce que tu as écrit sauf que là où il y a des R2Cx tu remplaceras le 2 par MaLigne.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("FACTURATION").Select
    Range("D4").Select
    ActiveCell.FormulaR1C1 = ("=COMITE!R" & MaLigne & "C1")
    Au passage, oublie les Select / ActiveCell : tu peux écrire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Sheets("FACTURATION")
       .Range("D4").FormulaR1C1 = ("=COMITE!R" & MaLigne & "C1")
       .Range("E4").FormulaR1C1 = ("=COMITE!R" & MaLigne & "C2")
        ' etc.
    End With
    Puis tu fais un Sub Appelant qui contiendrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = LigneDebut to LigneFin
        TraiteFacture i
    Next i
    Reste à déterminer LigneDebut (probablement 2) et LigneFin.

    Mais perso je mettrais quelque part le n° de ligne(disons en A1 sur la feuille 'Facturation') et je l'utiliserais dans des formules fixes (donc qui ne seraient pas modifiées par le VBA) dans les autres cellules :
    Par exemple en D4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(COMITE!A:A;$A$1)
    Intérêt de la méthode : mise au point immédiate, possibilité de sortir une facture "à la main", maintenance facilitée (modif de la facture ou de la structure du tableau de données sans toucher au code) : il suffit de modifier le n° de ligne en A1 pour que la page se mette à jour.

    Et du coup il resterait dans TraiteFacture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub TraiteFacture(MaLigne As Long)
       Dim NomFic as string
       With Sheets("FACTURATION")
          .Range("A1").Value = Maligne
          .PrintOut
           Nomfic =  .Range("E4").Value & " " & A
          .ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Marc\Documents\ACTIV\SPF" & Nomfic _
          , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
          :=False, OpenAfterPublish:=False
          MsgBox "Comité " & Nomfic & " facture éditée.", vbInformation, "FACTURATION COMITE"
       End With
    End Sub
    Non testé...

    Pendant qu'on y est transforme ton tableau de données en tableau structuré ; tu travailleras alors en n° de ligne dans le tableau (à partir de 1 au lieu de 2), mets un nom sur la cellule A1 et tu auras des formules sympa (lisibles) qui ressembleront à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(Data[NumeroFac];Ligne)

  4. #4
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2024
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour tous ces renseignements. Je vais me mettre au travail pour intégrer tout cela.
    Cordialement.
    Je ne clôture pas encore la discussion

  5. #5
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2024
    Messages : 5
    Points : 4
    Points
    4
    Par défaut RESOLU
    Merci TETE DE CHAT, avec les aménagements tout sort nickel. J'ai testé avec les premières indications et c'est super.
    Pour le fun je vais testé avec la proposition en seconde partie

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

Discussions similaires

  1. Publipostage excel -> word , Requete SELECT
    Par linodev dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/06/2007, 11h11
  2. Publipostage excel -> word , Requete SELECT
    Par linodev dans le forum Excel
    Réponses: 1
    Dernier message: 29/06/2007, 23h34
  3. Publipostage Excel->Word et fusion sur nouveau document
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/06/2007, 16h04
  4. Publipostage excel word
    Par hanky dans le forum VBA Word
    Réponses: 10
    Dernier message: 21/05/2007, 08h52
  5. publipostage Excel --> Word
    Par X...FoR...X dans le forum Excel
    Réponses: 1
    Dernier message: 16/05/2006, 14h59

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