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 Impression d'un(e) listview [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 74
    Par défaut VBA Impression d'un(e) listview
    Bonjour forum, chacun, tous,

    Je dois imprimer le contenu d'un(e) listview en VBA. De mes recherches je trouve qu'il n'est pas possible de réaliser cela bien que j'ai trouvé du code qui semble réaliser la chose en VB avec la notion d'objet Printer, laquelle n'existe pas en VBA. Pas de CommonDialog et pas de Printer en VBA.

    Donc, il ne me reste qu'à formater les données sur une feuille excel et imprimer le range...n'est ce pas ?

    Merci de m'indiquer quelles sont mes options

    Merci encore de votre indéfectible "support"

    Bo

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour,
    En attendant mieux (je cherche...)
    En dimensionnant l'userform aux dimensions de ta liste, si elle n'est pas trop longue, tu pourrais utiliser Printform ->
    Juste une idée

    Ce qui m'étonne c'est qu'on ne puisse pas utiliser simplement Mode Com... comme en basic, et utiliser Print suivi d'un CRLF pour passer en début de ligne suivante. Ici ça te serait utile.

    Peux-tu nous mettre le code que tu as en VB ?
    A+

    Edit
    Alors voilà...
    Comme je pense qu'une liste imprimée est tout ce qu'il te faut, j'ai imaginé une solution en créant un fichier texte temporaire...
    Je suppose une liste dans un userform, il te restera à adapter pour une listview
    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
    Private Sub CommandButton1_Click()
    Dim i As Integer, liste As String
     
    'On récupère le contenu de la liste
        For i = 0 To ListBox1.ListCount - 1
            liste = liste & ListBox1.List(i) & vbCrLf
        Next
    'on crée le fichier texte
        Open "D:\txt\UnFichierListe.txt" For Output As #1
        Print #1, liste
        Close #1
    'on ouvre le fichier texte dans Excel
        Workbooks.Open "D:\txt\UnFichierListe.txt"
    'on imprime
        ActiveSheet.PrintOut
    'on ferme
        ActiveWorkbook.Close False
        DoEvents 'laisse le tps au fichier de se fermer
    'on supprime le fichier
        'Kill "D:\txt\UnFichierListe.txt" 
    End Sub
    Si ça peut résoudre ton problème... c'est de toutes façons plus mieux que la première solution proposée.
    Tu dis
    A+

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, Ousk,

    Pourquoi passer par un secon tremplin si les données ont été écrites dans un fichier texte ?
    ceci devrait suffire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Declare Function toto Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    et (bien évidemment) appel ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RET = toto (hWndAccessApp, "print", strFileAndPath, vbNullString, vbNullString, 0)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 74
    Par défaut VBA Imprimer Listview
    Bonjour Ouskel'n'or, forum, tous et chacun

    L'intervention de ucfoutu est hors de portée en ce qui me concerne

    Ca marche bien, merci. J'ai bûché sur le listview tout l'aprem avant de pouvoir essayer le code. Mais la ca va. C'est assez simple somme toute.

    Merci encore, bon week-end.

    Bo

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Dommage pour la solution d'ucfoutu, l'édition évite l'ouverture du fichier. Mais il est vrai qu'elle manque d'explication pour un débutant.
    Elle consiste à déclarer une fonction en tête de la feuille de code de l'userform. Cette fonction peut faire un tas de choses mais pour ce qui concerne l'édition tu n'as que deux paramètres à renseigner, l'opération désirée ("Print") et le nom du fichier avec son chemin (lpFile)
    Je te remets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Declare Function Editer Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Il ne reste plus qu'à utiliser cette fonction dans le click du bouton lançant l'édition
    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
    Private Sub CommandButton1_Click()
    Dim i As Integer, liste As String, CheminNomFich as string, ret
        CheminNomFich = "D:\txt\UnFichierListe.txt"
        For i = 0 To ListBox1.ListCount - 1
            liste = liste & ListBox1.List(i) & vbCrLf
        Next
        Open CheminNomFich For Output As #1
        Print #1, liste
        Close #1
        DoEvents
     
    ' ********** Appel de la fonction d'édition selon uchs
        ret = Editer(hWndAccessApp, "print", CheminNomFich , vbNullString, vbNullString, 0)
    ' ************
     
        DoEvents
    'suppression du fichier
        Kill CheminNomFich
    End Sub
    A toutes fins utiles
    Bonne journée

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 74
    Par défaut VBA imprimer Listview ...suite
    Bonjour Ouskel'n'or, forum, chacun, tous

    Cette discussion a été "tagée" résolue...

    C'est plus clair maintenant, pas besoin de ré-ouvrir le fichier pour l'imprimer.

    Si l'on poursuit avec la version ou le fichier est ouvert avant l'impression, est ce possible d'ajouter ce contenu à un fichier excel existant plutôt...je vais l'essayer...

    Merci bien et A+

    Bo

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    ... est ce possible d'ajouter ce contenu à un fichier excel existant
    Ce que tu as est une feuille de calculs, c'est donc parfaitement possible, il suffit de copier la feuille ou son contenu. Mais j'ai l'impression qu'il y a plus simple pour obtenir directement le même résultat depuis ta liste...
    Et si tu nous disais ce que tu veux obtenir en faisant ça

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 74
    Par défaut VBA Imprimer Listview ...suite
    Manuellement nous produisions un tableau excel des données lequel, est maintenant remplacé par le listview de l'application. La demande initiale est d'imprimer ce listview (ca c'est fonctionnel) mais comme il est destiné à l'affichage (joli présentation)..j'aimerais savoir si je peux faire charger les données dans un gabarit de présentation (titre, couleurs, traits...) ..à imprimer


  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ben oui, tu peux sans problème et je ne vois pas ce qui t'en priverait...
    C'est là que ça se passe
    For i = 0 To ListBox1.ListCount - 1
    ....liste = liste & ListBox1.List(i) & vbCrLf
    Next
    tu ajoutes une ligne pour placer les données dans une feuille de calculs toute belle comme tu veux qu'elle soit belle et c'est tout. Ce qui donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        For i = 0 To ListBox1.ListCount - 1
            liste = liste & ListBox1.List(i) & vbCrLf
            Cells(i+1,1) = ListBox1.List(i)
        Next
    Il te reste à faire une belle mise en page une fois pour toute et, avant de la remplir de nettoyer la plage des données avec ClearContents -> F1

    Bonne soirée

    NB - Pourquoi Cells(i + 1,1) ? Parce que je fais commencer la page sur la ligne 1, la zéro n'existant pas. Pour faire démarrer ligne 2, tu mets i + 1 + 1, en 3 ? i + 1 + 1 + 1... etc

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 74
    Par défaut
    Cette façon de dire fait tjrs rire dans la langue de Molière...

    C'est tout...aussi simple que ca. J'essaie ca tout de suite. Je reviens

    Bo

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 74
    Par défaut VBa Impression listview ...fin
    Merci, Ouskel'n'or,

    la mise en page en prime...

    cette fois c'est vraiment résolu.

    A la prochaine,

    Bo

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

Discussions similaires

  1. [Toutes versions] Excel VBA Impression
    Par Otiss dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/03/2011, 06h56
  2. VBA & impression
    Par fisio dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/09/2009, 11h12
  3. [VBA]Impression état sans prévisualisation
    Par malabar92 dans le forum VBA Access
    Réponses: 3
    Dernier message: 03/04/2007, 16h10
  4. [VBA] Impression d'un pdf
    Par syldudu dans le forum VBA Access
    Réponses: 9
    Dernier message: 29/03/2007, 11h29
  5. Réponses: 5
    Dernier message: 21/01/2007, 19h31

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