Imprimer sous excel grace a VB

Bonjour,

j'ai un fichier excel où je place dans une dizaine de case un code (ex. E51A06900).
Ces "code" sont des dossiers que je vais rechercher dans une base de donnée http.
c'est du style http://serveur/ ... ... /E51A06900_A.HPGL
Il y a le "_A" car c'est le niveau de la modif du dossier.
ou il m'ouvre un fichier .tiff
Toutes ses cases sont des dossiers que je dois imprimer.

Je sais pas si vous me suivez sinon n'hesitez pas à me demander des renseignements.

Alors,
j'aimerai sous excel, grace a un programme (je pense ou macro), imprimer tous mes dossiers
lorsque je clic sur un bouton.

Est ce possible?...

Merci à tous.
Configuration: Windows XP
Internet Explorer 6.0

11 réponses

  1. Bonjour,

    Voilà une méthode pour fichier .PDF sous Excel. Je pense que cette méthode peut s'appliquer à tout type de fichier :

    Option Explicit
    
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
    Private Declare Function ShellExecute 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
    
    
    Sub ImprimerFichier()
        Dim NomFichier As String
        Dim x As Long
        
        x = FindWindow("XLMAIN", Application.Caption)
        NomFichier = "C:\dossier\rapport.pdf"
        
        ShellExecute x, "print", NomFichier, "", "", 1
    End Sub
    


    ;o)
    1. je connais pas VB en faite ou tres peu...
      je connais le C++ un petit peu donc
      autant dire que la programmation et moi c'est 2. lol
      pourquoi tu va cherche des choses dans le "system32 user private"
      je voudrais que tu m'explique un peu en faite si tu veux bien.
      merci
      1. "user32" et "shell32.dll" sont l'équivalents des librairies que tu déclares en C ou C++.

        ;o)
        1. merci, dsl j'ai l'air ridicule.
          mais jme dis qu'il faut bien commencer.
          en tout cas merci, j'essaye ca demain et je te retien au courant si tveu bien.
          1. Ok, pas de blème ... et oui, il faut bien commencer un jour et puis, à quoi servirait CCM si tout le monde savait tout ? hien ?

            ;o)
            1. salut,

              alors j'ai essayer avec ton programme.. il fonctionne pr tous les dossier dans mon C:
              mais je travail sur un reseau et les dossiers que je souhaite imprimer sont dans une base http\\...
              alors ca ne marche pas lorsque je fais :

              Sub ImprimerFichier()
              Dim NomFichier As String
              Dim x As Long

              x = FindWindow("XLMAIN", Application.Caption)
              NomFichier = "http://za21ncy/cgi-bin/iman/QtBdsweNFckqqC/E51B26100,_,spec.hpgl"

              ShellExecute x, "print", NomFichier, "", "", 1
              End Sub

              En plus j'ai un mot de passe a valider avant de tomber sur la page en question....
              Je sais c'est pas simple...
              1. Bonjour,

                Je ne comprends pas ça : "je travail sur un reseau et les dossiers que je souhaite imprimer sont dans une base http\\..."

                Tu es sur de l'intranet ou sur un serveur réseau. Les accès sont différents !!!

                ;o)
                1. Je pense que c'est un serveur reseau car c'est une base de donnée propre à un logiciel (Teamcenter).
                  1. Sub ImprimerFichier()
                    Dim case1

                    Worksheets("Commande").Range("H9") = case1
                    ActiveWorkbook.FollowHyperlink Address:="http://za21ncy/cgi-bin/iman/wYAB4vA1FckqqC/case1_.HPGL", _
                    NewWindow:=True

                    End Sub

                    Ce pti programme me permet d'ouvrir l'adresse http MAIS ce que je voudrais c'est que ce que j'ai dans ma page Excel case H9 se retrouve dans mon adress http à l'emplacement case1...

                    vous voyez..?
                    1. il faut faire comme ça :

                      Sub ImprimerFichier() 
                      Dim case1
                      Dim adresseHTTP As String
                      
                      case1  = Worksheets("Commande").Range("H9") .Value   'case1 prend la valeur de H9
                      
                      'configuration de l'adresse
                      adresseHTTP = "http://za21ncy/cgi-bin/iman/wYAB4vA1FckqqC/" & case1 & "_.HPGL"
                      
                      ActiveWorkbook.FollowHyperlink Address:= adresseHTTP, NewWindow:=True 
                      
                      End Sub 


                      ;o)
                    2. @Polux31Merci, c'est vrai que ca marche tout de suite mieu... :)

                      Sinon, peut on mettre une adresse partiel..? du style :

                      "http://za21ncy/cgi-bin/iman/(ici mettre une formule que je connais pas)/" & case1 & " (ici mettre une formule que je connais pas).HPGL"

                      pour au final, il trouve le lien

                      "http://za21ncy/cgi-bin/iman/wYAB4vA1FckqqC/" & case1 & "_.HPGL"

                      tout seul, comme un grand..?
                    3. @banbiouOui de la même façon ... il faut faire comme ça par exemple

                      Dim uneformulequejeneconnaispas As Variant
                      Dim uneautreformulequejeneconnaispas As Variant
                      
                      adresseHTTP = ""http://za21ncy/cgi-bin/iman/" & uneformulequejeneconnaispas & "/" & case1 & uneautreformulequejeneconnaispas & "etcetc"


                      ;o)
                    4. @Polux31merci polux31, en faite j'ai fait:

                      Dim a As Variant
                      Dim b As Variant

                      adresseHTTP = "http://za21ncy/cgi-bin/iman/" & a & "/" & case1 & "_" & b & ".hpgl"

                      mais cela m'ouvre : http://za21ncy/cgi-bin/iman//E51S8S288A_.hpgl
                      MAIS je voudrais qu'il ouvre: http://za21ncy/cgi-bin/iman/QxMh_DewFckqqC/E51S8S288A,A,.hpgl

                      Il y a tjs ces variantes "QxMh_DewFckqqC" et ",A," que je ne connais pas d'avance.

                      Est ce qu'il n'existe pas une fonction qui puisse m'ouvrir un lien avec des inconnu de ce type?
                      style : http://za21ncy/cgi-bin/iman/.../E51S8S288A... .hpgl
                      et qui m'ouvre: http://za21ncy/cgi-bin/iman/QxMh_DewFckqqC/E51S8S288A,A,.hpgl

                      Tu comprend ? c'est un peu chaud pour commencer à apprendre le VB.
                      Mais je suis content j'en sais plus que hier, et j'espere moins que demain...

                      Merci d'avance.
                    5. @banbiouBonjour,

                      C'est normal que tu obtiennes ce résultat : http://za21ncy/cgi-bin/iman//E51S8S288A_.hpgl
                      Les variables a et b ne sont pas initialisées.

                      Est ce qu'il n'existe pas une fonction qui puisse m'ouvrir un lien avec des inconnu de ce type?
                      Pour ouvrir un lien, il faut que celui ci soit complet. Je ne connais pas de fonctions qui permettent d'anticiper le chemin d'accès à un fichier. C'est comme si tu envoyais une lettre aux USA avec uniquement le prénom et le nom du destinataire ...

                      Peut être existe-t-il un moyen de récupérer les chaînes manquantes de ton adresse, avant de l'imprimer ?
                      Si ce n'est pas le cas, l'opération est impossible.

                      ;o)
                  2. Je ne sais pas te répondre alors.

                    Si c'est une base de donnée, il doit y avoir un protocole pour y accèder, OLE DB, DAO ou ADO en règles générales mais qui peuvent être particulières pour certaines bases. Il doit falloir accèder aux données de la base par requête type SQL si la base de données est relationnelle.

                    Il faut te rapprocher de la doc technique (si elle existe) du logiciel Teamcenter.

                    Désolé, mais je n'ai jamais eu à traiter ce genre de problème.

                    Bon courage.

                    ;o)