Insertion de ligne puis de formules dans un tableau

Y compris Power BI, Power Query et toute autre question en lien avec Excel
T
Trysonne
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 9 janvier 2018
Version d'Excel : 2016

Message par Trysonne » 10 janvier 2018, 17:22

Bonjour,

Bonne année à tous. Je suis nouveau dans le domaine de la programmation sur excel.
Je pense que le sujet a deja etait abordées plusieurs fois, mais je n'ai pas trouvé bonheurs à mon problème.
J'aurais besoin d'une petite aide. J'ai un tableau avec plusieurs valeurs. Dans un premier temps j'aimerais effectuer un tri par ordre croissant vis-à-vis d'une colonne. Pour cela j'ai déjà réalisé une macro et ça marche nickel.
Mon problème arrive par la suite. J'aimerais effectuer une macro (ou plusieurs) pour regrouper les lignes qui ont un chiffre en commun, avec une insertion de ligne.
Par la suite il faudrait que dans les lignes rajoutées des formules de somme viennent s'ajouter.
Je ne sais pas si je me suis bien fait comprendre.
Je vous joins un fichier avec le résultat après mon tri, et ce que j'aimerais obtenir.
D'avance je vous remercie pour l'aide.
Tableau de coupe.xlsm
(148.79 Kio) Téléchargé 16 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 11 janvier 2018, 07:58

Bonjour et Bonne année à toi également,

à tester,
Sub test()
Application.ScreenUpdating = False

Sheets("Debut").Copy After:=Sheets(2)
ActiveSheet.Name = "test"
Derlig = Sheets("test").Range("A" & Rows.Count).End(xlUp).Row + 1

Nb = Range("B10:B" & Derlig).Address
Brut = Range("C10:C" & Derlig).Address
Largeur_brute = Range("E10:E" & Derlig).Address
Largeur_finale = Range("F10:F" & Derlig).Address
Poids_brute = Range("H10:H" & Derlig).Address
Poids_Final = Range("I10:I" & Derlig).Address

For i = Derlig - 1 To 10 Step -1
    If Cells(i, 3) <> Cells(i - 1, 3) Then
        Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A" & i & ":I" & i).Interior.Color = RGB(217, 217, 217)
        Range("C" & i).Value = Range("C" & i + 1).Value
        Range("B" & i) = Evaluate("Sumproduct((" & Brut & "=" & Cells(i, 3).Value & ")*(" & Nb & "))")
        Range("E" & i) = Evaluate("Sumproduct((" & Brut & "=" & Cells(i, 3).Value & ")*(" & Largeur_brute & "))")
        Range("F" & i) = Evaluate("Sumproduct((" & Brut & "=" & Cells(i, 3).Value & ")*(" & Largeur_finale & "))")
        Range("H" & i) = Evaluate("Sumproduct((" & Brut & "=" & Cells(i, 3).Value & ")*(" & Poids_brute & "))")
        Range("I" & i) = Evaluate("Sumproduct((" & Brut & "=" & Cells(i, 3).Value & ")*(" & Poids_Final & "))")
    End If
Next
Application.ScreenUpdating = True
End Sub
Vive ces nouvelles saisons qui nous colorent.
isabelle
T
Trysonne
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 9 janvier 2018
Version d'Excel : 2016

Message par Trysonne » 11 janvier 2018, 17:15

Super !!!! Cela fonction au poile !!
Est-il possible de mettre en gras les nombres qui sont créer avec les insertions de ligne ?
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 11 janvier 2018, 19:18

Bonjour,

oui,
'juste après cette ligne,
Range("A" & i & ":I" & i).Interior.Color = RGB(217, 217, 217)
'ajouter cette ligne,
Range("A" & i & ":I" & i).Font.Bold = True
Vive ces nouvelles saisons qui nous colorent.
isabelle
T
Trysonne
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 9 janvier 2018
Version d'Excel : 2016

Message par Trysonne » 12 janvier 2018, 07:20

Nickel.
Je te remercie de m'avoir aidé.
Bonne journée à toi
T
Trysonne
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 9 janvier 2018
Version d'Excel : 2016

