[Résolu] programmer une macro vb pour excel... merci babasss

programmer une macro vb pour excel... merci babasss [Résolu] - VB/VBA/VBS - Programmation

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

Alors voila, je possede ces 2 feuilles cijoints
 
fichier-cijoint.xls
 
dans la 1ère, je dispose d'un code article et de stocks suivant 3 critères.
la partie que je dois programmer est ce qui va passer en 2nde page :
 
- il me faut le code article en 1ère colonne
 
- le stock en 2ème et !!!
 
- en 3ème colonne :
                          - la valeur 1 si le stock était en J-8                      
                          - la valeur 2 si le stock était en J+8  
                          - la valeur 3 si le stock était en J+21  
 
mon problème vient quand j'ai des stocks pour le même article dans plusieurs critères. Pour cela, il me faudrait alors ajouter une ligne avec le même code article et la valeur correspondant au critère suivant dans lequel le stock se trouve...
 
je ne sais pas si tout est clair, mon fichier cijoint pourra peut etre vous aider a comprendre...

Message cité 1 fois
Message édité par maxfrancky le 05-03-2008 à 13:21:28
Reply

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

Reply

Marsh Posté le 26-02-2008 à 09:04:12    

personne n'a rien trouvé ? :(

Reply

Marsh Posté le 26-02-2008 à 09:33:32    

maxfrancky a écrit :

je ne sais pas si tout est clair, mon fichier cijoint pourra peut etre vous aider a comprendre...


Pas vraiment, pourrais-tu donner un exemple de ce que tu attends...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 27-02-2008 à 14:32:20    

babasss a écrit :


Pas vraiment, pourrais-tu donner un exemple de ce que tu attends...


 
si sur ma page impression j'ai ça
 
CODE ARTICLE        J -8      J +8     J  +21
021158                120  
010927                                               40
020921                                64           20    
000708                                               46
 
sur ma page envoi je v devoir avoir :
 
n° article nombre de colis      âge
021158           120               1
010927            40                3
020921             64               1
020921             20               2
000708             46                3
....


Message édité par maxfrancky le 27-02-2008 à 14:34:14
Reply

Marsh Posté le 27-02-2008 à 15:06:00    

En code synthétique, tu peux faire :
While NOT end of line
  For colonne_selectionné = 1 to 3
    If cells(ligne_selectionné,colonne_selectionné+1) <> 0 // +1 par ce que la 1° colonne est la B
      Then  
         cells(ligne_arrivé,colonneA) = cells(ligne_selectionné, 1)
         cells(ligne_arrivé,colonneB) = cells(ligne_selectionné, colonne_selectionné)
         cells(ligne_arrivé,colonneC) = colonne_selectionné
         ligne_selectionné = ligne_selectionné + 1
    Next
Wend


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 04-03-2008 à 14:20:57    

Citation :

 
While NOT end of line
   For colonne_selectionné = 1 To 3
    If Cells(ligne_selectionné, colonne_selectionné + 1) <> 0 Then '  +1 par ce que la 1° colonne est la B
         Cells(ligne_arrivé, colonneA) = Cells(ligne_selectionné, 1)
         Cells(ligne_arrivé, colonneB) = Cells(ligne_selectionné, colonne_selectionné)
         Cells(ligne_arrivé, colonneC) = colonne_selectionné
         ligne_selectionné = ligne_selectionné + 1
    End If
   Next
Wend


 
il comprend pas le end of line :s

Reply

Marsh Posté le 04-03-2008 à 16:47:07    

Euh, j'ai marqué :

babasss a écrit :

En code synthétique, tu peux faire :


Ca veut dire que ce n'est pas formalisé, c'est une piste de réflexion sous une forme de pseudo langage, à toi de trouver les expressions qui conviennent à chaque fois pour que le code fonctionne....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 05-03-2008 à 10:59:00    

j'avais bien compris, d'ailleurs l'idée m'a bien aidé,  
 
Dim ligne_selectionné, ligne_arrivé, line As Integer
 
ligne_arrivé = 2
 
For ligne_selectionné = 2 To 200
 
    For colonne_selectionné = 1 To 3
   
        If Cells(ligne_selectionné, colonne_selectionné + 1) <> 0 Then
         Cells(ligne_arrivé, colonneA) = Cells(ligne_selectionné, 1)
         Cells(ligne_arrivé, colonneB) = Cells(ligne_selectionné, colonne_selectionné)
         Cells(ligne_arrivé, colonneC) = colonne_selectionné  
         ligne_selectionné = ligne_selectionné + 1
         ligne_arrivé = ligne_arrivé + 1
        End If
    Next
Next
 
 
 
j'ai essayé un truc du genre, mais j'ai une erreur d'execution 1004
erreur defini par l'application ou l'objet
et je sais pas trop d'ou cela vient, si vous avez une idée :s


Message édité par maxfrancky le 05-03-2008 à 11:00:20
Reply

Marsh Posté le 05-03-2008 à 12:24:13    

c'est bon, tout en ayant modifier mes autres pages, j'ai trouvé un code fonctionnel tres inspiré du tien...
je te remerci
 
 
Dim ligne_selectionné, ligne_arrivé, line As Integer
 
ligne_arrivé = 1
 
For ligne_selectionné = 2 To 200 Step 1
 
    For colonne_selectionné = 1 To 3
   
ligne_arrivé = ligne_arrivé + 1
 
        If Worksheets("saisie" ).Cells(ligne_selectionné, colonne_selectionné + 8) <> 0 Then '  +1 par ce que la 1° colonne est la B
         Worksheets("envoi" ).Cells(ligne_arrivé, 1) = Worksheets("saisie" ).Cells(ligne_selectionné, 5)
         Worksheets("envoi" ).Cells(ligne_arrivé, 2) = Worksheets("saisie" ).Cells(ligne_selectionné, colonne_selectionné + 8)
         Worksheets("envoi" ).Cells(ligne_arrivé, 3) = colonne_selectionné + 1
        End If
         
 
    Next
Next
 
mon nouveau problème va etre d'effacer toutes les lignes vides :)

Reply

Sujets relatifs:

Leave a Replay

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