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 :

[VB]infos complémentaires pour l'impression d'une page excel avec vb


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut [VB]infos complémentaires pour l'impression d'une page excel avec vb
    Bnjour, je souhaite pouvoir imprimer une feuille excel réalisée sous vb tout en pouvant choisir l'imprimante à utiliser. Etant débutant sous vb, j'ai cherché dans les F.A.Q et trouvé la solution du controle CommonDialog. Mais comment faire pour imprimer la page excel désirée ?
    Merci d'avance

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    A quelles boîte de dialogue fais-tu appel ?
    Ne peux-tu pas plutôt utiliser la syntaxe Excel ?
    Dans VBA, il existe le paramètre "xlDialogPrintPreview" pour les boîtes de dialogue intégrées que tu devrais pouvoir ouvrir
    "Appxl.Dialogs.Item(xlDialogPrintPreview).Show"
    où Appxl est l'instance de l'appli Excel
    Tu as également
    "Appxl.Dialogs.Item(xlDialogPrint).Show"

    A tout hasard

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Avec le controle CommonDialog, j'utilise l'instruction ShowPrinter
    Est-ce que les instructions qu'on m'a données permettent aussi de choisir l'imprimante ?

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Je ne comprend pas ce qu'il faut faire. J'ai essayé d'utiliser xlDialogPrintPreview mais sans résultat.
    J'aurais du préciser que je suis un débutant en programmation tout court.
    Merci d'avance de votre aide
    A +

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut [VB]Besoin d'infos complémentaires sur excel avec vb
    Je souhaite pouvoir imprimer une feuille excel réalisée sous vb tout en pouvant choisir l'imprimante à utiliser. Etant débutant sous vb, j'ai cherché dans les F.A.Q et trouvé la solution du controle CommonDialog. Mais comment faire pour imprimer la page excel désirée ?

    Ouskel'n'or m'a dit:
    A quelles boîte de dialogue fais-tu appel ?
    Ne peux-tu pas plutôt utiliser la syntaxe Excel ?
    Dans VBA, il existe le paramètre "xlDialogPrintPreview" pour les boîtes de dialogue intégrées que tu devrais pouvoir ouvrir
    "Appxl.Dialogs.Item(xlDialogPrintPreview).Show"
    où Appxl est l'instance de l'appli Excel
    Tu as également
    "Appxl.Dialogs.Item(xlDialogPrint).Show"

    J'ai essayé d'utiliser le le paramètre "xlDialogPrintPreview" en activant les références excel, mais ca ne marche pas. Il faut peut etre activer des controles, mais je ne trouve pas lesquels. De plus, je ne sais pas si ces solutions permettent de choisir l'imprimante ou imprimer.
    Merci d'aide un débutant.

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    peu tu nous montrer un peu plus de ton code ?

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Ne sachant pas quoi montrer exactement, je mets le code qui crée les feuuilles excel et réalise la demande d'impression:

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    Private Sub Picture2_Click()
    Dim valeur1, valeur2, valeur3, valeur4, valeur5, valeur6, valeur7, valeur8, valeur9, valeur10
    Dim valeur11, valeur12, valeur13, valeur14, valeur15, valeur16, valeur17, valeur18, valeur19
    Dim valeur20, valeur22, valeur23, valeur24
    nombre = 0
    adresse = "U:\spc\" + Combo1.Text + "\" + Combo2.Text + "\" + Combo3.Text 
    Dim oExcel As excel.Application
    Dim wrkBook As excel.Workbook
    Dim machin
    '************************************************************************
    '* Ouvrir un classeur
    '************************************************************************
    'oExcel.Visible = True '/ facultatif: pour les zeuils
    On Error Resume Next
    Set oExcel = New excel.Application
    Set wrkBook = oExcel.Application.Workbooks.Open _
        ("C:\Documents and Settings\goodyear\Bureau\Aurelien boucher periode du 21 dec 2005 au 24 mers 2006\recuperation\calcul spc sous excel.xls")
    'Ouvrir le classeur provisoire.xls
    oExcel.Application.Sheets(1).Select 'revenir a la 1 posit
    oExcel.Application.Worksheets.Add 'Ajouter 1 n feuille
    oExcel.Application.Range("A1").Select ' Idem
    oExcel.Sheets(1).Name = "SPC"
    oExcel.Visible = True
    Dim ligne As String
    Dim LigneExcel, colonneexcel As Integer
    Dim PointVirgule1 As Integer
    Dim Data1 As String
    'Ouvrir le fichier texte "txt" en mode lecture
    Open adresse For Input As #1
    'Rendre visible EXCEL
    'Appli.Visible = True
    'Créer un nouveau classeur EXCEL initialisé à la ligne 1
    'Appli.Workbooks.Add.Activate
    LigneExcel = 1
    colonneexcel = 1
    'Inscrire le contenu du fichier texte dans la feuille 1 du classeur EXCEL
    Do While EOF(1) = False
    Input #1, valeur1, valeur2, valeur3, valeur4, valeur5, valeur6, valeur7, valeur8, valeur9, _
             valeur10, valeur11, valeur12, valeur13, valeur14, valeur15, valeur16, valeur17, _
             valeur18, valeur19, valeur20, valeur22, valeur23, valeur24
    oExcel.Worksheets("SPC").Cells(LigneExcel, 1).Value = valeur1
    oExcel.Worksheets("SPC").Cells(LigneExcel, 2).Value = valeur2
    oExcel.Worksheets("SPC").Cells(LigneExcel, 3).Value = valeur3
    oExcel.Worksheets("SPC").Cells(LigneExcel, 4).Value = valeur4
    oExcel.Worksheets("SPC").Cells(LigneExcel, 5).Value = valeur5
    oExcel.Worksheets("SPC").Cells(LigneExcel, 6).Value = valeur6
    oExcel.Worksheets("SPC").Cells(LigneExcel, 7).Value = valeur7
    oExcel.Worksheets("SPC").Cells(LigneExcel, 8).Value = valeur8
    oExcel.Worksheets("SPC").Cells(LigneExcel, 9).Value = valeur9
    oExcel.Worksheets("SPC").Cells(LigneExcel, 10).Value = valeur10
    oExcel.Worksheets("SPC").Cells(LigneExcel, 11).Value = valeur11
    oExcel.Worksheets("SPC").Cells(LigneExcel, 12).Value = valeur12
    oExcel.Worksheets("SPC").Cells(LigneExcel, 13).Value = valeur13
    oExcel.Worksheets("SPC").Cells(LigneExcel, 14).Value = valeur14
    oExcel.Worksheets("SPC").Cells(LigneExcel, 15).Value = valeur15
    oExcel.Worksheets("SPC").Cells(LigneExcel, 16).Value = valeur16
    oExcel.Worksheets("SPC").Cells(LigneExcel, 17).Value = valeur17
    oExcel.Worksheets("SPC").Cells(LigneExcel, 18).Value = valeur18
    oExcel.Worksheets("SPC").Cells(LigneExcel, 19).Value = valeur19
    oExcel.Worksheets("SPC").Cells(LigneExcel, 20).Value = valeur20
    oExcel.Worksheets("SPC").Cells(LigneExcel, 21).Value = valeur22
    oExcel.Worksheets("SPC").Cells(LigneExcel, 22).Value = valeur23
    oExcel.Worksheets("SPC").Cells(LigneExcel, 23).Value = valeur24
    LigneExcel = LigneExcel + 1
    Loop
    Close
    '************************************************************************
    '* remplir_moyenne_exterieur
    '************************************************************************
    Dim a
    Dim b
    Dim c
    Dim d
    Dim l
    a = 6
    b = 2
    c = 1
    d = 17
    Do
    If oExcel.Worksheets("SPC").Cells(c, d).Value = "" Then GoTo fin_remplir_moyenne_exterieur
    l = oExcel.Worksheets("SPC").Cells(c, d).Value
    l = Round(l, (2))
    oExcel.Worksheets("feuille calcul").Cells(a, b).Value = l
    nombre = nombre + 1
    c = c + 1
    b = b + 1
    Loop
    fin_remplir_moyenne_exterieur:
    '************************************************************************
    '* remplir_moyenne_interieur
    '************************************************************************
    a = 7
    b = 2
    c = 1
    d = 19
    Do
    If oExcel.Worksheets("SPC").Cells(c, d).Value = "" Then GoTo fin_remplir_moyenne_interieur
    l = oExcel.Worksheets("SPC").Cells(c, d).Value
    l = Round(l, (2))
    oExcel.Worksheets("feuille calcul").Cells(a, b).Value = l
    c = c + 1
    b = b + 1
    Loop
    fin_remplir_moyenne_interieur:
    '************************************************************************
    '* remplir_etendu_exterieur
    '************************************************************************
    a = 10
    b = 2
    c = 1
    d = 21
    Do
    If oExcel.Worksheets("SPC").Cells(c, d).Value = "" Then GoTo fin_remplir_etendu_exterieur
    l = oExcel.Worksheets("SPC").Cells(c, d).Value
    l = Round(l, (2))
    oExcel.Worksheets("feuille calcul").Cells(a, b).Value = l
    c = c + 1
    b = b + 1
    Loop
    fin_remplir_etendu_exterieur:
    '************************************************************************
    '* remplir_etendu_interieur
    '************************************************************************
    a = 11
    b = 2
    c = 1
    d = 23
    Do
    If oExcel.Worksheets("SPC").Cells(c, d).Value = "" Then GoTo fin_remplir_etendu_interieur
    l = oExcel.Worksheets("SPC").Cells(c, d).Value
    l = Round(l, (2))
    oExcel.Worksheets("feuille calcul").Cells(a, b).Value = l
    c = c + 1
    b = b + 1
    Loop
    fin_remplir_etendu_interieur:
     
    '************************************************************************
    '* remplir_feuille_à_imprimer
    '************************************************************************
    oExcel.Worksheets("feuille calcul").Cells(14, 5).Value = nombre
    oExcel.Worksheets("exterieur").Cells(3, 2).Value = oExcel.Worksheets("SPC").Cells(1, 1).Value
    oExcel.Worksheets("exterieur").Cells(1, 2).Value = Combo1.Text
    oExcel.Worksheets("exterieur").Cells(1, 9).Value = Combo2.Text
    oExcel.Worksheets("exterieur").Cells(3, 2).Value = Combo3.Text
    oExcel.Worksheets("feuille calcul").Cells(23, 5).Value = nombre
    oExcel.Worksheets("interieur").Cells(3, 2).Value = oExcel.Worksheets("SPC").Cells(1, 1).Value
    oExcel.Worksheets("interieur").Cells(1, 2).Value = Combo1.Text
    oExcel.Worksheets("interieur").Cells(1, 9).Value = Combo2.Text
    oExcel.Worksheets("interieur").Cells(3, 2).Value = Combo3.Text
     
    '************************************************************************
    '* effacer la page SPC
    '************************************************************************
    oExcel.DisplayAlerts = False
    oExcel.Worksheets("SPC").Delete
    oExcel.DisplayAlerts = True
    If Check1 = 1 Then
    End
    End If
     
    '************************************************************************
    '* Terminer
    '************************************************************************
    Form2.Show
    Unload Form1
    Clipboard.Clear ' vider le buffer d'application
    If oExcel.Workbooks.Count > 0 Then ' Fermer les
    oExcel.ActiveWorkbook.Close False 'classeur
    oExcel.Quit
    End If
    Set wrkBook = Nothing ' A ne pas oublier
    Set oExcel = Nothing
    '***********************************************************************
    '* demande d'impression
    '***********************************************************************
    machin = MsgBox("Voulez vous imprimer le spc?", vbYesNo, "Impression")
    If machin = 6 Then
    'CommonDialog1.ShowPrinter
    'oExcel.Worksheets("exterieur").Dialogs.Item(xlDialogPrintPreview).Show
    Else
    MsgBox ("on imprime pas")
    Exit Sub
    End If
    End Sub

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    si c'est pour un aperçu avant impression peu être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oExcel.Worksheets("exterieur").PrintPreview
    ou boite de dialogue choix imprimante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oExcel.Application.Dialogs(xlDialogPrint).Show

    Position du code ..: quand je lit ton code j'ai l'impression que tu ve imprimer la feuille excel aprés avoir fermé excel ! ... modifie l'ordre..

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    J'ai fusionné les 2 discussions puisqu'il s'agit du même sujet.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    J'ai testé ces codes. Il n'y a pas d'erreur quand je les utilise mais rien ne se passe à l'écran: pas d'apercu ou pas de boite de dialogue d'impression

    Après quelques recherches, il semble que la meilleure solution soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogPrintSetup).Show
    Mais j'ai une erreur à l'excécution: variable non définie pour xlDialogPrintSetup alors que je pense que c'est un controle

    Merci d'aider un pauvre debutant

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Merci de m'avoir conseillé. J'ai finallement trouvé une solution pour imprimer les feuilles que je voulais sur une imprimante. Voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     oExcel.Worksheets("exterieur").Select
      ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, ActivePrinter:="QA_PC_P2 sur Froff01", Collate:=True
      oExcel.Worksheets("interieur").Select
      ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, ActivePrinter:="QA_PC_P2 sur Froff01", Collate:=True
    Cependant, je voudrais pouvoir imprimer ces pages sans quelles apparaissent à l'écran. Mais comment faire?

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Excusez moi, vraiment trop con. Il sufit de placer le code au bon endroit.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/11/2014, 23h24
  2. Comment appeler une page excel avec JSF
    Par rabebIF5 dans le forum JSF
    Réponses: 3
    Dernier message: 02/06/2009, 08h12
  3. macro pour impression d'une ligne excel sous word
    Par schwoby dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 12h02
  4. Réponses: 4
    Dernier message: 18/10/2005, 15h21

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