Problème pour une mise en forme grâce à VB

Problème pour une mise en forme grâce à VB - VB/VBA/VBS - Programmation

Marsh Posté le 21-11-2008 à 08:03:56    

Bonjour à tous, je travaille sur Excel en ce moment et dans le but de me simplifier la vie, j'aurais besoin d'un coup de main de votre part, s'il vous plaît ?
 
En fait je récupère de ma base de données un tableau dans lequel j’ai une quantité de produits par référence (référence 116 quantité 2, référence 330 quantité 3…), et je voudrais pouvoir retranscrire ces données sous une autre forme qui serait la suivante : avoir dans un tableau 1 ligne par référence fabriquée. Par exemple, si au départ je sais que j’aurai 2 référence 116 à fabrique, je voudrais avoir dans mon tableau de sortir 2 lignes avec la référence 116, puis 3 lignes avec la référence 330, …
 
http://imageshack-france.com/out.php/i250327_exemple.jpg
 
Comment pensez-vous que je dois procéder, s’il vous plaît ? Je vous laisse un imprim écran qui est très représentatif.
 
Merci encore de l’aide que vous pourrez m’apporter
A++

Reply

Marsh Posté le 21-11-2008 à 08:03:56   

Reply

Marsh Posté le 22-11-2008 à 09:02:20    

Tu n'aurais pas moyen d'extraire les infos correctement formatées de la BdD ? (il y a un regroupement à retirer dans la requête probablement).


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 22-11-2008 à 09:36:26    

Si tu ne peux pas modifier ta requête, voici une solution que, je pense, tu pourras adapter facilement :
(adapter la partie 'Initialisation des variables en fonction de tes numéros de colonnes et lignes)

 
Code :
  1. Sub steff()
  2. Dim colDataRef As Integer 'N° colonne contenant les références
  3. Dim colDataQty As Integer 'N° colonne contenant les quantités
  4. Dim colDataOut As Integer 'N° colonne contenant les données de sortie
  5. Dim ligDataIn  As Integer 'N° ligne contenant la donnée d'entrée
  6. Dim ligDataOut As Integer 'N° ligne contenant la donnée de sortie
  7. Dim strRef As String 'Variable contenant la référence
  8. Dim intNb As Integer 'Variable numérique entière contenant la quantité
  9. 'Initialisation des variables
  10. colDataRef = 1
  11. colDataQty = 2
  12. colDataOut = 4
  13. ligDataIn = 1
  14. ligDataOut = 1
  15. 'Parcours ligne par ligne des colonnes contenant
  16. 'les données d'entrée. Sort de la boucle quand la cellule
  17. 'lue est vide
  18. Do
  19.     strRef = Cells(ligDataIn, colDataRef)
  20.     If strRef = "" Then Exit Do 'sort de la boucle si cellule vide
  21.     intNb = Cells(ligDataIn, colDataQty)
  22.     'Boucle le nombre de fois la quantité pour inscrire
  23.     'la référence dans la colonne de sortie
  24.     'Ne boucle pas si le Nb=0
  25.     Do Until intNb = 0
  26.         'Ecrit la référence dans la colonne de sortie
  27.         Cells(ligDataOut, colDataOut) = strRef
  28.         'Passe à la ligne des données de sortie suivante
  29.         ligDataOut = ligDataOut + 1
  30.         'Décrémente la quantité
  31.         intNb = intNb - 1
  32.     Loop
  33.     'Passe à la ligne d'entrée suivante
  34.     ligDataIn = ligDataIn + 1
  35. Loop
  36. End Sub
 

(TIP : Double clic dans la fenêtre du code ci dessus pour faire disparaître les n° de ligne avant de faire ton copier-coller)


Message édité par otobox le 22-11-2008 à 11:20:24

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 22-11-2008 à 19:17:30    

Génial, je me suis servi de ton code et tout marche !! Merci beaucoup
à+++++

Reply

Marsh Posté le 23-11-2008 à 00:25:45    

Tant mieux, c'était fait pour ça :)


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 23-11-2008 à 10:20:36    

Merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed