Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1162 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Creer une macro pour sommer plusieurs cellules de plusieurs feuilles

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Creer une macro pour sommer plusieurs cellules de plusieurs feuilles

n°2035399
weezyjoel
Posté le 11-11-2010 à 09:54:40  profilanswer
 

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:  

mood
Publicité
Posté le 11-11-2010 à 09:54:40  profilanswer
 

n°2035505
olivthill
Posté le 11-11-2010 à 22:13:45  profilanswer
 

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 !

n°2035534
weezyjoel
Posté le 12-11-2010 à 01:51:33  profilanswer
 

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

n°2035548
olivthill
Posté le 12-11-2010 à 08:16:59  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Creer une macro pour sommer plusieurs cellules de plusieurs feuilles

 

Sujets relatifs
Macro pour compiler des fichiers en tableaux et generer les graphesBesoin d'aide sur une macro Excel
Macro: filtrer des données avec plus de 2 critères?Partager une route entre plusieurs voitures
aide pour macro excelProblème avec macro excel
copier des cellules d'une feuille vers une feuille spécifique[Macro Word] Copier/Coller depuis diff docs
[VBA] Créer une fonction utilisée en tant que formulecomparaison de deux cellules
Plus de sujets relatifs à : Creer une macro pour sommer plusieurs cellules de plusieurs feuilles


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR