Imprimer en boucle avec un multi select List Box
daidi06
Messages postés
10
Statut
Membre
-
daidi06 Messages postés 10 Statut Membre -
daidi06 Messages postés 10 Statut Membre -
Bonjour,
J'ai un programme VBA qui doit utiliser un multi Select List Box pour imprimer une plage de données d'une feuille excel.
Cette plage de données contient des textBox qui se remplissent automatiquement à partir de la sélection effectuée au niveau de la listbox.
For n = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(n) = True Then
Do
iRow = iRow + 1
Loop Until ListBox1.List(n) = Sheets("PROPOSITION").Cells(iRow, 7)
Sheets("plage").TextBox1.Text = Sheets("PROPOSITION").Cells(6, 3)
Sheets("plage").TextBox2.Text = Sheets("PROPOSITION").Cells(iRow, 7)
Sheets("plage").TextBox3.Text = Sheets("PROPOSITION").Cells(iRow, 2)
Sheets("plage").Range("A1:M18").PrintOut
End If
Next n
Mon problème est que quelque soit le nombre de sélection effectué dans le ListBox, seul le premier cas est imprimer en autant de fois que j'ai sélectionné. En d'autre termes, la même page est imprimée 5 fois si j'ai coché 5 items dans le ListBox
J'ai un programme VBA qui doit utiliser un multi Select List Box pour imprimer une plage de données d'une feuille excel.
Cette plage de données contient des textBox qui se remplissent automatiquement à partir de la sélection effectuée au niveau de la listbox.
For n = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(n) = True Then
Do
iRow = iRow + 1
Loop Until ListBox1.List(n) = Sheets("PROPOSITION").Cells(iRow, 7)
Sheets("plage").TextBox1.Text = Sheets("PROPOSITION").Cells(6, 3)
Sheets("plage").TextBox2.Text = Sheets("PROPOSITION").Cells(iRow, 7)
Sheets("plage").TextBox3.Text = Sheets("PROPOSITION").Cells(iRow, 2)
Sheets("plage").Range("A1:M18").PrintOut
End If
Next n
Mon problème est que quelque soit le nombre de sélection effectué dans le ListBox, seul le premier cas est imprimer en autant de fois que j'ai sélectionné. En d'autre termes, la même page est imprimée 5 fois si j'ai coché 5 items dans le ListBox
A voir également:
- Imprimer en boucle avec un multi select List Box
- Imprimer en a5 - Guide
- Journal de naissance gratuit a imprimer - Télécharger - Histoire & Religion
- Imprimer un tableau excel - Guide
- List disk - Guide
- Directory list & print - Télécharger - Divers Utilitaires
5 réponses
Bonjour,
Il n'y a rien de flagrant... à mes yeux du moins.
As-tu essayé le débug avec des points d'arrêt et des espions ?
Sinon, si ton fichier n'est pas confidentiel, peux-tu le partager sur https://www.cjoint.com/ ?
A+
Il n'y a rien de flagrant... à mes yeux du moins.
As-tu essayé le débug avec des points d'arrêt et des espions ?
Sinon, si ton fichier n'est pas confidentiel, peux-tu le partager sur https://www.cjoint.com/ ?
A+
Merci Zoul67 pour votre réponse instantanée.
En fait le problème c'est que tout s'exécute parfaitement.
Mais ne fait pas les impressions comme je veux.
Ok il n'ya aucun problème je vais joindre le fichier nous allons l'étudier ensemble.
Merci encore
En fait le problème c'est que tout s'exécute parfaitement.
Mais ne fait pas les impressions comme je veux.
Ok il n'ya aucun problème je vais joindre le fichier nous allons l'étudier ensemble.
Merci encore
Voici l'adresse ou se trouve mon fichier:
http://www.cjoint.com/c/EJnpxITro8u
Merci de bien vouloir m'aider
http://www.cjoint.com/c/EJnpxITro8u
Merci de bien vouloir m'aider
Bonjour,
J'ai bien reproduit le problème. J'ai un peu modifié le code et ajouté DoEvents (je pensais qu'un seul suffirait mais non, et je ne sais pas pourquoi). Ce code fonctionne chez moi :
A+
J'ai bien reproduit le problème. J'ai un peu modifié le code et ajouté DoEvents (je pensais qu'un seul suffirait mais non, et je ne sais pas pourquoi). Ce code fonctionne chez moi :
Private Sub OK_Click()
Dim iRow As Integer
iRow = 12
Sheets("plage").Select
For Each Ctrl In Sheets("plage").OLEObjects
'Si c'est un TextBox , on vide le textbox
If TypeOf Ctrl.Object Is MSForms.TextBox Then Ctrl.Object.Text = vbNullString
Next Ctrl
' Sheets("plage").TextBox1.Text = ""
' Sheets("plage").TextBox2.Text = ""
' Sheets("plage").TextBox3.Text = ""
' Sheets("plage").TextBox4.Text = ""
' Sheets("plage").TextBox5.Text = ""
' Sheets("plage").TextBox6.Text = ""
' Sheets("plage").TextBox7.Text = ""
' Sheets("plage").TextBox8.Text = ""
' Sheets("plage").TextBox9.Text = ""
' Sheets("plage").TextBox10.Text = ""
' Sheets("plage").TextBox11.Text = ""
' Sheets("plage").TextBox12.Text = ""
' Sheets("plage").TextBox13.Text = ""
' Sheets("plage").TextBox14.Text = ""
' Sheets("plage").TextBox15.Text = ""
' Sheets("plage").TextBox16.Text = ""
' Sheets("plage").TextBox17.Text = ""
' Sheets("plage").TextBox18.Text = ""
' Sheets("plage").TextBox19.Text = ""
' Sheets("plage").TextBox20.Text = ""
' Sheets("plage").TextBox21.Text = ""
' Sheets("plage").TextBox22.Text = ""
' Sheets("plage").TextBox23.Text = ""
' Sheets("plage").TextBox24.Text = ""
' Sheets("plage").TextBox25.Text = ""
' Sheets("plage").TextBox26.Text = ""
' Sheets("plage").TextBox27.Text = ""
' Sheets("plage").TextBox28.Text = ""
'
For n = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(n) = True Then
iRow = n + 13
' Do
' iRow = iRow + 1
'
' Loop Until ListBox1.List(n) = Sheets("PROPOSITION").Cells(iRow, 7)
Sheets("plage").TextBox1.Text = Sheets("PROPOSITION").Cells(6, 3)
Sheets("plage").TextBox2.Text = Sheets("PROPOSITION").Cells(iRow, 7)
Sheets("plage").TextBox3.Text = Sheets("PROPOSITION").Cells(iRow, 2)
Sheets("plage").TextBox4.Text = "Exemple"
Sheets("plage").TextBox5.Text = ComboBox1.Value
Sheets("plage").TextBox6.Text = Sheets("PROPOSITION").Cells(5, 16)
Sheets("plage").TextBox7.Text = Sheets("PROPOSITION").Cells(6, 16)
Sheets("plage").TextBox8.Text = Sheets("PROPOSITION").Cells(7, 16)
Sheets("plage").TextBox9.Text = Sheets("PROPOSITION").Cells(iRow, 4)
Sheets("plage").TextBox10.Text = Sheets("PROPOSITION").Cells(6, 3)
Sheets("plage").TextBox11.Text = Sheets("PROPOSITION").Cells(iRow, 7)
Sheets("plage").TextBox12.Text = Sheets("PROPOSITION").Cells(iRow, 2)
Sheets("plage").TextBox13.Text = "Exemple"
Sheets("plage").TextBox14.Text = ComboBox1.Value
Sheets("plage").TextBox15.Text = Sheets("PROPOSITION").Cells(5, 16)
Sheets("plage").TextBox16.Text = Sheets("PROPOSITION").Cells(6, 16)
Sheets("plage").TextBox17.Text = Sheets("PROPOSITION").Cells(7, 16)
Sheets("plage").TextBox18.Text = Sheets("PROPOSITION").Cells(iRow, 4)
Sheets("plage").TextBox19.Text = Sheets("PROPOSITION").Cells(6, 3)
Sheets("plage").TextBox20.Text = Sheets("PROPOSITION").Cells(iRow, 7)
Sheets("plage").TextBox21.Text = Sheets("PROPOSITION").Cells(iRow, 4)
Sheets("plage").TextBox22.Text = Sheets("PROPOSITION").Cells(6, 16)
Sheets("plage").TextBox23.Text = Sheets("PROPOSITION").Cells(7, 16)
Sheets("plage").TextBox24.Text = Sheets("PROPOSITION").Cells(5, 16)
Sheets("plage").TextBox25.Text = Sheets("PROPOSITION").Cells(6, 16)
Sheets("plage").TextBox26.Text = Sheets("PROPOSITION").Cells(7, 16)
Sheets("plage").TextBox27.Text = Sheets("PROPOSITION").Cells(iRow, 2)
Sheets("plage").TextBox28.Text = ComboBox1.Value
DoEvents
Sheets("plage").Range("A1:M18").PrintOut
DoEvents
End If
Next n
Num_mat.Hide
Unload Me
End Sub
A+
Merci beaucoup Zoul67
J'ai testé le programme et ça marche si je suis sur excel 2007 et ça ne marche pas si je suis sur excel 2013. Tu vois, au service je travaille avec Excel 2013 et sur ma machine personnelle, je travaille avec excel 2007. Pourtant je dois implémenter ce programme au service!!! Donc il faut que ça marche aussi avec Excel 2013.
Help me please
J'ai testé le programme et ça marche si je suis sur excel 2007 et ça ne marche pas si je suis sur excel 2013. Tu vois, au service je travaille avec Excel 2013 et sur ma machine personnelle, je travaille avec excel 2007. Pourtant je dois implémenter ce programme au service!!! Donc il faut que ça marche aussi avec Excel 2013.
Help me please
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En faite, je dispose d'un formulaire papier et l'idée est de remplir ce formulaire avec un ordinateur et une imprimante! J'ai alors pensé à utiliser excel. L'emplacement des TextBox corresponde au zone du formulaire à remplir.
Si mon programme marchait, j'ai seulement à introduire dans mon imprimante autant de formulaire et je lance l'impression.
Tu vois que ça sera difficile d'utiliser les cellules excel si je veux que les champs de mon formulaire coïncident avec les cellules. Peut être alors un userform! Mais il me faudra encore un travail de titan pour que les champs correspondent aux champs de mon formulaire
Si mon programme marchait, j'ai seulement à introduire dans mon imprimante autant de formulaire et je lance l'impression.
Tu vois que ça sera difficile d'utiliser les cellules excel si je veux que les champs de mon formulaire coïncident avec les cellules. Peut être alors un userform! Mais il me faudra encore un travail de titan pour que les champs correspondent aux champs de mon formulaire