Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
991 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro excel qui imprime si la feuille existe uniquement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

macro excel qui imprime si la feuille existe uniquement

n°2159479
vinz51
Posté le 07-10-2012 à 20:08:06  profilanswer
 

Bonsoir à tous,
je sollicite votre aide car j'ai tant bien que mal créé une macro répondant à mon besoin : celui d'imprimer une feuille Excel bien spécifique  ; si elle n'existe pas, rien ne doit être imprimé.
Je mets donc On Error Resume Next pour éviter de rencontrer l'erreur. Le problème est que cette petite ligne provoque l'impression de la feuille active lors de l'ouverture du classeur !!!
Pouvez-vous m'aider svp ?
Merci d'avance, et bonne soirée
 
 
 
Sub Macro2()
'
Dim wb As Workbook, wb2 As Workbook
Dim sPath As String, sFilename As String
Dim NbRows As Integer, rg As Range
 
Application.ScreenUpdating = False
 
sPath = Range("B10" ).Value       'Répertoire souhaité saisi dans la cellule b10
sFilename = Dir(sPath & "*.xls*" )        'ouvre tous les fichiers .xls*
 
Do While Len(sFilename) > 0
    Set wb2 = Workbooks.Open(sPath & sFilename)           'Ouvre le fichier
     
   On Error Resume Next
       
   Sheets("Compte 2014" ).Select
     
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
    ActiveWindow.Close
    sFilename = Dir
         
Loop
Application.ScreenUpdating = True
 
End Sub

mood
Publicité
Posté le 07-10-2012 à 20:08:06  profilanswer
 

n°2159497
vave
Nice to meet me
Posté le 08-10-2012 à 07:34:25  profilanswer
 

Bonjour,
tu peux parcourir les onglets pour trouver celui que tu cherches.
S'il existe, tu l'imprime, sinon, tu passes.
 

Code :
  1. Sub Macro2()
  2. '
  3. Dim wb As Workbook, wb2 As Workbook
  4. Dim sPath As String, sFilename As String
  5. Dim NbRows As Integer, rg As Range
  6. dim Ws as worksheet
  7. Application.ScreenUpdating = False
  8. sPath = Range("B10" ).Value       'Répertoire souhaité saisi dans la cellule b10
  9. sFilename = Dir(sPath & "*.xls*" )        'ouvre tous les fichiers .xls*
  10. Do While Len(sFilename) > 0
  11.     Set wb2 = Workbooks.Open(sPath & sFilename)           'Ouvre le fichier
  12.    
  13.    On Error Resume Next
  14.    for each Ws in w2.sheets   
  15.        if Ws.name = "Compte 2014" then 
  16.               Sheets("Compte 2014" ).Select
  17.               ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
  18.        end if
  19.    next Ws
  20.     ActiveWindow.Close
  21.     sFilename = Dir
  22.        
  23. Loop
  24. Application.ScreenUpdating = True
  25. End Sub


 
J'ai pas testé mais ça doit pas en être loin.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2159509
vinz51
Posté le 08-10-2012 à 09:21:59  profilanswer
 

Bonjour,
 
J'ai rectifié en suivant tes conseils (voir code ci-dessous), néanmoins il y a toujours une impression qui est lancée même pour les fichiers Excel qui ne contiennent pas la page demandée.
 
 
 
------------
 
Sub Macro2()
 
Dim wb As Workbook, wb2 As Workbook
Dim sPath As String, sFilename As String
Dim NbRows As Integer, rg As Range
Dim Ws As Worksheet
 
Application.ScreenUpdating = False
 
sPath = Range("B10" ).Value       'Répertoire
sFilename = Dir(sPath & "*.xls*" )        'ouvre tous les fichiers .xls*
 
Do While Len(sFilename) > 0
    Set wb2 = Workbooks.Open(sPath & sFilename)           'Ouvre le fichier
     
   On Error Resume Next
     
    For Each Ws In w2.Sheets
       If Ws.Name = "Compte Tarif Scénario 2014 S08E" Then
              Sheets("Compte Tarif Scénario 2014 S08E" ).Select
              ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
       End If
   Next Ws
 
    ActiveWindow.Close
    sFilename = Dir
         
Loop
Application.ScreenUpdating = True
 
End Sub

n°2159511
vave
Nice to meet me
Posté le 08-10-2012 à 10:04:28  profilanswer
 

Enlève le "On Error Resume Next ".
 
Je viens de voir que j'avais oublié une lettre là

Code :
  1. For Each Ws In wb2.Sheets


 
Et si tu as encore la même erreur essaye de faire tourner la macro en pas à pas pour voir à quel moment l'impression est lancée.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2159515
vinz51
Posté le 08-10-2012 à 11:08:32  profilanswer
 

Merci oovaveoo !!!
 
cela fonctionne uniquement en rectifiant "For Each Ws In wb2.Sheets"
 
Merci à toi !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro excel qui imprime si la feuille existe uniquement

 

Sujets relatifs
imprimer des feuilles excel générées à partir d'une liste de donnéesaide formule excel
VBA excel fonctionne en 2010 et plante en 97?Recherche dans excel
Envoyer fichier excel implémenté par mailMacro permettant de sauvegarder que quelques onglets
[VBA] Macro pour manipuler des valeurs entre 3 feuilles d'un classeurPlusieurs TCD sur une même feuille
macro 
Plus de sujets relatifs à : macro excel qui imprime si la feuille existe uniquement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR