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)"

  • Initiateur de la discussion Initiateur de la discussion Aloha
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
Bonjour "Fred0o" et "Dranreb",
C'est exactement ça! Merci beaucoup!
En fait, c'est simple...à condition de savoir comment faire 😉

Autre petit problème survenu après:
si je veux formater le total de sorte que les milliers soient séparés, j'ai le résultat à voir dans la copie d'écran ci -annexée, avec le code:
VB:
 Range("F" & lastrowA + 1).Select
 Selection.NumberFormat = "#.##0.0"
Bizarre
 

Pièces jointes

  • Formatage du total.JPG
    12.1 KB · Affichages: 25
OK, je vois, il fallait une virgule au lieu d'un point pour séparer les milliers.
Seulement, ce n'est pas moi qui ai mis le point, c'est l'enregistreur himself!
Comment est-ce possible?

Qui plus est, le résultat est malgré tout un point autant pour séparer les milliers que pour les décimales!

Ultime question: comme certaines données ne sont plus disponibles puisqu'effacées, je voudrais remplacer les #N/A qui s'en suivent par un texte comme "Données personnelles indisponibles" et réduire la taille des caractères de police de ces cellules à un minimum pour que le texte ne déborde pas.
 

Pièces jointes

  • Formatage du total.JPG
    10.5 KB · Affichages: 10
  • Remplacer les NA.xlsm
    Remplacer les NA.xlsm
    160.7 KB · Affichages: 5
Dernière édition:
Bonjour,
Voici une autre formule que je n'arrive pas à adapter de sorte qu'elle s'étende jusqu'à la dernière cellule en A contenant une valeur (lastrowA):
VB:
    Range("G6").Select
    ActiveCell.Formula2R1C1 = _
     "=SUMPRODUCT((Feuil1!R4C2:R100000C2='Feuille nouv.'!RC1)*(Feuil1!R4C4:R100000C27=""B""))"
Je veux donc remplacer la ligne 100 000 par lastrowA
Merci d'avance pour toute aide
Aloha
 
Bonjour Aloha

A tester :
VB:
    Range("G6").Select
    ActiveCell.Formula2R1C1 = _
     "=SUMPRODUCT((Feuil1!R4C2:R" & lastrowA & "C2='Feuille nouv.'!RC1)*(Feuil1!R4C4:R" & lastrowA & "C27=""B""))"
 
Bonjour.
Ce genre de plage devrait se mettre sous forme de tableau pour pouvoir utiliser les références structurées en guise de paramètres.
Sinon, si vous avez les Range sous la main vous pouvez en prendre, à concaténer : .Address(True, True, xlR1C1, True)
Et évitez les '.Select : ActiveCell.', juste un '.' suffit. Range("G6").Formula2R1C1 = etc.
 
Dernière édition:
Cela dépasse hélas mes capacités.
J'avais espéré que mes formules se calculeraient plus rapidement si je n'allais pas jusqu'à la ligne 100000 mais seulement jusqu'à la dernière ligne avec valeurs, mais en réalité il n'y a pas beaucoup de gain de temps.
La méthode que vous esquissez là est sûrement plus rapide!

@"Fred0o":
Cela fonctionne parfaitement. Merci!
En réalité c'est tout simple à ce que je vois.
 
Bonsoir,
Une variante:
Je viens de constater qu'il peut arriver que les valeurs dans A s'étendent sur moins de lignes que d'autres colonnes.
Comment remplacer dans le code la dernière ligne en A avec zune valeur par la dernière ligne de la colonne qui comprend le plus de lignes.
Bonne nuit
 

Pièces jointes

Bonjour Aloha, Dranreb

A tester et adapter en fonction de ta vraie base de données :
VB:
    lastrowA = Range("A1:E65536").SpecialCells(xlCellTypeLastCell).Row - 1
    Range("G6").Select
    ActiveCell.Formula2R1C1 = "=SUMPRODUCT((Feuil1!R4C2:R" & lastrowA & "C2='Feuille nouv.'!RC1)*(Feuil1!R4C4:R" & lastrowA & "C27=""B""))"
 
bonjour a tous
il faudra quand même m'expliquer a quoi ça sert d'envoyer une formule avec lastrow dynamique
ça n'a pas de sens car a la prochaine ligne ajoutée il faudra la refaire
alors pourquoi demander le calcul par formule au tant le faire en vba

😉
 
Bonjour,
J'ai constaté des situations, dues peut-être à mes essais, mais je n'en suis pas sûr, où la dernière cellule occupée ne se trouvait pas en A, lorsque la macro devait commencer par effacer les données d'un tableau pour céder la place à de nouvelles données.
Ce qui n'est pas clair pour moi, avec mes maigres connaissances en VBA, qui ne me permettent que des enregistrements et du petit bricolage: si, au début de la macro, lastrowA est définie comme la ligne X, et que des données sont ajoutées, si j'utilise encore lastrowA plus bas dans la macro, la valeur de lastrowA reste toujours la ligne X ou si elle s'adapte à la nouvelle situation.

@"Fred0o":
cela fonctionne, merci, mais il faut que j'enlève le -1, sinon j'atterris une ligne en dessous des données.
Bonne journée
Aloha
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…