Visual Basic - Ajout de ligne si condition

Fermé
ArnoT&T - 31 déc. 2009 à 12:10
 ArnoT&T - 4 janv. 2010 à 09:33
Bonjour,

Je bloque sur un truc simple

J'ai besoin de détailler des lignes tels que :
Initialement :
A1 : Nom 1 ¤ B1 : Volume 1
A2 : Nom 2 ¤ B2 : Volume 2
....

Apres retraitement je voudrais obtenir :
Si les volumes > 30, créer des lignes tels que
Volume 1 = 80 Volume 2 = 15

A1 : Nom 1 ¤ B1 : 30
A2 : Nom 1 ¤ B2 : 30
A3 : Nom 1 ¤ B3 : Volume 1 - (B1+B2) = 20
A4 : Nom 2 ¤ B4 : 15

Un truc generique qui peux fonctionner quelque soit le nb de ligne à traiter ou le volume à détailler

Merci d'avance
A voir également:

9 réponses

moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 déc. 2009 à 14:56
Sub Feuil2_Bouton1_Clic()
Sheets("Feuil1").Select
Columns("A:B").Select
Selection.Copy
Sheets("Feuil2").Select
Cells(1, 1).Select
ActiveSheet.Paste

i = 2
j = 2
Do Until i = 20

If Cells(i, 2).Value > 30 And Cells(i, 2).Value <= 60 Then
Sheets("feuil2").Select

Cells(i + 1, 1).Select
Selection.EntireRow.Insert
volume1 = Cells(i, 2).Value
Cells(i, 1).Font.Bold = True
Cells(i + 1, 1).Font.Bold = True

Cells(i + 1, 1).Value = Cells(i, 1).Value

Cells(i, 2).Value = 30
Cells(i + 1, 2).Value = volume1 - 30


End If
If Cells(i, 2).Value > 60 Then
Cells(i + 1, 1).Select
Selection.EntireRow.Insert
Selection.EntireRow.Insert

volume1 = Cells(i, 2).Value
Cells(i, 1).Font.Bold = True
Cells(i + 1, 1).Font.Bold = True
Cells(i + 2, 1).Font.Bold = True

Cells(i + 1, 1).Value = Cells(i, 1).Value
Cells(i + 2, 1).Value = Cells(i, 1).Value

Cells(i, 2).Value = 30
Cells(i + 1, 2).Value = 30
Cells(i + 2, 2).Value = volume1 - (Cells(i + 1, 2).Value + Cells(i, 2).Value)
End If

i = i + 1
Loop
End Sub
1
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 déc. 2009 à 13:43
bonjour

je t creer un code mais il faut que ton volume soit superieur a 80 et non a 30

pour pouvoir faire 30+30+la difference

si tu prend pour exemple 80
tu met 30 en b1
tu met 30 en B2
il te reste dc 20 en c2
la ok
mais si tu as 40
tu met 30 en b1
tu met 30 en b2
tu met 0 en c2 et en plus ton voulume né plus bon!!!


voici le code
i = 2
j = 2
Do Until i = 10
If Cells(i, 2).Value > 80 Then
Cells(i + 1, 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
volume1 = Cells(i, 2).Value
Cells(i + 1, 1).Value = Cells(i, 1).Value
Cells(i + 2, 1).Value = Cells(i, 1).Value

Cells(i, 2).Value = 30
Cells(i + 1, 2).Value = 30
Cells(i + 2, 2).Value = volume1 - (Cells(i + 1, 2).Value + Cells(i, 2).Value)

End If
i = i + 1
Loop
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 déc. 2009 à 13:53
tiens je l ai un peu modifier pour que ce mette en gras les ligne modifier par le programme


i = 2
j = 2
Do Until i = 10
If Cells(i, 2).Value > 80 Then
Cells(i + 1, 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
volume1 = Cells(i, 2).Value
Cells(i, 1).Font.Bold = True
Cells(i + 1, 1).Font.Bold = True
Cells(i + 2, 1).Font.Bold = True

Cells(i + 1, 1).Value = Cells(i, 1).Value
Cells(i + 2, 1).Value = Cells(i, 1).Value

Cells(i, 2).Value = 30
Cells(i + 1, 2).Value = 30
Cells(i + 2, 2).Value = volume1 - (Cells(i + 1, 2).Value + Cells(i, 2).Value)

End If
i = i + 1
Loop
0
Merci mais je comprend pas vraiment ton code et surtout son résultat:
Je reformule mon pb :
J'ai actuellement dans la Feuille 1 :
A1 : X ¤ B1 : 80
A2 : Y ¤ B2 : 15
......

Je voudrais faire une macro pour avoir en résultat en Feuille 2 :
A1 : X ¤ B1 : 30
A2 : X ¤ B2 : 30
A3 : X ¤ B3 : 20
A4 : Y ¤ B4 : 15
....

En gros le client X me demande 80 pallettes, on n'en livre que 30 par camions
donc il faut faire 3 camions d'où détaillé la commande sur 3 lignes dans ce cas si.

J'esperes que c'est plus clair

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 déc. 2009 à 14:06
le code que je t donné fais ce que tu demande sauf que c la feuille qui est modifié tu ne m'avais pas dis que c t sur une autre feuille
je vais modifié le code!!!

petite question c tjs 30 le max ?
0
Oui dans cet exemple c'est 30 le max
apres je retravaillerais le code selon mes besoins.
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 déc. 2009 à 14:52
ok g bientot fini
0
Bonjour,

Merci pour le code.
Par contre j'ai une erreur : rond rouge croix blanche : 400

Tu l'as?
0
c'est bon Merci beaucoup
0