[VBA] Mise en forme et recopie de formules

Maxitos

XLDnaute Nouveau
Bonjour,

J'ai un petit problème avec excel, je vous explique.

J'ai un tableau de bord, avec les différents budgets prévisionnels pour chaque boutique d'une entreprise. J'ai commencé une ébauche de script VBA qui me permettrait d'ajouter (avec un bouton) une nouvelle boutique en précisant le budget prévisionnel total pour la boutique en question. J'aimerai que cette ligne insérée (en dessous de la ligne de la dernière boutique) prenne non-seulement les formules de la ligne du dessus, mais aussi que la ligne des totaux par budgets la prenne en compte ( que la fonction somme s'étende à la nouvelle ligne insérée).

Voici mon "code" :

Code:
Option Explicit
Sub ajoutBoutique()
Dim nbBout As Integer, budget As Integer, numRow As Integer, nvNbBout As Integer
nbBout = Range("A2")
budget = Range("J2")
numRow = nbBout + 4
Rows(numRow).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("G" & numRow) = budget
nvNbBout = nbBout + 1
Range("A" & numRow) = "Boutique " & nvNbBout
End Sub

Je ne sais pas si j'ai été clair, je vous joins mon fichier qui je pense lui est plutôt clair.

Remarque : Lorsque j'insère la ligne "à la main", et que je rentre manuellement un budget en fin de ligne, toutes les mises à jours sont faites comme je le souhaite.


Merci à vous :)

Max
 

Pièces jointes

  • budget.zip
    16.4 KB · Affichages: 41
  • budget.zip
    16.4 KB · Affichages: 36
  • budget.zip
    16.4 KB · Affichages: 34

BrunoM45

XLDnaute Barbatruc
Re : [VBA] Mise en forme et recopie de formules

Bonjour Maxitos

Voici le code remanié ;)
Code:
Sub AjoutBoutique()  Dim Budget As Single
  Dim DLig As Long, LigAjt As Long
  ' Initialisation
  Budget = Range("J2")
  ' Trouver la dernière ligne du tableau
  DLig = Range("A" & Rows.Count).End(xlUp).Row
  LigAjt = DLig - 1
  ' Insérer une nouvelle ligne avant la fin - 1
  Rows(LigAjt).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
  ' Inscrire les valeurs
  Range("G" & LigAjt) = Budget
  Range("A" & LigAjt) = "Boutique " & Range("A2")
  ' Trier les 2 dernière lignes
  Range(Cells(LigAjt, 1), Cells(LigAjt + 1, 7)).Sort Key1:=Range("A" & LigAjt), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  Cells(LigAjt + 1, 2).Select
End Sub

A+
 

Maxitos

XLDnaute Nouveau
Re : [VBA] Mise en forme et recopie de formules

Merci beaucoup,

Mais ça ne recopie pas les formules :( .

J'y suis parvenu en mettant mon tableau sous forme de... tableau :D

Je ne connaissais pas cette fonction, d'ailleurs qu'en pensez vous ?

Merci encore,

Max.

[EDIT : Je vous joins ma solution, si ça peut aider quelqu'un ]
 

Pièces jointes

  • budget_resolu.zip
    22.9 KB · Affichages: 41
Dernière édition:

Discussions similaires

Réponses
5
Affichages
530

Statistiques des forums

Discussions
298 860
Messages
1 972 351
Membres
203 674
dernier inscrit
arthur021