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   -
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   Statut Membre Dernière intervention   149
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   149
 
Euh... il faut coller le lien ici ;-)
0
daidi06 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   149
 
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   Statut Membre Dernière intervention   > Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention  
 
merci encore!
Je teste et je te reviens
On est ensemble.
0
daidi06 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   149
 
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   Statut Membre Dernière intervention  
 
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