programmer une macro vb pour excel... merci babasss [Résolu] - VB/VBA/VBS - Programmation
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...
Marsh Posté le 27-02-2008 à 14:32:20
babasss a écrit : |
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
....
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
Marsh Posté le 04-03-2008 à 14:20:57
Citation : |
il comprend pas le end of line :s
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....
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
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
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 édité par maxfrancky le 05-03-2008 à 13:21:28