Petite erreur de syntaxe...Mais ou est cette erreur ???

SERIEUXETCOOL

XLDnaute Occasionnel
Bonjour le forum,

Voici le petit bout de code suivant qui fonctionne très bien :

Code:
Range("A3").Formula = "=A1+A2"

Du coup, quand je clique sur la cellule A3 j'obtiens la formule (A1+A2). Et quand je modifie A1 ou A2 alors A3 change et se met automatiquement à jour. Tout sa est très bien.

Sauf que je désire mettre des variables dans la formule comme dans le code suivant :

Code:
Range("A3").Formula = "=" & Range("A" & i) + Range("A2") & ""

Mais la sa ne marche plus du tout !!! Je ne comprends pas mon erreur bien que je pense que sa sois du à la syntaxe.

En gros j'aimerais que mon deuxième code (celui avec Variable) fasse la même chose que mon premier code. Affichage de la formule ET mise à jour automatique des cellules quand je change A1 ou A2.

J'aimerais conserver le "Range" présent dans mon deuxième code si possible. Je trouve sa lisible et compréhensible.

Merci de votre aide pour ce petit problème...


André
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

OK sa marche bien en effet.

Mais n'y a t'il pas un moyen de taper une formule sous vba de manière moins "chiante" ??? Nan parce que la sa va encore pour faire une addition tout bête...Mais je vais devoir faire de grosses formules et sa va plus aller comme méthode du coup.

Ne peut on pas virer les "adress" ou les "adress(0,0)" ??? Sa fait sacrément lourd dis donc.

En tout cas merci pour cette première réponse qui fonctionne. C'est un bon début. Mais je vais devoir optimiser encore un peu...

Des idées ?


André

Ps : Je ne veux pas de formule RC !
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

Le fait d'envoyer une formule me permet deux choses

- La première c'est de pouvoir visualiser la formule qui a été utilisé pour obtenir le résultat. Donc une tierce personne peut d'elle même vérifier la formule si besoin est. 5indispensable dans mon application)

- La deuxième chose c'est la cellule qui contient la formule doit pouvoir se mettre à jour si les cellules annexes auquel elle fait référence voient leurs contenus changer. Je dois donc conserver un lien entre la cellule finale qui contient la formule et le résultat, avec les autres cellules qui contiennent les données.

Il y a peut être une autre solution ?
 

Pierrot93

XLDnaute Barbatruc
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

Re,

- La deuxième chose c'est la cellule qui contient la formule doit pouvoir se mettre à jour si les cellules annexes auquel elle fait référence voient leurs contenus changer. Je dois donc conserver un lien entre la cellule finale qui contient la formule et le résultat, avec les autres cellules qui contiennent les données.

fait peut être une recherche du côté des procédures événementielles, événement "Worksheet_Change" de la feuille de calcul et autres... A voir selon ton projet...
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

Merci à toi TempusFugit pour m'avoir corrigé ma petite erreur de syntaxe. C'est exactement que sa je voulais corriger.

Maintenant oui je vais pouvoir faire mes formules de manière plus simple.

Bonne soirée et merci encore pour vos réponses.

Nice !

André
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

Euuuh de retour pour plus de précisions...

Voici le code qui fonctionne :

Code:
Sub Macro4()
Dim i As String
i = 7 'ici pour l'exemple
Range("A3").Formula = "=A" & i & "+A2"
End Sub

Maintenant si je cherche à compliquer un peu plus l'affaire comme suit :

- Je dispose de 3 feuilles Excel numérotées ainsi : Feuil1, Feuil2, Feuil3

- J'ai une série de données dans ma feuille 1 qui vont de A1 à A10.

- J'ai une autre série de données dans ma feuille 2 qui vont de A1 à A10

- Comment faire afficher dans la feuille 3 et dans les cellules A1 à A10 la somme des cellules A1 (feuille 1) plus A1 (feuille 2) ???

J'ai le début de code suivant, mais je ne sais pas faire intervenir les feuilles 1 et 2 dans la formule. Problème de syntaxe encore une fois !!!

Code:
Sub Macro1()

Dim i As Integer

For i = 1 To 10
Sheets("Feuil3").Range("A" & i).Formula = "="Feuil1"A" & i & "+"Feuil2"A" & i "
Next

End Sub

Merci à ceux qui sauront rectifier le tir une fois de plus^^. Il s'agit simplement de corriger syntaxiquement le code que je propose ci-dessus, pas de proposer un autre code. Sauf si c'est un code plus simple à programmer et plus facile à comprendre.


André

Ps : Avez vous un lien utile ou je pourrais avoir un cours sur cette fonction "Formula" ??? Sa éviterais que je vous dérange pour de la syntaxe. Malheureusement je ne trouve pas grand chose sur la toile et encore moins d’exemples pour m'en inspirer...
 

kjin

XLDnaute Barbatruc
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

Bonsoir,
Formula
n'est pas une fonction mais une propriété
Le nom de feuille dans une formule :
Feuil1 ---> Feuil1!
Feuil 1 ---> 'Feuil 1'!
...donc par conséquence
Code:
Dim i&
For i = 1 To 10
Sheets("Feuil3").Range("A" & i).Formula = "=Feuil1!A" & i & "+Feuil2!A" & i
Next
...ou encore
Code:
Dim c As Range
Set c = Sheets("Feuil3").Range("A1:A10")
c.Formula = "=Feuil1!A1+Feuil2!A1"
A+
kjin
 

TempusFugit

XLDnaute Impliqué
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

Bonjour

Pourquoi ne pas utiliser l'outil Consolidation ?
(Cela évite la macro)
(Voir dans le menu: Données/Consolidation et suivre les indications de l'assistant )

Je mets ici le code issu de l'enregisteur de macro pour illuster de quoi il s'agit
Code:
Sub Macro1()
Feuil3.[A1].Consolidate Sources:=Array("[Classeur1]Feuil1!R1C1", _
        "[Classeur1]Feuil2!R1C1"), Function:=xlSum, TopRow:=False, LeftColumn:= _
        False, CreateLinks:=False
End Sub
 

TempusFugit

XLDnaute Impliqué
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

Bonjour de nouveau

On peut personnaliser le code ainsi si tu veux utiliser des variables

Code:
Sub MacroV2()
Dim maVar1 As String, mVar2 As String
maVar1 = "[Classeur1]Feuil1!R1C1"
maVar2 = "[Classeur1]Feuil2!R1C1"
Feuil3.[A1].Consolidate Sources:=Array(maVar1, maVar2), Function:=xlSum
End Sub
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Petite erreur de syntaxe...Mais ou est cette erreur ???

Bonjour le Forum,

Merci pour vos réponses. C'est sympa de votre part. Je vais tester tout sa, mais normalement Kjin a donné la réponse que je souhaitais. Une bonne correction et en plus de sa une description de la propriété "Formula".

Perfect ;)

Je repasse en cas de complications...

André

Ps : TempusFugit, je ne sais pas vraiment ce qu'est l'outil consolidation. Je vais jeter un oeil. Mais d'avance, je cherche à avoir une formule dans ma cellule. Donc je dois taper une formule bien plus évolué qu'une simple addition. Cette formule comprendra des log, des cos des divisions, etc.. Je vais regarder quand même. Merci donc^^
 

Discussions similaires

Réponses
5
Affichages
207

Statistiques des forums

Discussions
312 211
Messages
2 086 286
Membres
103 170
dernier inscrit
HASSEN@45