OVH Cloud OVH Cloud

A visual basic sous Excell

5 réponses
Avatar
Mathieu
Bonjour à tous,
voici mon souci : je veux créer une macro dans un fichier que je nomme
:"Fichier Macros Impression.xls" qui ouvre des fichiers sucessifs "Fichier
1.xls" , "Fichier 2.xls", ect.. pour imprimer deux onglets de chacun de ces
fichiers.
Voici ce que j'ai testé ci-dessous et j'ai une erreur au 2ieme fichier
lorsque je veux selectionner le 1er onglet.
Pouvez-vous me dire ou est l'erreur surtout que ça fonctionne avec le
premier fichier appellé ? Merci de votre aide à tous.

regis.mathieu4@wanadoo.fr
Régis MATHIEU

Sub Impression()
Dim Noms_Fichiers, Noms_Feuilles
Noms_Fichiers = Array("Fichier 1.xls", "Fichier 2.xls")
Noms_Feuilles = Array("Feuille1", "Feuille2")
' Boucle d'ouverture des fichiers à imprimer
For i = 0 To 1
Fichier_a_ouvrir = "C:\Documents and Settings\REGIS\Bureau\Test
Impression\" & Noms_Fichiers(i)
Workbooks.Open Filename:=Fichier_a_ouvrir
Windows(Noms_Fichiers(i)).Activate
Fichier_Actif = ActiveWorkbook.Name
' Boucle d'impression des 2 feuilles de chaque fichier
For j = 0 To 1
' Selection de la fenetre 1 puis de la fenetre 2
Sheets(Noms_Feuilles(j)).Select
Nom_Feuille_Active = ActiveSheet.Name
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next j
'Fermeture du fichier après impression de ses deux feuilles
Fichier_Actif = ActiveWorkbook.Name
ActiveWorkbook.Close
'Passage au fichier suivant
Next i
End Sub

5 réponses

Avatar
Vincnet.
Essaie de rajouter en haut de ton modul :
Option Base 0
A+
V.

-----Message d'origine-----
Bonjour à tous,
voici mon souci : je veux créer une macro dans un fichier
que je nomme

:"Fichier Macros Impression.xls" qui ouvre des fichiers
sucessifs "Fichier

1.xls" , "Fichier 2.xls", ect.. pour imprimer deux
onglets de chacun de ces

fichiers.
Voici ce que j'ai testé ci-dessous et j'ai une erreur au
2ieme fichier

lorsque je veux selectionner le 1er onglet.
Pouvez-vous me dire ou est l'erreur surtout que ça
fonctionne avec le

premier fichier appellé ? Merci de votre aide à tous.


Régis MATHIEU

Sub Impression()
Dim Noms_Fichiers, Noms_Feuilles
Noms_Fichiers = Array("Fichier 1.xls", "Fichier 2.xls")
Noms_Feuilles = Array("Feuille1", "Feuille2")
' Boucle d'ouverture des fichiers à imprimer
For i = 0 To 1
Fichier_a_ouvrir = "C:Documents and
SettingsREGISBureauTest

Impression" & Noms_Fichiers(i)
Workbooks.Open Filename:=Fichier_a_ouvrir
Windows(Noms_Fichiers(i)).Activate
Fichier_Actif = ActiveWorkbook.Name
' Boucle d'impression des 2 feuilles de chaque
fichier

For j = 0 To 1
' Selection de la fenetre 1 puis de la
fenetre 2

Sheets(Noms_Feuilles(j)).Select
Nom_Feuille_Active = ActiveSheet.Name
'ActiveWindow.SelectedSheets.PrintOut
Copies:=1, Collate:=True

Next j
'Fermeture du fichier après impression de ses
deux feuilles

Fichier_Actif = ActiveWorkbook.Name
ActiveWorkbook.Close
'Passage au fichier suivant
Next i
End Sub


.



Avatar
Mathieu
Bonjour,

Désolé, j'ai essayé l'option Base Option 0, mais cela ne fonction toujours
pas !

Y a-t-il une autre solution ?
Merci de votre aide !

Régis MATHIEU

Avatar
Vincnet.
Bon, alors je ne vois qu'une possibilité : la
feuille 'Feuille 1' n'existe pas dans ton deuxième
classeur (peut-être un espace en trop ou en moins, ou une
faute de frappe, ou...)
Sinon, il n'y a pas de raison que ça ne marche pas, ou en
tous cas, je ne la vois pas !
A+
V.
Avatar
Vincnet.
En reprenant ton code :

Sub Impression()
Dim Noms_Fichiers, Noms_Feuilles
Dim wbk as workbook
Noms_Fichiers = Array("Fichier 1.xls", "Fichier 2.xls")
Noms_Feuilles = Array("Feuille1", "Feuille2")
' Boucle d'ouverture des fichiers à imprimer
For i = 0 To 1
Fichier_a_ouvrir = "C:Documents and
SettingsREGISBureauTest
Impression" & Noms_Fichiers(i)
Set wbk = Workbooks.Open Filename:=Fichier_a_ouvrir
' Boucle d'impression des 2 feuilles de chaque
fichier
For j = 0 To 1
' Selection de la fenetre 1 puis de la fenetre
2
wbk.workSheets(Noms_Feuilles(j)).PrintOut
Copies:=1, Collate:=True
Next j
'Fermeture du fichier après impression de ses deux
feuilles
wbk.Close
'Passage au fichier suivant
Next i
Set wbk = nothing
End Sub
Avatar
Mathieu
Re bonjour,
Désolé, je viens de tester le code ci-dessous comme décrit dans la réponse
précédente et j'ai toujours une erreur lorsque j=1. Je précise que j'ai
vérifié le nom des Feuilles du Fichier 2.xls et qu'ils sont corects.

Alors merci a ceux qui peuvent m'aider.

Régis MATHIEU


Code testé :
Sub Impression()
Dim Noms_Fichiers, Noms_Feuilles, i, j
Dim wbk As Workbook
Noms_Fichiers = Array("Fichier 1.xls", "Fichier 2.xls")
Noms_Feuilles = Array("Feuille1", "Feuille2")
' Boucle d'ouverture des fichiers à imprimer
For i = 0 To 1
Fichier_a_ouvrir = "C:Documents and SettingsREGISBureauTest
Impression" & Noms_Fichiers(i)
Set wbk = Workbooks.Open(Filename:=Fichier_a_ouvrir)
Windows(Noms_Fichiers(i)).Activate
' Boucle d'impression des 2 feuilles de chaque fichier
For j = 0 To 1
' Impression des 2 feuilles de chaque fichier
wbk.Worksheets(Noms_Feuilles(j)).PrintOut Copies:=1,
Collate:=True
Next j
'Fermeture du fichier après impression de ses deux feuilles
wbk.Close
'Passage au fichier suivant
Next i
Set wbk = Nothing
End Sub