problème de code pour imprimer tous élements d'une listbox multiselect

  • Initiateur de la discussion bichon
  • Date de début
B

bichon

Guest
Bonjour a toutes et a tous les excelliens

je vous expose mon souhait:
voila j'ai 2 listbox la premiere contient des elements que je selectionne dans la 2eme
ces elements sont des classeurs excel et j'aimerai pouvoir imprimer les classeurs que j'ai selectionné
dans ma 2eme listbox(si possible sans les ouvrir mais bon)
voila donc chaque classeur correspond a une feuille excel donc si jai 5 element dans ma listbox2 je voudrais
imprimer donc 5 feuilles.
pour l'instant ma 2eme listbox est en multiselect mais si vous pensez que cela est plus simple en singleselect
faite le moi savoir
voici mon code pour l'instant je ne fais que l'ouvrir car la fonction shell ne marche pas$$

' Bouton imprimer

Private Sub CommandButton1_Click()


Dim i As Byte
Dim NomClasseur As String
For i = 1 To Optbase.ListBox2.ListCount
If Optbase.ListBox2.Selected(i - 1) Then
'Allons rechercher l'élément sur la feuille Baseopt:
NomClasseur = Worksheets("Baseopt").Cells.Find(What:=Optbase.ListBox2.List(i - 1), After:=ActiveCell, LookIn _
:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:= _
xlNext, MatchCase:=False).Cells(1, 2)
'Ouvrons le fichier correspondant:
Workbooks.Open FileName:="F:\Metachut2003\Optmet\Fiches\" & NomClasseur

Range("W3").Value = Saisieinfos.TextBox1.Value
Range("R2").Value = Saisieinfos.TextBox2.Value
Range("Y2").Value = Saisieinfos.TextBox3.Value
Range("V2").Value = Saisieinfos.TextBox4.Value
ShellImprime ("F:\Metachut2003\Optmet\Fiches\ & NomClasseur")

End If
Next i

End Sub

dans ce code j'arrive a ouvrir que le 1er element que jai selectionner avec la souris
bien qu'ensuite jai selectionné tout les autres grace au multiselect

les element qui sont dans ma listbox1 sont dans une feuille excel nommé baseopt
je l'ai insere comme suivant :

private sub userform_initialize()
Dim VarDerLigne As Integer
Dim VarPlageList As String
VarDerLigne = Sheets("Baseopt").Range("A5").End(xlDown).Row
VarPlageList = Sheets("Baseopt").Range("A5:A" & VarDerLigne).Address
ListBox1.RowSource = "Baseopt!" & VarPlageList
End Sub


voila mon commande shell se trouve dans un module en voici le code

' Declaration de la fonction shell

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

' Fonction shellprint

Sub Shellprint(NomClasseur)
ShellExecute 0, "print", NomClasseur, "", "F:\Metachut2003\Optmet\Fiches\", 0
End Sub

voila je pense vous avoir tout dis
les textbox dans le 1er code serve a inserer du texte dans certaine cellules des feuilles a
imprimer mais pour l'instant cela ne marche pas.

je remercie enormement ceux qui viendront a mon secours

bichon
 
@

@+Thierry

Guest
Salut JP

J'ai vraiment l'impression que ça fait plus d'un mois qu'on est toujours avec cette histoire... Cette API Shell que j'ai testée, et puis tout ce bazard avec des ListBoxs pour ouvrir tes fichiers MetachutMachinChose !!!

Bon il me semble t'avoir déjà dit qu'avec ta méthode Shell :

Tu ne pourras jamais intercepter le classeur soit pour écrire dedans avant l'impression... Soit pour changer de feuille à imprimer si le classeur en contient plusieurs... Car la méthode Shell fait exactement ce que ferait Windows Exporer en Click Droit => Print... Il ouvre Excel, le Fichier, imprime la feuille active (là où le classeur a été sauvé, et referme le tout)

Mais tu sembles vraiment "testa dura" !! lol

Non le plus simple tu restes sur ta méthode OpenFile... Tu fais une boucle sur les feuilles du classeur ouvert, pour alimenter ta listbox avec leur nom respectif de feuilles que tu pourras imprimer en simple ou multiselect... (regarde ce fameux fichier de GM "Imprimer.zip" que j'ai souvent mis en lien)

J'ai l'impression que tu vis un vrai cauchemard avec cette histoire qui semble si simple !!! lol

Bon ben bon courage
@+Thierry
 
T

Ti

Guest
un conseil : chaque fois que c'est possible, mettez un fichier d'exemple plutôt que ces longues lignes de code que bien peu prendront la peine même de regarder parce qu'alors, pour tester, il faut créer un nouveau fichier, y mettre un module, y ajouter un userform, y placer une feuille Truc, une autre machin. Personnellement quand je vois ces lignes sur un post, je ne vais jamais plus loin, ce n'est pas du mauvais esprit, mais je n'ai pas non plus que ça à faire, et je ne suis pas le seul. Donc si vous voulez qu'on vous réponde, prenez la peine d'être rapidement compris...
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 917
Membres
101 839
dernier inscrit
laurentEstrées