Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : useform [ Langages dérivés / VBA ] (vintch1)

mardi 12 février 2008 à 10:19:19 | useform

vintch1

bonjour,

mon probleme est le suivant j'ai creer une listbox en userform qui reprend des articles, qui en les selectionant vont se mettre dans une facture automatiquement, jusque la aucun probleme. le soucis est que je voudrais que quand le nombre d'article est superieur à 32 ils se mettent dans une autre facture se trouvant sur une autre feuille qui elle  peut en contenir d'article. ma commande est la suivante.
si vous avez la moindre question n'hésitez pas!!!

private Sub CommandButton1_Click()
    compteur = liste_art.ListBox1.ListCount - 1
    position_art = 15
    For i = 0 To compteur
        If liste_art.ListBox1.Selected(i) = True Then
            Sheets("facture de base ").Range("a" & position_art).Value = liste_art.ListBox1.List(i)
            position_art = position_art + 1
        End If
    Next i
End Sub

cordialement

vintch

mardi 12 février 2008 à 10:48:00 | Re : useform

xpmich

Réponse acceptée !
Bonjour,

j'ai du mal à comprendre le passage :
"le soucis est que je voudrais que quand le nombre d'article est superieur à 32 ils se mettent dans une autre facture se trouvant sur une autre feuille qui elle  peut en contenir d'article. ma commande est la suivante."
Peut tu reformuler stp en petites phrases.
Dans ton code, je suppose que ta "liste_art" est une useform comportant une listbox nommé "listbox1".
De plus ton indice i démarre à 0, et compteur contient le nombre d'article -1. Il est rpéférable que compteur contienne la valeur réelle de ton nombre d'article.
Ensuite, voici ce que je te propose :
1- Detecte le nombre d'articles que tu as avant ta boucle for
2- fait une copie de ta feuille avant de la remplir par la boucle for
Voici ce que cela donnerais :

Const MaxArticle = 32
private Sub CommandButton1_Click()
    compteur = liste_art.ListBox1.ListCount - 1
    position_art = 15
   If compteur > MaxArticle  Then
      Sheets("facture de base ").Copy After:=Sheets("facture de base ")
      Sheets("facture de base (2)").Name = "Facture numero 2"
   End If

    For i = 0 To compteur
        If liste_art.ListBox1.Selected(i) = True Then
            If i < (MaxArticle - 1) Then 
               Sheets("facture de base ").Range("a" & position_art).Value = liste_art.ListBox1.List(i)
               position_art = position_art + 1
            else
               position_art = 15
               Sheets("Facture numero 2").Range("a" & position_art).Value = liste_art.ListBox1.List(i)
               position_art = position_art + 1
        End If
    Next i
End Sub

Je n'ais pas tester ce code, cependant je peux d'avance te dire qu'il te posera le même problème pour un nombre d'articles supérieurs à 64. A toi de trouver une peitte récurcivité ou un petit code qui ferai l'affaire.

Bonne Prog.

mardi 12 février 2008 à 11:53:26 | Re : useform

MPi

Réponse acceptée !
Pourrais-tu expliquer pourquoi tu veux utiliser 32 lignes d'articles par facture ? Est-ce seulement pour l'impression ?
Je ne pense pas que ce soit une bonne idée. Qu'arrive-t-il quand tu crées de nouvelles factures ? de nouvelles feuilles encore ou un nouveau classeur ?

Personnellement, je créerais un genre de base de données qui contiendrait le numéro de facture, la date,... et autres détails, puis chaque article et la quantité, en répétant ce format sur autant de lignes que nécessaire. Ce pourrait être aussi dans des fichiers texte ou autre base de données comme Access.

Puis une macro qui servirait à imprimer une facture. Cette macro pourrait alors lire le numéro de facture dans une colonne et copier les données de chaque ligne trouvée dans une feuille de base (template) qui servirait à l'impression.

Mais peut-être que je n'ai pas bien compris la raison de ta question ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI


mardi 12 février 2008 à 13:31:37 | Re : useform

vintch1

Réponse acceptée !
"le soucis est que je voudrais que quand le nombre d'article est superieur à 32 ,
ils se mettent dans une autre facture se trouvant sur une autre feuille.
la deuxieme facture peut en contenir plus(car il y a des inscription dans le bas, conditions de ventes etc...).

"Dans ton code, je suppose que ta "liste_art" est une useform comportant une listbox nommé "listbox1"."
tu as tout a fait raison desole d'avoir oublie de le preciser.

