Visual Basic - Ajout de ligne si condition

ArnoT&T -  
 ArnoT&T -
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
Configuration: Excel 97 - VB 6.3

9 réponses

  1. moiced59 Messages postés 1161 Statut Membre 60
     
    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
  2. moiced59 Messages postés 1161 Statut Membre 60
     
    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
  3. moiced59 Messages postés 1161 Statut Membre 60
     
    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
  4. ArnoT&T
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. moiced59 Messages postés 1161 Statut Membre 60
     
    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
  7. ArnoT&T
     
    Oui dans cet exemple c'est 30 le max
    apres je retravaillerais le code selon mes besoins.
    0
  8. moiced59 Messages postés 1161 Statut Membre 60
     
    ok g bientot fini
    0
  9. ArnoT&T
     
    Bonjour,

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

    Tu l'as?
    0