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 :

imprimer des plages non-continues


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut imprimer des plages non-continues
    Bonjour à tous,
    N'étant pas trop calé en VBA je n'arrive pas à solutionner un petit souci.
    J'ai créé un bouton sur une feuille dans lequel j'ai un code qui sélectionne et imprime deux plages de cellules non-continues. La macro fonctionne très bien, le souci est que les deux plages s'impriment sur deux feuilles différentes, alors que je souhaite les imprimer sur une même feuille.
    Est-il possible d'imprimer sur une seule feuille ?
    voici le code de mon bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub CommandButton1_Click()
     Application.Union(Range("komori2coul"), Range("Notes")).Select
     Selection.PrintOut Copies:=1
    ActiveCell.Select
    End Sub
    D'avance je vous remercie pour votre aide
    Naitgo

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    C'est peut être possible autrement, mais pourquoi ne pas copier la plage sur une feuille, l'imprimer et ensuite supprimer cette feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Worksheets.Add After:=Worksheets(Worksheets.Count)
    Application.Union(Range("komori2coul"), Range("Notes")).copy Worksheets(Worksheets.Count).Range("A1")
    Worksheets(Worksheets.Count).PrintOut Copies:=1
    Application.DisplayAlerts=False
    Worksheets(Worksheets.Count).Delete
    Application.DisplayAlerts=True

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    Merci pour ta réponse diude54,
    Mais le code bloque au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.Union(Range("komori2coul"), Range("Notes")).copy Worksheets(Worksheets.Count).Range("A1")
    Je me demande si il ne faut pas coller, ce que l'on à copié, sur la nouvelle feuille.
    Sinon je pense que la démarche est bonne.
    Merci pour ton aide

  4. #4
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Essai comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Plage as Range
    Set Plage=Application.Union(Range("komori2coul"), Range("Notes"))
    Worksheets.Add After:=Worksheets(Worksheets.Count)
    Plage.copy Worksheets(Worksheets.Count).Range("A1")
    Worksheets(Worksheets.Count).PrintOut Copies:=1
    Application.DisplayAlerts=False
    Worksheets(Worksheets.Count).Delete
    Application.DisplayAlerts=True
    Ici on fait une copie directement sur la feuille que l'on viens d'ajouter sans passer par le presse papier.La deuxième partie de la ligne ( après le copie définie la destination, pas besoin de paste.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    J'ai toujours un blocage au niveau de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Plage.Copy Worksheets(Worksheets.Count).Range("A1")
    j'ai essayé avec Range("A1":"P25"), cela ne change rien
    Encore merci pour ton aide
    Naitgo

  6. #6
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Chez moi je n'arrive pas à créer une plage de cellules contenues sur des feuilles différentes. Pour contourner le problème tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Worksheets.Add After:=Worksheets(Worksheets.Count)
    Range("komori2coul").copy Worksheets(Worksheets.Count).Range("A1")
    Range("Notes").copy Worksheets(worksheets.Count).Range("A" & Worksheets(Worksheets.Count).Range("A65536").End(XlUp).row)
     
    Worksheets(Worksheets.Count).PrintOut Copies:=1
    Application.DisplayAlerts=False
    Worksheets(Worksheets.Count).Delete
    Application.DisplayAlerts=True
    Je n'ai aucun problème avec le copy

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    Je suis vraiment désolé, mais cela ne fonctionne pas tout à fait.
    Le code se déroule normalement.
    Il y a bien création d'une feuille et copie du premier Range, mais le second Range n'apparait pas et la nouvelle feuille ne s'imprime pas. Elle ne s'efface pas non-plus, comme si le code s'arrêtait trop tôt.
    Je précise que mes deux plages nommées sont sur une même feuille.
    Merci encore, je ne voudrait pas abuser de ton temps.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 121
    Par défaut
    Bonjour,

    J'ai trouvé ça, si tu y trouve une idée pour ton problème

    http://www.veriti.net/articles.php?lng=fr&pg=155

  9. #9
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Est il possible que tu donnes ton code à toi (en entier).
    Comment déclares tu "Notes" et "Komori2coul"
    Moi je travaille comme ceci avec les plages par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set Pl1= Range("A1","B5")
    Set Pl2= Range("B10","C" & Range("C65536").End(XlUp).Row)
    'Ensuite pour copier les plages:
    Pl1.Copy Worksheets(Worksheets.Count).Range("A1") ' Envoi Pl1 Sur la dernière feuille du classeur en A1 (du coup entre A1 et B5)

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une proposition particulière sous certaines conditions!!!!
    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
    Dim Plg As Range, zn As Range
     
    Application.ScreenUpdating = False
     
    Set Plg = Union(Range("komori2coul"), Range("Notes"))
        Cells.Columns.Hidden = True
        Cells.Rows.Hidden = True
        Plg.Columns.Hidden = False
        Plg.Rows.Hidden = False
     
        Cells.PrintOut
     
        Cells.Columns.Hidden = False
        Cells.Rows.Hidden = False
    Set Plg = Nothing
     
    Application.ScreenUpdating = True

Discussions similaires

  1. compter les occurrences sur des plages non contiguës
    Par docjo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/10/2009, 12h08
  2. [XL-2003] Problème avec des plages de cellules non rectangulaires
    Par rodival dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/08/2009, 16h49
  3. type de donnée qui accepte des caractères non imprimables
    Par tasnim86 dans le forum Général Python
    Réponses: 1
    Dernier message: 11/03/2008, 14h37
  4. Gestion des caractères non-imprimables
    Par azr dans le forum Langage
    Réponses: 2
    Dernier message: 17/12/2007, 23h37
  5. repérage des signes non-imprimable
    Par Jabveneau dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2007, 13h14

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