Imprimer en boucle avec un multi select List Box
daidi06
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
daidi06 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
daidi06 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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
- Set-top box - Accueil - Box & Connexion Internet
- Imprimer en a5 - Guide
- Journal de naissance gratuit a imprimer - Télécharger - Histoire & Religion
- Imprimer un tableau excel - Guide
- List disk - Guide
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