"De plus ton indice i démarre à 0, et compteur contient le nombre d'article -1. Il est rpéférable que compteur contienne la valeur réelle de ton nombre d'article."  
le seul probleme c'est que cette liste est une liste qui bouge en permanence le nombre d'article n'est jamais le meme.

ce que tu me donne est une bonne solution tres efficaces et ce que je comptais faire dans le futur c'est de creer une nouvelle feuille comme ici mais dans un autre classeur que j'appelerais par exemple "facturation 2008" qui reprendrait toute les factures.

merci d'avance

vintch

mardi 12 février 2008 à 13:42:20 | Re : useform

vintch1

Réponse acceptée !

re,
cher MPi

la raison pour laquelle je desire utiliser ces 32 lignes c bien le fait de l'impression. Car il y a une facture de base ou vot s'ajouter les articles sélectionnés.le probleme c'est que lorsqu'il n'y a que 3 articles l'on ne doive pas imprimer deux pages dont la deuxieme ou il n'y aurait que le total dans le fond.quand je créerai une facture je voudrais qu'elle aille s'enregistrer dans un classeur reprenant toutes les factures de l'année (1 feuille par facture).
j'espere que je suis claire dans mes expliquation.
n'hesite pas a me demander plus.


vintch


mardi 12 février 2008 à 22:30:28 | Re : useform

MPi

Réponse acceptée !
Je persiste à croire que le meilleur principe demeure la "base de données" pour stocker les items. Préférablement, ce serait une vraie base comme Access, mais ça peut toujours se faire sous Excel. Le seul problème avec Excel, c'est qu'une feuille ne contient que 65536 lignes dans les versions 2003 et précédentes.

Pour l'affichage, il importe peu qu'il y ait 32 lignes d'articles ou plus. Pour l'impression, il suffirait de créer le code pour imprimer les factures par tranches de 32 articles. De cette façon, tu n'auras pas à créer des tas de classeurs ou de feuilles pour toutes les stocker. Et rien n'empêche de mettre le total sur la dernière seulement. Ça prend seulement quelques variables de plus pour stocker les valeurs nécessaires.

Si les factures sont en moyenne de 32 articles, tu pourrais stocker 2000 factures dans une seule feuille... Si la moyenne est de 10 articles, tu en stockeras 3 fois plus... Et rien n'empêche d'utiliser plusieurs feuilles pour stocker des millions de factures. Seule la macro devra en tenir compte.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI




Cette discussion est classé dans : liste, position, facture, listbox1, art


Répondre à ce message

Sujets en rapport avec ce message

Afficher une liste d'enregistrement liées dans un rapport [ par rime ] Bonjour Je cherche a afficher une facture avec un rapport (VB6) la base access contient une table facture et une table ligne_facture a chaque facture afficher 2 colonne dans une liste box [ par hy_honey ] salut a tous je cherche a affiché 2 colone dans une liste boxe je suis en vb6.net et je sais pas trop coment faire le code que j'ai fais me récupere s Ultra Urgent : pb avec un treeview ! [ par happexamendios ] Bonjour,j'ai un module de code dans lequel je dois remplir des listes. En fonction du type de composant, j'ai tel ou tel traitement.Tout marche bien j ListView = > recupération de la position de l'enreg [ par steph ] Bonjour, Je souhaite charger un ficher texte qui contient des enregistrements separés par des tabultations dans une liste view.La liste view est de ty Creation d'un journal de bord [ par bpo13 ] Bonjour je souhaite créer un journal de bord afin de supprimer mon journal papier, mais je suis pas tres doué.Donc aprés quelque heures je suis arrivé Créer un USERFORM de saisie de facture sur excell vba [ par tatiachou ] Bonjour j'ai créer dans VBA un formulaire de saisie de facture avec les labels:DateNom du fournisseur (zone de liste modifiable)l utilisateur doit pou mdi [ par vbsmohamed ] bonsoir,si vous quelqu'in peut m'aider j'ai un probleme pour gerer trois forms - menu generale- liste des factures- saisie de facture 1-comment faire glisser déplacer dune liste box vers textbox [ par hy_honey ] bonjour a tousje suis en vb.net et je bloc depuid quelque jour , j'ai essayer de codé un drap and drop d'une liste box vers un text box c'est a dire q glisser déplasser d'une listbox vers un textbox [ par hy_honey ] salut a tous depuid 4 jour je bloc sur un petit probleme :J'ai une listbox ou je génère les noms de mes client et je voudrai a l'aide du glisser dépla


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.