insertion ligne et formules

ungarospy

XLDnaute Nouveau
Bonjour,

Après avoir passé pas mal de temps à trouver une solution à mon problème , je viens prendre conseil auprès de spécialiste

Mon problème :
J'ai un tableau avec plusieurs lignes et colonnes dans lequel j'aimerais faire des tris et calculs

Ce que j'aimerais avoir :

- insertion d'une ligne entre la ligne dont la cellule de la colonne C= Actual Hist / Market Fcst et une autre insertion quand la cellule de la colonne A change de désignation
- Sur la premiere ligne crée dans la cellule de la Colonne C : Ecrire "ecart Quantity" et la 2ème tjrs en Colonne C "Ecart plan"

- Dans la 1ere ligne insérer, je voudrais le calcul suivant =(Ligne-1) - (Ligne-2)
- Dans la 2nd ligne insérer , = Ligne(-2) - (Ligne-1)

Dans le fichier joint j'ai indiqué sur le 1er item ce que je souhaitais



Merci par avance
 

Pièces jointes

  • TEST.xlsx
    252.1 KB · Affichages: 36
  • TEST.xlsx
    252.1 KB · Affichages: 36

VBAdict

XLDnaute Nouveau
Re : insertion ligne et formules

Bonsoir,

En plaçant le code suivant dans un module ça devrait faire l'affaire
Code:
Sub InsertLigne()

Dim str_item As String

Dim i As Integer

i = 2

str_item = Cells(2, 1)

While Cells(i, 3) <> ""

    If str_item <> Cells(i, 1) Then
    str_item = Cells(i, 1)
    Range(i & ":" & i).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    i = i + 1
    Cells(i - 1, 3) = "Ecart Plan "
   
    Cells(i - 1, 4).Value = Cells(i - 3, 4) - Cells(i - 2, 4)
    ElseIf Cells(i, 3) = "Actual Hist / Market Fcst" Then
    
    Range(i + 1 & ":" & i + 1).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    i = i + 1
    Cells(i, 3) = "Ecart Quantity"
    Cells(i, 4) = Cells(i - 1, 4) - Cells(i - 2, 4)
    
    
    End If
    

i = i + 1
Wend

End Sub
 
Dernière modification par un modérateur:

VBAdict

XLDnaute Nouveau
Re : insertion ligne et formules

Bonsoir ungarospy,

Avec le code suivant toute les cellules des nouvelles lignes crées seront remplies, jusqu'à ce que la macro détecte la colonne "Total"

Code:
Sub InsertLigne()

Dim str_item As String

Dim i As Integer
Dim j As Integer

i = 2

str_item = Cells(2, 1)

While Cells(i, 3) <> ""

    If str_item <> Cells(i, 1) Then
    str_item = Cells(i, 1)
    Range(i & ":" & i).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    i = i + 1
    Cells(i - 1, 3) = "Ecart Plan "
    j = 4
    While Not Cells(1, j) Like "*Total*"
    Cells(i - 1, j).Value = Cells(i - 3, j) - Cells(i - 2, j)
    j = j + 1
    Wend
    ElseIf Cells(i, 3) = "Actual Hist / Market Fcst" Then
    
    Range(i + 1 & ":" & i + 1).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    i = i + 1
    Cells(i, 3) = "Ecart Quantity"
    j = 4
    While Not Cells(1, j) Like "*Total*"
    Cells(i, j) = Cells(i - 1, j) - Cells(i - 2, j)
    j = j + 1
    Wend
    
    End If
    

i = i + 1
Wend

End Sub
 

Discussions similaires

Réponses
6
Affichages
423

Statistiques des forums

Discussions
312 234
Messages
2 086 467
Membres
103 226
dernier inscrit
smail12