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 :

[VBA] [E-03] copie conforme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Par défaut [VBA] [E-03] copie conforme
    Bonjour à tous et à chacun,

    Voilà, Je suis en possession d'un tableau excessivement imposant (en taille: nb de lignes, nb de colonnes) et je cherche à pouvoir l'éditer (entendez imprimer) par morceaux, lisibles.

    Je me suis d'abord penché sur des zones d'impressions, mais c'est peine perdue: Excel interdit les "zone d'impression" multiples.

    C'est donc tout naturellement, après lecture de différents discussions sur ce forum que j'ai pensé à faire une "copie temporaire" des parties de tableau m'intéressant.
    Le tout, dans autant de feuille temporaire qu'il y a de tableau, puis faire imprimer automatiquement chacun de ces sous-tableaux sur l'imprimante par défaut du poste et enfin, faire supprimer automatiquement les feuilles temporaires créées pour l'occasion.

    Ha! Oui! Petite précision: le déclenchement de l'opération d'édition se fait par un bouton présent sur la feuille du tableau a éditer.


    Mais là où ça coince, pour l'instant c'est à cet endroit dans mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set FL1 = ThisWorkbook.Sheets.Add
    FL1.Name = FL.Name & " Edit 1"
    FL.Range("AE1:BH86").Copy
    'Soucis!!!! lui (l'ordi) y en a pas comprendre!
    FL1.Range("A1:AC86")PasteSpecial Paste:=xlPasteFormats


    Je vous joins aussi l'ensemble du squelette de ma fonction.
    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
     
    Option Explicit
     
    Public Sub Editer()
     
    Dim FL As Worksheet, FL1 As Worksheet, FL2 As Worksheet, FL3 As Worksheet, FL4 As Worksheet
     
    'Faire un test: si autre feuille active que tableau comparatif alors désactiver les feuilles sauf le tableau.
     
    'Set FL = ActiveSheet
    Set FL = Worksheets("Tableau Comparatif").Name
     
     
    'Je crée une copie de la feuille éditée
    Set FL1 = ThisWorkbook.Sheets.Add
    FL1.Name = FL.Name & " Edit 1"
    FL.Range("AE1:BH86").Copy
    'Soucis!!!! lui (l'ordi) y en a pas comprendre!
    FL1.Range("A1:AC86")PasteSpecial Paste:=xlPasteFormats
    FL1.PasteSpecial Paste:=xlPasteColumnWidths
    FL1.PasteSpecial Paste:=xlValues
     
     
    Set FL2 = ThisWorkbook.Sheets.Add
    FL2.Name = FL.Name & " Edit 2"
     
    Set FL3 = ThisWorkbook.Sheets.Add
    FL3.Name = FL.Name & " Edit 3"
     
    Set FL4 = ThisWorkbook.Sheets.Add
    FL4.Name = FL.Name & " Edit Tout"
     
    'A la place du message qui suit, je vais m'amuser à faire apparaître une msgBox avec un chtit choix (radio button)
    'et si clic ok alors hop: impression des feuilles qui vont bien sur l'imprimante par défaut.
     
    MsgBox ("Feuilles crées... Appuyer sur OK pour les effacer ")
     
    Application.DisplayAlerts = False
    FL1.Delete
    FL2.Delete
    FL3.Delete
    FL4.Delete
    Application.DisplayAlerts = True
    End Sub
    Voilà, vous avez tout.

    En espérant que vous arriviez à me "décoincer" sur ce point.

    Si il vous manque quoi que ce soit demandez le moi, de mon côté je m'y remets,

    Cordialement,
    JB

  2. #2
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    à l'époque où j'avais de grands tableaux, je gérais les impressions avec des plages nommées.
    Il suffit ensuite de redéfinir la zone d'impression via VBA, ici une plage "toto"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    activesheet.names("Zone_d_impression").referstor1C1 = "=" & _
            range("toto").Address(true,true,xlR1C1)

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    bonjour

    ah doublé par Cafeine mais bon
    juste une petite modification déjà

    pour copy : Range("AE1:BH86") contient 30 colonnes et
    pour paste : Range("A1:AC86") n'en contient que 29

    donc tu veux coller quelque chose de trop gros

    est-ce que j'ai été assez claire ?

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Par défaut
    Merci Caféine et Zyhac,

    A Zyhac,

    C'est assez clair, je me suis planté, je rectifie pour voir si cela vient de là...j'éditerai pour te répondre.

    Après test, le problème ne vient pas de là, mais merci quand même , c'est le genre de "petit bug" qui aurait trainé jusqu'au bout et qui m'aurait énervé pendant un moment...je pense.


    A Caféine,

    Merci, je testerai volontiers cette méthode...Mais afin de mieux m'aider à la cerner...

    Si j'ai bien compris: On peut donc nommer des plages de cellules que l'on définit ensuite comme zone d'impression, c'est ça ou je me plante?

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Plutôt que de créer des feuilles, copier les plages, imprimer ces feuilles temporaires, supprimer les feuilles...ceci ne conviendrait pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("A1:E10").PrintOut '<-- impression plage 1
    Range("A11:E20").PrintOut '<-- impression plage 2
    Range("A21:E30").PrintOut '<-- impression plage 3
    Range("A31:E40").PrintOut '<-- impression plage 4
    On imprime que la plage "sélectionnée"
    Le même principe que caféine mais sans passer par des zones d'impression

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Effectivement je viens d'essayer ça marche bien, bravo, et c'est plus simple

  7. #7
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Par défaut
    Haaaaa Ouais!!!!

    Là je dis: "Môssieur".

    Mais, j'ai une question: le "print out" il va imprimer "tel quelle" la plage sélectionnée, tout de suite, sans passer par l'interface d'impression où l'on choisi le format, l'orientation, le nombre de copie...ou il m'envoie à cette boîte de dialogue?

    Et surtout, si je sélectionne plusieurs plages, il va me les imprimer sur une même feuille ou sur des feuilles séparées?

    Sinon, l'idée est extra, Fring,

    J'adaptes, je test...et tout et tout!

    Merci!

    Jibicas

    Edit:

    En fait il imprime en direct...
    Ce qui n'est pas pour me déranger dans l'absolu, j'imagine qu'il y a aussi moyen de modifier le format d'impression par:
    .PrintArea
    .Orientation
    .CenterHorizontally...

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Oui bien sûr, là j'ai juste indiqué le code minimum, on peut pour chaque impression redéfinir les propriétés si nécessaire ou les définir une fois pour toute (nombre de copie, orientation, format du papier, ligne de titre à répéter sur chaque page, etc...)

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

Discussions similaires

  1. Fichier batch - copie conforme d'un dossier
    Par Le_Che dans le forum Windows
    Réponses: 1
    Dernier message: 20/11/2006, 15h47
  2. [VBA-E] Probleme COPY PASTE d'une feuille à une autre
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 17h56
  3. Réponses: 3
    Dernier message: 08/06/2006, 15h14
  4. [VBA-E]sélec./copie lignes remplies vers feuille
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/01/2006, 15h35
  5. [VBA] word automation copy/paste
    Par Lysis dans le forum VBA Word
    Réponses: 2
    Dernier message: 16/09/2005, 12h45

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