Creer une macro pour sommer plusieurs cellules de plusieurs feuilles - VB/VBA/VBS - Programmation
Marsh Posté le 11-11-2010 à 22:13:45
C'est déjà un bon début.
Citation : ActiveCell.FormulaR1C1 = "=[ASA_EAG.xlsx]Sheet1!R4C4+[ASA_ING.xlsx]Sheet1!R4C4" |
On remarque que la partie droite de l'égalité est une grande chaine de caractères, car on a des guillemets au début et à la fin.
Il est facile de découper la chaine, si on connait l'opérateur de concaténation. En VB c'est le signe &. Par exemple, je découpe la chaine autour du chiffre "4" entre le "R" et le "C" :
Citation : ActiveCell.FormulaR1C1 = "=[ASA_EAG.xlsx]Sheet1!R4C4+[ASA_ING.xlsx]Sheet1!R" & "4" & "C4" |
Maintenant, au lieu de "4", je peux avoir un nombre convertit en chaine :
i = 4
Citation : ActiveCell.FormulaR1C1 = "=[ASA_EAG.xlsx]Sheet1!R4C4+[ASA_ING.xlsx]Sheet1!R" & CStr(i) & "C4" |
On peut sélectionner la cellule active voisine avec Ofsset.
Ensuite on peut mettre cela dans une boucle. Pour faire les boucles, on a plusieurs possibilités : for...next, do while.., etc. Par exemple :
Citation : For i = 1 to 10 |
Bon courage !
Marsh Posté le 12-11-2010 à 01:51:33
Merci , je vais l'essayer tout de suite, je te dirai si c'est bon. Mais A qoui sert next a ajouter d'autres operations?
Thanks .
Joel
Marsh Posté le 12-11-2010 à 08:16:59
Next sert à indiquer l'endroit où finit le bloc qui est dans la boucle du For.
Dans d'autres langages de programmation, on a des parenthèses pour indiquer où commencent et où finissent un bloc d'instructions.
C'est comme un end-if pour un if.
D'ailleurs, c'est peut-être un "Next i" qu'il faudrait indiquer au lieu d'un simple "Next". Je ne me souviens plus très bien, parce qu'il y a des variantes selon les versions de VB.
Marsh Posté le 11-11-2010 à 09:54:40
Bonjour
Je voudrais creer une macro pour faire la sommme de plusieurs cellules dans quatres fichiers. Pour le moment, j'ai essaye l'enregistreur de macro et voici ce qu'il me donne :
Sub ligne1()
'
' ligne1 Macro
'
ActiveCell.FormulaR1C1 = "=[ASA_EAG.xlsx]Sheet1!R4C4+[ASA_ING.xlsx]Sheet1!R4C4"
Range("E7" ).Select
ActiveCell.FormulaR1C1 = "=[ASA_EAG.xlsx]Sheet1!R4C5+[ASA_ING.xlsx]Sheet1!R4C5"
Range("D8" ).Select
ActiveCell.FormulaR1C1 = "=[ASA_EAG.xlsx]Sheet1!R5C4+[ASA_ING.xlsx]Sheet1!R5C4"
Range("E8" ).Select
ActiveCell.FormulaR1C1 = "=[ASA_EAG.xlsx]Sheet1!R5C5+[ASA_ING.xlsx]Sheet1!R5C5"
Range("E9" ).Select
End Sub
Malheuresuement ce code n,est qu pour deux fichiers et pour deux lignes et deux colonnnes. Plus tard j'aurai a traiter un nombre indefini.
J'aimerai savoir si il ya un code plus simple pour le definir merci d'avance.
Joel