Creer une macro pour sommer plusieurs cellules de plusieurs feuilles

Creer une macro pour sommer plusieurs cellules de plusieurs feuilles - VB/VBA/VBS - Programmation

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 :ange:  

Reply

Marsh Posté le 11-11-2010 à 09:54:40   

Reply

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
  ActiveCell.FormulaR1C1 = "=[ASA_EAG.xlsx]Sheet1!R4C4+[ASA_ING.xlsx]Sheet1!R" & CStr(i) & "C4"
  ActiveCell.Offset(1, 0).Activate
Next


Bon courage !

Reply

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

Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed