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

Microsoft 365 Remplacer référence ligne absolue par lastrow dans ActiveCell.Formula2 = "=SUM(R[-90]C:R[-1]C)"

Aloha

XLDnaute Accro
Bonjour,
En-dessous d'un tableau à longeur variable je voudrais mettre des totaux.
L'enregistreur m'a donné:

VB:
Range("F" & lastrowA + 1).Select
ActiveCell.Formula2 = "=SUM(R[-90]C:R[-1]C)"

En fait je voudrais aditionner les cellules F6 à F & lastrow
Comment faire?

Question subsidiaire: quelle est la signification de Formula2?
Bien à vous
Aloha
 

patricktoulon

XLDnaute Barbatruc
re
je crois que tu saisi pas bien le contexte de fonction personnalisé
si tu veux un calcul avec par exemple ici le lastrow dynamique
tu fait une fonction dans un module

Attention!!!je n'ai pas testé la validité de ta formule (d'autre s'en chargeront)
exemple
VB:
Function taratata(x)
 lastrorw = Sheets("toto").Range(Rows.Count, "A").End(xlUp).Row 'adapter le nom de la feuille  et la lettre de la colonne
 taratata= Evaluate("=SUMPRODUCT((Feuil1!R4C2:R" & lastrow & "C2='Feuille nouv.'!RC1)*(Feuil1!R4C4:R" & lastrow & " C27=""B""))")
 End Function
et dans ta cellule G6 tu met la formule = taratata(1) et tu n'y touche plus
et la oui a chaque fois que le calculate est opéré la formule sera calculée avec le lastrow a jour

peut être même que lastrow ne sera pas pareil pour tes 2 feuilles puisque tu utilise 2 feuille dans ta formule

il faudra donc peut être faire un lastrow1 et un lastrow2
 

Aloha

XLDnaute Accro
Bonsoir,
Mais si je comprends bien cela ne tient pas compte du fait que la dernière cellule remplie n'est pas toujours dans la même colonne.

Quel est l'avantage de créer une fonction à cet effet?

Et quel est le rôle du chiffre 1 derrière le nom de la fonction?
Bonne soirée
Aloha
 

patricktoulon

XLDnaute Barbatruc
comme je te l'ai dit je n'ai pas contrôlé la validité de ta formule n'ayant pas ton fichier
le "1" c'est simplement pour qu'il y est un argument qui fait que le calculate sera déclenché au moindre changement dans la feuille ,comme avec les fonctions excel natives

j'explique plus simplement le principe d' une fonction personnalisé
imagine que en (A1:A derniere ligne utilisée ) tu a des nombres
en b1 tu veux la somme
toi avec une formule tu va faire
=somme(A1:A10000)
sauf que 10000 est arbitraire puisque tu connais pas la fin

maintenant en fonction personnalisée
VB:
Function SommeX(rang As Range)
Dim DerLigne&
DerLigne = rang.Cells(Rows.Count).End(xlUp).Row
SommeX = Evaluate("=SUM(A1:A" & derligne & ")")
End Function
et maintenant dans la cellule par exemple en B1 tu met =sommeX(A:A)
et voila la formule envoie la colonne A complète en argument mais la fonction perso calcule la somme uniquement des cellules utilisées
 

patricktoulon

XLDnaute Barbatruc
j'irais même plus loin dans la définition de la plage a calculer dans la fonction perso

VB:
Function SommeX(rang As Range)
Set dercel = rang.Cells(Rows.Count).End(xlUp)
 plage = Range(rang.Cells(1), dercel).Address(0, 0)
SommeX = Evaluate("=SUM(" & plage & ")")
End Function

en colonne "A" des nombres
et en C2=sommeX(A:A)

resultat
comme tu peux le voir le calcul se fait tout seul a chaque fois qu'une cellule en colonne "A" change
 

patricktoulon

XLDnaute Barbatruc
re
dans un module standard
je suppose que ca non plus tu sais pas faire ?

edit si!! inscrit en 2007 tu dois savoir faire
te reste plus qu'a evaluer ta fonction sommeprod comme je le fait avec somme "SUM" en vba dans la fonction perso
 

Aloha

XLDnaute Accro
Bonjour,
Ma macro met plusieurs formules dans différentes colonnes; faudrait-il alors une fonction par formule?
Dans ma formule j'ai seulement remplacé les vrais noms des feuilles, par des noms imaginés, autrement je n'y ai rien changé.
Je peux préparer un petit fichier avec les formules.
A+
Aloha
 

Aloha

XLDnaute Accro
Bonjour,
Je te joins le fichier original, c'est plus simple.
Il s'agit des formules dans la feuille "44 HEURES" que la macro met dans les cellules D6, F6, G6, H6, I6, pour les recopier ensuite vers le bas jusqu'à la dernière ligne et les remplacer à la fin par leurs valeurs.
Ces formules sont résumées dans la feuille "Formules".

Si tu veux faire tourner le tout, il faut au moins un fichier mensuel dont je joins un (j'ai dû le comprimer parce qu'il était trop volumineux).

Si tu veux comprendre tout le contexte, il est décrit dans l'énoncé du fil https://www.excel-downloads.com/threads/compter-les-we-libres.20054278/page-19#posts
Bonne journée
Aloha
 

Pièces jointes

  • Base.xlsm
    967.4 KB · Affichages: 15
  • Janvier 2020 FM anonymisé.zip
    602.9 KB · Affichages: 1
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…