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 :

Probleme choix imprimante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Commercial
    Inscrit en
    Juillet 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Commercial
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 23
    Par défaut Probleme choix imprimante
    Bonjour à tous,

    Après une journée entiere de recherche infructueuses je lance un appel au secours....

    voila, j'ai un fichier qui utilise 2 imprimantes, 1 A4 pour la majorité du classeur et une thermique pour une seule feuille.

    j'ai réussi a faire le changement d'imprimante sans avoir à passer par la boite de choix d'imprimante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Activate()
     
    ActivePrinter = "THERMAL Receipt Printer sur Ne00:"
     
    End Sub
     
     
     
    Private Sub Worksheet_Deactivate()
    Application.ActivePrinter = "Canon MG5600 series Printer sur Ne06:"
    End Sub

    mais mon probleme est que ce programme servira sur d'autres ordinateurs sans que je connaisse au préalable leurs imprimantes.

    existe-t-il un moyen pour que ce changement se fasse sur d'autres ordinateurs sans avoir a passer par la boite de dialogue??

    je vous remercie d'avance

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, pour les mêmes imprimantes le N° dans NExx change suivant le pc ( en fait suivant l'ordre dans lequel les pilotes ont été installés ).

    Test_Liste_Imprimantes_Ports permet d'obtenir une visualisation des imprimantes et ports ( pj ).
    Test_Impression ici pour PDFCreator sera à adapter à ton contexte.

    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
    Option Explicit
     
    Private Declare Function GetProfileSection& Lib "kernel32" Alias "GetProfileSectionA" ( _
                                                ByVal lpAppName As String, _
                                                ByVal lpReturnedString As String, _
                                                ByVal lngSize As Long)
     
    Private Function ListeImprimantes() As Variant
    Dim sA As String, rep As Long, cpt As Long, pos As Long, T() As String
        sA = Space(2048)
        rep = GetProfileSection("devices", sA, 2048)
        If rep > 0 Then
            sA = Trim$(Replace(sA, Chr(0), ""))
            Do Until sA = ""
                cpt = cpt + 1
                ReDim Preserve T(1 To 2, 1 To cpt)
                pos = InStr(1, sA, "=") - 1
                T(1, cpt) = Mid$(sA, 1, pos)
                pos = InStr(1, sA, ",") + 1
                T(2, cpt) = Mid(sA, pos, InStr(1, sA, ":") + 1 - pos)
                sA = Mid$(sA, InStr(1, sA, ":") + 1)
            Loop
        End If
        ListeImprimantes = Application.WorksheetFunction.Transpose(T)
    End Function
     
    Sub Test_Impression()
    Dim sImp As String
    Dim TabImprimantes As Variant
    Dim i As Long
     
        sImp = Application.ActivePrinter
        TabImprimantes = ListeImprimantes
     
        For i = 1 To UBound(TabImprimantes, 1)
            If TabImprimantes(i, 1) = "PDFCreator" Then
                Application.ActivePrinter = TabImprimantes(i, 1) & " sur " & TabImprimantes(i, 2)
                Exit For
            End If
        Next i
     
        Sheets(1).PrintOut
     
        Application.ActivePrinter = sImp
    End Sub
     
    Sub Test_Liste_Imprimantes_Ports()
    Dim sA As String, rep As Long, cpt As Long, pos As Long, T() As String
        sA = Space(2048)
        rep = GetProfileSection("devices", sA, 2048)
        If rep > 0 Then
            Feuil1.Cells.Clear
            sA = Trim$(Replace(sA, Chr(0), ""))
            Do Until sA = ""
                cpt = cpt + 1
                ReDim Preserve T(1 To 2, 1 To cpt)
                pos = InStr(1, sA, "=") - 1
                T(1, cpt) = Mid$(sA, 1, pos)
                pos = InStr(1, sA, ",") + 1
                T(2, cpt) = Mid$(sA, pos, InStr(1, sA, ":") + 1 - pos)
                sA = Mid$(sA, InStr(1, sA, ":") + 1)
     
                With Feuil1
                    .Cells(cpt, 1) = T(1, cpt)
                    .Cells(cpt, 2) = T(2, cpt)
                End With
            Loop
        End If
    End Sub
    Images attachées Images attachées  

  3. #3
    Membre averti
    Homme Profil pro
    Commercial
    Inscrit en
    Juillet 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Commercial
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 23
    Par défaut
    Merci Kiki29,

    et sinon je pensais a une autre possibilité.

    est-ce qu'il est possible que l'utilisateur choisisse ses imprimantes en début de programme?

    disons que dans la feuille de départ qu'on appelera "Tableau de bord", il y ai 2 boutons, le premier permettrai de choisir l'imprimante 1 et le deuxieme, l'imprimante 2 et que ces choix soient définitifs pour le temps d'utilisation du programme. Ce qui permettrait que le code que j'ai présenté au début du sujet devienne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Activate()
     
    ActivePrinter = Imprimante1
     
    End Sub
     
     
     
    Private Sub Worksheet_Deactivate()
    Application.ActivePrinter = Imprimante2
    End Sub

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, c'est à toi de voir, je n'ai aucun talent divinatoire. Autre chose, une digression, mais tu devrais t'intéresser au CodeName. Cela permet à l'utilisateur de déplacer une feuille, de renommer les feuilles sans avoir à retoucher au code VBA.

  5. #5
    Membre averti
    Homme Profil pro
    Commercial
    Inscrit en
    Juillet 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Commercial
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 23
    Par défaut
    bon j'ai avancé un peu, mais il me manque quelque chose

    je joins un fichier test et voila ce qui me manque:

    une fois que mes imprimantes sont détéctés, je souhaiterais que, quand j'active la feuil2 l'imprimante soit la valeur C2 de la feuille 1 et quand je sors de la feuil2, l'imprimante soit la valeur C1 de la feuil1.

    Bien évidement, C1 et C2 de la feuil1 peuvent varier en fonction de l'utilisateur.

    Je sais pas si j'ai été très clair

    test.xlsm

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, à voir en l'adaptant à tes imprimantes.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. probleme (bizarre) imprimante
    Par nox75 dans le forum Périphériques
    Réponses: 2
    Dernier message: 17/04/2007, 10h37
  2. [PB 8] Objet OLE Word; Affichage fenêtre choix imprimante
    Par Kalini dans le forum Powerbuilder
    Réponses: 5
    Dernier message: 18/01/2007, 15h31
  3. Problem avec imprimante Epson EPL-5900L
    Par wodel dans le forum Matériel
    Réponses: 1
    Dernier message: 20/09/2006, 08h59
  4. [VBS]Choix Imprimante
    Par dj-julio dans le forum VBScript
    Réponses: 4
    Dernier message: 19/01/2006, 09h05
  5. Choix imprimante.
    Par genius99 dans le forum Access
    Réponses: 14
    Dernier message: 18/10/2004, 14h26

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