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 :
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.
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...
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.
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...
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...
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"
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
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
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^^