IMPRESSION LISTBOX SUR FEUIL

GHISLAIN

XLDnaute Impliqué
bonjour a tous
j ai un souci sur l impression de listbox avec 3 colonne contenue dans un USERFORM et en envoyant le contenu sur une feuil excel pour impression
j utilise la syntaxe suivante :

Range('FicheArchive!A36').Resize(ListBox28.List.ListCount,_ ListBox28.ColumnCount).Value = ListBox28.List

si ma listbox contient des informations la formule fonctionne les informations son rangé a partir de la cellule A36 , la seconde sur B36 et la 3 sur C36
si plusieur lignes elles s'inscrivent en dessous

par contre si ma listbox ne contient pas d'information ça me donne une erreur :erreur d execution 1004 erreur définie par l application ou l objet
je n arrive pas a trouver la bonne formule

merci de votre

Ghislain
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re bonsoir Ghislain, Jean Marie, Le Forum

Dans ta question précédente à Jean Marie, le 'Me' non, pas besoin de le déclarer c'est ce que l'on appelle un 'keyword' qui peut être considéré comme 'implicitly declared variable'... Dans le cas qui t'interesse, ce me ce Substilise à 'UserForm'...

Pour le fait que le code de Jean Marie ne retour rien, c'est dû à cette ligne 'Magique' mais parfois peut s'avérer dangereuse aussi :

On Error Resume Next

En fait contrairement à ce que j'ai écrit :

If .ListCount = 0 Then Exit Sub

L'erreur dans le code peut aussi être générée par la seconde dimension de la ListBox... Et par conséquent le Resume Next entre en action et rien ne se passe...

Sur mon Test d'Exit Sub, je ne fais que regarder si il n'y a aucun Item dans la ListBox (Ligne), là oui je sors, mais si il n'y a qu'une colonne dans une Ligne, celà ne pose pas de problème...

Bonne Soirée
[ol]@+Thierry[/ol]
 

ChTi160

XLDnaute Barbatruc
arfff

un petit coucou à mon Ami @+Thierry

arfff je n'ai pas tout compris du problème, mais j'ai copié ton code lol
ca bug ou avec on error resume next
j'avais pensé à listcount mais bon chez moi ca fonctionne avec On error
mais je suis sûr que tu as raison et j'en tiendrai compte,une fois encore merci Thierry
bonne fin de Journée
 

GHISLAIN

XLDnaute Impliqué
boujour a tous

me voila replonger dans mon projet , une fois qui n y a gouter on devient accro

je viens d utiliser le code de thierry qui repond a ma demande mais un truc m'echappe la , suivant le code proposé les valeurs sont revoyé en cellule A1 B1 C1

quelle ligne je dois modifier pour que ces valeurs soient renvoyées sur les cellules A36 B36 C36

quand je modifie L en = 36 je n ai plus rien alors que L donne la ligne , sauf erreur de ma part

With ListBox28
If .ListCount = 0 Then Exit Sub

For L = 1 To .ListCount
For C = 1 To 5 ' place les info sur les colonnes A,b,c,d et e
Sheets('FicheArchive').Cells(L, C) = .List(L - 1, C - 1)
Next
Next

End With


merci a tous
 

GHISLAIN

XLDnaute Impliqué
boujour a tous

me voila replonger dans mon projet , une fois qu on n y a gouter on devient accro

je viens d utiliser le code de thierry qui repond a ma demande mais un truc m'echappe la , suivant le code proposé les valeurs sont revonyées en cellule A1 B1 C1

quelle ligne je dois modifier pour que ces valeurs soient renvoyées sur les cellules A36 B36 C36

quand je modifie L en = 36 je n ai plus rien alors que L donne la ligne , sauf erreur de ma part

With ListBox28
If .ListCount = 0 Then Exit Sub

For L = 1 To .ListCount
For C = 1 To 5 ' place les info sur les colonnes A,b,c,d et e
Sheets('FicheArchive').Cells(L, C) = .List(L - 1, C - 1)
Next
Next

End With


merci a tous
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Ghislain, le Forum

Bon c'est assez simple si on suit bien le processus...

L représente Deux Choses :

1) La Ligne de la ListBox où se trouvent les Data
2) La Ligne sur la Feuille où doivent être envoyées les Data

Donc si je veux décaler le retour sur Feuille à la Ligne 36, je ne dois que décaler le L du second Cas

Ce qui donne :
Private Sub CommandButton2_Click()
Dim L As Integer, C As Byte

With ListBox28
   
If .ListCount = 0 Then Exit Sub
       
       
For L = 1 To .ListCount
           
For C = 1 To 3
            Sheets('FicheArchive').Cells(L + 35, C) = .List(L - 1, C - 1)
           
Next
       
Next

End With
   
End Sub

Dans la Foulée on décortiquera cette ligne ainsi :
Sheets('FicheArchive').Cells(L + 35, C) = .List(L - 1, C - 1)

Le + 35 est bien le décalage de L (1 to x) + 35 soit 36 au premier Loop...

Le - 1 est aussi un décalage car une ListBox est en Base 0 (première Ligne = 0, Première Colonne aussi) donc c'est Bien L (1 to x) - 1 soit 0 au premier Loop (Idem pour C)

Dacodac ?

Voilà c'est tout simple si on suit ce raisonnement de base.

Bonne Fin de Journée
[ol]@+Thierry[/ol]
 

GHISLAIN

XLDnaute Impliqué
bonjour thierry

les explications sont tout a fait clair et l'erreur que j avais faite etait de ne pas avoir mis le + avant le 35 voila pourquoi ça ne fonctionnait pas

je te remercie vivement pour tes explications et du temps que tu m'a accordé



amicalement

GHISLAIN
 

Statistiques des forums

Discussions
312 432
Messages
2 088 370
Membres
103 835
dernier inscrit
Jaco24