Imprimer en boucle avec un multi select List Box

Fermé
daidi06 Messages postés 8 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 12 février 2016 - 13 oct. 2015 à 14:31
daidi06 Messages postés 8 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 12 février 2016 - 14 oct. 2015 à 18:15
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
A voir également:

5 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
13 oct. 2015 à 16:02
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+
0
daidi06 Messages postés 8 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 12 février 2016
13 oct. 2015 à 16:41
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
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
13 oct. 2015 à 16:54
Euh... il faut coller le lien ici ;-)
0
daidi06 Messages postés 8 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 12 février 2016
13 oct. 2015 à 17:24
Voici l'adresse ou se trouve mon fichier:

http://www.cjoint.com/c/EJnpxITro8u

Merci de bien vouloir m'aider
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
14 oct. 2015 à 10:42
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 :

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+
0
daidi06 Messages postés 8 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 12 février 2016 > Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023
14 oct. 2015 à 10:56
merci encore!
Je teste et je te reviens
On est ensemble.
0
daidi06 Messages postés 8 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 12 février 2016
14 oct. 2015 à 17:01
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
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
14 oct. 2015 à 17:15
J'ai Excel 2010...

Les TextBox dans la page sont nécessaires ? On ne peut pas écrire directement dans les cellules ? Ou présenter les données dans un UserForm, à imprimer ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
daidi06 Messages postés 8 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 12 février 2016
14 oct. 2015 à 18:15
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
0