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 :

Mise en page/export Excel sur Word [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Par défaut Mise en page/export Excel sur Word
    Bonjour à tous !

    J'ai un fichier excel, d'une dizaine d'onglets, qui me sort au final 3 onglets utiles, synthétiques, mis en forme et qu'il faut que j'imprime.

    J'ai vu comment faire une impression, assez brute des onglets qui m’intéressent.

    Comme je voulais aussi avoir mes onglets sur PDF voire Word, j'ai regardé l'export avec liaison d'Excel sous Word.
    Et à partir de là, il y a peut-être beaucoup plus efficace à faire, ça je ne sais pas

    En tout cas j'ai trouvé deux modes de collages plutôt pratiques : Avec liaison - Feuille de calcul Excel ou Avec liaison - Image en mode point.

    En tout cas si j'utilise un des deux, que je réduis par les coins le tout pour que ça rentre en largeur ma feuille A4, ça donne quelque chose de plutôt correct et qui se modifie selon ce que je tape sur Excel.
    Par la suite je peux modifier la source des liaison pour adapter le word avec un autre version du fichier Excel.

    Le problème (on y vient) c'est que ce que j'ai à mettre sur mon word prend parfois plusieurs pages et parfois non. (ça varie en fonction des équipements sélectionnés/cachés) Du coup sur mon word, ça dépasse de la page et je perds une partie de l'information.
    Je vois que sur word, le lien se fait via une zone d'impression. Du coup je me dis qu'il faudrait que la zone d'impression fasse tout pile une page A4, ou un maximum de 25 lignes par exemple.

    En pièce jointe mon fichier Excel simplifié et le fichier Word https://www.cjoint.com/c/IGlmlQ2KXvP

    Comme faire varier cette zone d'impression pour que le résultat sur Word fasse la longueur d'une page puis qu'une autre soit créer (ou est vide par défaut) dès que la zone d'impression précédente devient trop longue ?

    Merci à tous !

  2. #2
    Membre confirmé
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Par défaut
    En lisant d'autres post, j'ai l'impression que c'est faisable avec du VBA, mais je serai incapable de le faire

    En gros j'ai 3 onglets :

    - Le premier fait 1 à 2 pages
    - Le deuxième fait de 1 à 15 pages, facilement identifiable (l'utilisateur va faire en sorte que chaque page se termine au même endroit (par exemple chaque ligne 70 fait une nouvelle page : 70, 140, 210, etc)
    - Le troisième onglet comme le premier fait de une à deux pages

    Dans le Word, les onglets doivent être dans l'ordre.

    Ce serait top d'avoir la génération du fichier Word avec un macro

    Comme ça pas de changement de source à faire puisque j’obtiens un nouveau fichier Word à chaque fois. D’ailleurs le fichier Word aura le même nom que le fichier Excel.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Anthony47 Voir le message
    En pièce jointe mon fichier Excel simplifié et le fichier Word https://www.cjoint.com/c/IGlmlQ2KXvP
    Lire les règles du forum : https://www.developpez.net/forums/d8...s-discussions/

    Comme faire varier cette zone d'impression pour que le résultat sur Word fasse la longueur d'une page puis qu'une autre soit créer (ou est vide par défaut) dès que la zone d'impression précédente devient trop longue ?
    Avec la propriété PageSetup.PrintArea appliquée à la Worksheet concernée.
    https://docs.microsoft.com/fr-fr/off...etup.printarea

  4. #4
    Membre confirmé
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Par défaut
    Ah pardon, je pensais pas qu'avec ci-joint on ne pouvait pas non plus

    Je voudrais pas te déranger, mais je vois pas trop quoi faire de ce PageSetup.PrintArea

    Mes compétences en VBA sont assez limitées, j'arrive à comprendre les bouts de codes existants, les adaptés un peu, mais souvent pas à m'en créer de toute pièce

  5. #5
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Petit coup de pouce:

    Si votre zone d'impression est connue ("$A$1:$C$35" par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Sheet1").PageSetup.PrintArea = "$A$1:$C$35"
    Si le nombre de colonnes est variable, et que les colonnes sont adjacentes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Worksheets("Sheet1").Activate 
    ActiveSheet.PageSetup.PrintArea = ActiveCell.CurrentRegion.Address

  6. #6
    Membre confirmé
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    Petit coup de pouce:

    Si votre zone d'impression est connue ("$A$1:$C$35" par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Sheet1").PageSetup.PrintArea = "$A$1:$C$35"
    Si le nombre de colonnes est variable, et que les colonnes sont adjacentes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Worksheets("Sheet1").Activate 
    ActiveSheet.PageSetup.PrintArea = ActiveCell.CurrentRegion.Address
    Merci de ta réponse, mon nombre de colonne est fixe, mais le nombre de lignes non.

    Par exemple ma plage à disposer sur Word va de A1 à M150. Sur cette plage 1/3 des lignes sont masquées (jamais les mêmes, ni le même nombre)

    Tantôt la zone d'impression devrait faire de A1 à M150 parceque beaucouop de lignes sont masquées donc tout rentre sur un page;
    Tantôt la zone d'impression devrait aller de A1 à M45; puis une autre devrait aller de A46 à M150 parceque moins de lignes sont masquées donc ça doit se répartir sur 2 pages.

    J'ai testé la macro que tu m'as envoyé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Bouton2314_Cliquer()
    Worksheets("En_tête").PageSetup.PrintArea = "$A$1:$M$150"
    End Sub
    Mais ça me fait juste une zone d'impression de A1 à M150 sans découpage, et je vois pas non plus comment reporter ça sur Word

  7. #7
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Essayez ceci (création de pdf sous le même répertoire)
    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
    Sub Bouton2314_Cliquer()
    'Attention: si la zone d'impression n'est pas un "range", ça va générer une erreur !!!
     
        Dim zone, zoneX As String
        Dim i As Integer: i = 1
        Dim myPath, myFile As String
     
        Do While True
            zone = "zone " & i
            zoneX = InputBox("Donnez la zone d'impression numéro " & i, "Zones d'impression")
            If zoneX = "" Then Exit Do
            ActiveSheet.PageSetup.PrintArea = zoneX
     
            myPath = ActiveWorkbook.Path + "\"
            myFile = myPath & Replace(ActiveWorkbook.Name, ".xlsm", "")
            myFile = myFile & "_" & Format(Now(), "yyyymmdd-hhmmss") & ".pdf"
     
            Application.DisplayAlerts = False
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=myFile, Quality:= _
                xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                OpenAfterPublish:=False
            Application.DisplayAlerts = True
            ActiveWorkbook.Save
            i = i + 1
        Loop
     
    End Sub

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Anthony47 Voir le message
    Je voudrais pas te déranger, mais je vois pas trop quoi faire de ce PageSetup.PrintArea
    As-tu regardé le contenu du lien que je t'ai proposé ?

    Mes compétences en VBA sont assez limitées,
    Etant donné que ça fait plusieurs demande que tu places sur ce forum, il serait peut-être temps d'étudier sérieusement la question plutôt que de rester au bricolage.
    Lire ceci : http://bidou.developpez.com/article/VBA/

    j'arrive à comprendre les bouts de codes existants, les adaptés un peu, mais souvent pas à m'en créer de toute pièce
    Justement, dans le lien que je t'ai proposé, il y a un bout de code en exemple.

  9. #9
    Membre confirmé
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Par défaut
    Oui, oui, j'ai regardé ce que tu m'as envoyé mais comme dit, ça me parle pas

    Je ne sais pas quoi faire de ce truc, je le met dans une macro ? comme se fait le lien avec Word, je le met en formule de la zone d'impression ? qu'est-ce que je met autours ? Bref je suis perdu

    Tu as raison, il faut que je me forme, et je suis en train de le faire justement depuis quelques semaines, mais j'en suis qu'à essayer de bien comprendre comme régler/déclarer des variables, les boucles et les conditions.. Il me faut encore 5/6 mois avant d'arriver à comprendre ce que je fait de ce PageSetup.PrintArea

  10. #10
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Anthony47 Voir le message
    Oui, oui, j'ai regardé ce que tu m'as envoyé mais comme dit, ça me parle pas
    Je ne sais pas quoi faire de ce truc, je le met dans une macro ?
    Etant donné que c'est un élément de code VBA, bin oui, il faut le mettre dans une macro.

    comme se fait le lien avec Word
    Tu as dis que le lien avec Word était déjà fait dans ta macro.
    Ta question était de savoir comment spécifier la zone d'impression. C'est à ça que répond PageSetup.PrintArea.

    Si la demande est différente, il faut l'indiquer clairement.

    je le met en formule de la zone d'impression ?
    C'est l'élément qui, en VBA, permet de définir la zone d'impression, comme indiqué dans le lien fourni.

    qu'est-ce que je met autours ?
    Je te l'ai dit, il faut le référencé à la feuille de calcul (Worksheet) concernée, comme le montre l'exemple du lien donné.

    Tu as raison, il faut que je me forme, et je suis en train de le faire justement depuis quelques semaines, mais j'en suis qu'à essayer de bien comprendre comme régler/déclarer des variables, les boucles et les conditions.. Il me faut encore 5/6 mois avant d'arriver à comprendre ce que je fait de ce PageSetup.PrintArea
    Dans le document que je t'ai mis en lien dans ma réponse précédente, commence à lire la partie sur les objets (page 102 à 107) et plus particulièrement les objets Workbook (p 128), Worksheet (p 135) et Range (p 143) qui sont les principaux objets manipulés dans Excel.

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

Discussions similaires

  1. Export de tableaux Excel sur Word
    Par Wenth dans le forum Général VBA
    Réponses: 1
    Dernier message: 09/07/2014, 22h07
  2. Mise en page d'un document word depuis excel VBA
    Par tinange dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/12/2012, 12h42
  3. [WebI XiR2] Problème mise en page export excel
    Par moemie dans le forum Débuter
    Réponses: 8
    Dernier message: 18/06/2009, 15h10
  4. [Mise en page] Export Gridview vers Excel
    Par dai.kaioh dans le forum ASP.NET
    Réponses: 9
    Dernier message: 15/03/2008, 12h41
  5. Réponses: 3
    Dernier message: 02/05/2007, 16h27

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