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

Formule de calcul dans macro

  • Initiateur de la discussion Initiateur de la discussion Sabine
  • 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 !

S

Sabine

Guest
Bonsoir le forum,

QQ1 saurait'il pourquoi cette formule ne marche pas ? voila le resultat = #NOM?

Sub clacul()
Range('A5').Select
ligs = 5
Do While ActiveCell.Value <> ''

Range('AA' & ligs).Select
ActiveCell.FormulaR1C1 = '=SOMME(AB+AD+AF+AH)'

Range('A' & ligs).Select
ligs = ligs + 1
Loop

End Sub


merci
 
Bonsoir Sabine et le Forum,
A priori, il me semble que le problème est dans le
=SOMME(AB+AD+AF+AH)
car si il ne s'agit pas de champs nommés, il manque le N° de ligne.

Il serait peut-être souhaitable de nous envoyer un petit fichier si tu peux et nous dire ce que tu cherches à faire.

A+

Marco
 
bonjour Sabone, marco et ziopizza,

si tu n'as pas besoin de garder les formules dans la col AA
Range('AA' & ligs)=range('AB' & ligs)+range('AD' & ligs) etc.


sinon
Range('AA' & ligs).FormulaR1C1 = '= AB' & ligs & '+AD' & ligs & ' etc

Bonne soirée

Michel M
 
rebonsoir Sabine, Ziopizza et le Forum,

Ziopizza, excuse moi STP si j'ai répondu la même chose un peu plus tard que toi. Je pense que nos messages se sont croisés

Pour Sabine, ceci me semble plus élégant et ça marche :

Code:
Sub Calcul()

Dim Ligne As Long
  
  Application.ScreenUpdating = False
  
  Ligne = 5
  
  Do While Range('a' & Ligne).Value <> ''
    Range('AA' & Ligne).FormulaR1C1 = '=RC[1]+RC[3]+RC[5]+RC[7]'
    Ligne = Ligne + 1
  Loop

  Application.ScreenUpdating = True
  
End Sub

Sabine, prends l'habitude de déclarer tes variables et évite les Select quand c'est possible.

Bonne programmation

Marco
 
Michel, j'ai essayé ta solution, mais j'ai du louper un truc, car je n'y arrive pas ! J'ai joins le fichier.

Marco, je vais tester ta macro, mais sinon, quel est l'interet de declarer les variables ??? Je débute dans le VBA et il est vrai que je me sens pas à l'aise avec tout ca ... :whistle:

Merci a tous les deux [file name=Classeur3_20050913184037.zip size=11970]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur3_20050913184037.zip[/file]
 

Pièces jointes

Bonjour Sabine, Marco, Yves, le Forum

En fait si on fait écrire par VBA une formule, elle devra être en Anglais. Il suffit d'écrire une Formule pendant que l'enregistreur de Macro tourne pour s'en convaincre et aussi pour avoir la traduction gratuitement.

La propriété 'FormulaR1C1' retournée par l'enregistreur est par contre à mes yeux très peu facile d'emploi, obligenat une gymnastique de calculs en déplacement Row/Column.

Je lui préfère de loin la Propriété 'Formula' qui elle, accepte des adresse référence de Range 'Classiques' (A1:A3)

On préfèrera écrire :
Range('D1').Formula = '=Sum(A1:A3)'

Que :
Range('D1').Select
ActiveCell.FormulaR1C1 = '=SUM(RC[-3]:RC[-1])'

Une autre Propriété est FormulaLocal qui permet de saisir la Formule en language local de la machine.

Pour le reste de la question, je vois ceci comme celà :



Bonne Soirée
[ol]@+Thierry[/ol]

EDITION !!!

Sorry no refresh ! (Phone Call)

Bonsoir Michel_m et re l'équipe du Fil
Alors comme ça on 's'abonne' Michel (tant qu'on s'abandonne pas LOL)

Message édité par: _Thierry, à: 13/09/2005 19:02
 
ReBonsoir Sabine et Tous,

Merci pour ton fichier, je viens de tester ma macro et ça marche impec.

Quel est l'intêret de déclarer une variable?
Bien que je ne sois que presque débutant, je vais te donner ce que j'ai retenu de mes lectures à ce sujet.
- D'abord parce-que les pros le font (pas très convainquant jusqu'ici)
- Ensuite parce-qu'en les déclarant, tu définis un type qui est souvent très utile.
Par exemple si tu déclares Feuille as Worksheets
puis Feuille = 'Sommaire'
quand tu fais With Feuille excel sait que tu parles d'une feuille de classeur excel
- Si tu les déclares correctement, tu y mettras au moins une lettre en majuscule. Quand tu saisis du code, tu écris tout en minuscule (sauf une lettre par variable au moment de la déclaration) ainsi, quand tu valides ta ligne, tu peux voir ta minuscule se transformer en majuscule c'est une preuve qu'excel à reconnu ta variable et sa te facilitera énormément la recherche de bug suite à une faute de frappe.
Pour te forcer à déclarer les variables, il faut mettre ou laisse l'Option Explicit en tête de module.
J'espèce que je t'ai convaincue.
Bonne soirée
Marco
 
Bonsoir Marco, Sabine, Yves, le Forum


Merci Marco, ce que tu as écrit est tout à fait juste et bien fondé. Tu ne me convaincras pas, mais je tenais juste à te confirmer mon accord de principe sur les bases.

J'ajouterai juste une raison primaire de base de déclarer les variables, c'est aussi (et surtout) l'économie des ressources en mémoires vives de la machine (ça semble dérisoire avec un méga de RAM, mais il faut se dire que l'on peut faire tourner Excel avec un tas d'autres applis simultanément)

Bonne Nuit
[ol]@+Thierry[/ol]
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Erreur de macro
Réponses
4
Affichages
859
Réponses
5
Affichages
546
K
Réponses
3
Affichages
929
D
Réponses
2
Affichages
947
D
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…