Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
446
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…