Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

impression

  • Initiateur de la discussion nico
  • Date de début
N

nico

Guest
bonjour a tous .Je vais essayer d'être le plus clair possible:

j'aimerais créer une macro qui imprime plusieurs feuille excel de classeur différent.Mais je ne connais que le début des noms de fichier.Est il possible d'ignorer la fin ou de mettre un caractère qui fait office de "n'importe quel valeur"

ex:8765XXX.xls
5654XXX.xls
3452XXX.xls


merci a tous .
 
J

jaccard

Guest
Hello, en utilisant Dir() c'est possible :

Option Explicit

Sub exemple()

Dim strFilename As String

'cherche le nom d'un fichier commançant par "8765"'et finissant par ".xls"
strFilename = Dir("c:\temp\8765*.xls")

'éffectue la boucle tant qu'un nom de fichier suivant les critères
'de la ligne du dessus est trouvé
Do Until strFilename = ""

Debug.Print strFilename

'cherche un nouveau non de fichier suivant les memes critéres
'que précédemment
strFilename = Dir

Loop
End Sub


dom ;-)
 
@

@+Thierry

Guest
Re: impression en masse en fonction des quatre premiers digits du nom de fichier

Salut Nico, le Forum

En admettant que tu veuilles imprimer tous les fichiers d'un même répertoir commençant avec les QUATRE même digits... Avec ce code tu devrais pouvoir t'en sortir :

Sub MassPrint4FirstDigits()
Dim F As Variant
Dim Deb As String

Deb = InputBox("Indiquez les 4 Premiers Digits du début du nom des fichiers à imprimer", "Impression en Masse")

With Application.FileSearch
.NewSearch
.LookIn = "C:\mes documents"
.Filename = "*.xls"
.Execute
On Error Resume Next
For Each F In .FoundFiles
If Left(F, 21) = "C:\Mes Documents\" & Deb Then
Workbooks.Open F
Impression
End If
Next F
End With
End Sub

Sub Impression()
ActiveSheet.PrintOut
ActiveWorkbook.Close 0
End Sub

Et dans le cas où tu doit aussi imprimer toutes les pages des classeurs... (?)
Tu dois remplacer la macro Impression ci-dessus par celle-ci

Sub Impression()
Dim S As Byte
For S = 1 To ActiveWorkbook.Sheets.Count
Sheets(S).PrintOut
Next S
ActiveWorkbook.Close 0
End Sub

Là ou il faut faire attention c'est le left(F, 21) ... 21 comprend le nombre de digits du path (chemin complet + le nom du fichier avec les anti-slash)...

Bon Aprèm
@+Thierry


PS ceci est tiré d'un code que j'avais filé en cata pour une Elsa qui m'a jamais dit si cela l'avait dépannée... [/url=http://www.excel-downloads.com/html/French/forum/messages/1_18810_13945.htm]soupir...[/url] (heureux que ça serve éventuellement à d'autres...)
 
@

@+Thierry

Guest
Ah bonjour Jaccard aussi;


Tiens pou compléter ton code de Jaccart, j'ai associe celui ci avec une API récupérée sur ce Forum (de JP) çà donne ceci :

(API Testée uniquement sous WinNT)

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 ShellPrint(fich)
ShellExecute 0, "print", "C:\Mes Documents\" & fich, "", "", 0
End Sub
Sub Printing()

Dim strFilename As String
strFilename = Dir("C:\Mes Documents\Test*.xls")
Do Until strFilename = ""
'APPEL à une API (OK Sous Windows NT)
ShellPrint (strFilename)
strFilename = Dir
Loop
End Sub

Bonne Fin de Journée
@+Thierry
 

Discussions similaires

Réponses
17
Affichages
827
Réponses
18
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…