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

Macro calcul en fonction de la dernière ligne

Mariusweber

XLDnaute Nouveau
Bonjour,

Je cherche à obtenir des macros qui effectuent un calcul en fonction de la dernière ligne d’un fichier (l’index de cette ligne pouvant changer en fonction du projet étudié). Je vous laisse observer le fichier en pièce jointe si vous avez du temps à me consacrer pour m’aider.

Merci!

Marius
 

Pièces jointes

  • fichier base pour envoi act52.xlsm
    20.8 KB · Affichages: 8

Staple1600

XLDnaute Barbatruc
Bonjour

Si j'ai bien compris
VB:
Sub act_52_v2()
Dim DernLigne&, Lignecalcul$
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Lignecalcul = DernLigne - 2
Range("D" & DernLigne) = "=((SUBTOTAL(109,R6C:R" & Lignecalcul & "C))*1.06)/2"
MsgBox "Le total des heures a été recalculé à l'activité 52", vbInformation, "Résultats"
End Sub

Observations:
Pourquoi ne pas simplement utiliser les formules?
Normalement, elles s'adapteront même si tu insères des lignes.
Exemple
en D17: =SOMME($D$9:D16)
en D23: =$D17+$D21
et en D25, ta formule actuelle : =(((SOUS.TOTAL(109;D$6:D$22))*1,06)/1,06)/2
Ensuite si tu insères des lignes entre D9 et D16, les formules s'adaptent automatiquement, non ?
(Sans devoir passer pas VBA)
 

Mariusweber

XLDnaute Nouveau
Bonjour,
Le calcul s'effectue sur une feuille de calcul crée via une macro et la méthode avec formule renvoie un bug. J'ai réussi à trouver par moi meme une solution simple en vba . Merci de votre réponse!

Marius
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Bonjour,
J'ai réussi à trouver par moi meme une solution simple en vba . Merci de votre réponse!

Marius
Tu as trouvé une solution tout seul, c'est bien
La publier, pour la partager avec la communauté des XLdiens, c'est mieux
(et accessoirement c'est aussi plus courtois)

Apparemment, le nouveau membre cru 2019 prends les mauvaises habitudes du cru 2018
 

Mariusweber

XLDnaute Nouveau
Bonjour,

Voila la solution :

Sub act_52_v2()

xx = Range("D" & Rows.Count).End(xlUp).Row
Range("D" & xx).FormulaR1C1 = "=(SUBTOTAL(109,R6C:R" & xx - 3 & "C))*(55/52)"
MsgBox ("Le total des heures a été recalculé à l'activité 52")

End Sub
Sub act_55_v2()

xx = Range("D" & Rows.Count).End(xlUp).Row
Range("D" & xx).FormulaR1C1 = "=((SUBTOTAL(109,R6C:R" & xx - 3 & "C))*(55/52))/(55/52)"
MsgBox ("Le total des heures a été recalculé à l'activité 55")

End Sub

Bien cdlt,

Marius
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…