Message par Trysonne » 12 janvier 2018, 09:30

J'ai une dernière question.
J'aimerais ajouter à la somme créer dans largeur finale (au niveau des sous ensemble) une formule.
La formule permettrait de faire:
Somme des largeur finale du sous ensemble (associé a la ligne créer) + (7 x le nombre)
Je ne sais pas si on comprend de quoi je parle ^^
Merci d'avance pour l'aide
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 12 janvier 2018, 14:43

Bonjour,
J'aimerais ajouter à la somme créer dans largeur finale (au niveau des sous ensemble) une formule.
La formule permettrait de faire:
Somme des largeur finale du sous ensemble (associé a la ligne créer) + (7 x le nombre)
Je ne sais pas si on comprend de quoi je parle ^^
par exemple si le résultat de la somme actuelle d'un sous-ensemble est de 10
vous aimeriez que ce résultat soit de 80 ?
Vive ces nouvelles saisons qui nous colorent.
isabelle
T
Trysonne
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 9 janvier 2018
Version d'Excel : 2016

Message par Trysonne » 15 janvier 2018, 07:24

Bonjour,
Si dans un sous ensemble qui est égale a 100 en colonne F, mais dans se sous ensemble j'ai que 4 pièces différentes en B, cela ferai
100 + (7*B).
J'ai actuellement le code que l'on ma donné:
Sub test()
Application.ScreenUpdating = False

Derlig = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1

Nb = Range("B9:B" & Derlig).Address
Brut = Range("C9:C" & Derlig).Address
Largeur_brute = Range("E9:E" & Derlig).Address
Largeur_finale = Range("F9:F" & Derlig).Address
Poids_brute = Range("H9:H" & Derlig).Address
Poids_Final = Range("I9:I" & Derlig).Address

For I = Derlig - 1 To 9 Step -1
    If Cells(I, 3) <> Cells(I - 1, 3) Then
        Rows(I).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A" & I & ":I" & I).Interior.Color = RGB(217, 217, 217)
        Range("A" & I & ":I" & I).Font.Bold = True
        Range("C" & I).Value = Range("C" & I + 1).Value
        Range("B" & I) = Evaluate("Sumproduct((" & Brut & "=" & Cells(I, 3).Value & ")*(" & Nb & "))")
        Range("E" & I) = Evaluate("Sumproduct((" & Brut & "=" & Cells(I, 3).Value & ")*(" & Largeur_brute & "))")
        Range("F" & I) = Evaluate("Sumproduct((" & Brut & "=" & Cells(I, 3).Value & ")*(" & Largeur_finale & "))")
        Range("H" & I) = Evaluate("Sumproduct((" & Brut & "=" & Cells(I, 3).Value & ")*(" & Poids_brute & "))")
        Range("I" & I) = Evaluate("Sumproduct((" & Brut & "=" & Cells(I, 3).Value & ")*(" & Poids_Final & "))")
    End If
Next
Application.ScreenUpdating = True
End Sub
J'ai rajouté cette ligne juste avant "End If"
        Range("F" & I).Select
    ActiveCell.FormulaR1C1 = "=SUM(7*RC[-3]+(SUM(R[1]C:R[3]C)))"
Cela fonctionne à peut prêt, mais le problème, c'est qu 'il me sélectionne obligatoirement 3 ligne, or mon chant d'action peut varier. De plus, il me fait la somme par rapport a la colonne C et non la B.
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 15 janvier 2018, 08:40

par exemple pour les données suivante, quel serait le résultat attendu ?
Image
Trysonne-résultat attendu.png
Trysonne-résultat attendu.png (31.84 Kio) Vu 175 fois
Vive ces nouvelles saisons qui nous colorent.
isabelle
T
Trysonne
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 9 janvier 2018
Version d'Excel : 2016

Message par Trysonne » 15 janvier 2018, 10:07

Pour l'exemple:

Pour 17.06 -> 24.06 car (17.06+(7x1))
Pour 130 -> 144 car (130+(7x2))
Pour 251.32 -> 286.32 car (251.32+(7x5))
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message