Somme de feuilles de calcul

Somme de feuilles de calcul - VB/VBA/VBS - Programmation

Marsh Posté le 20-04-2004 à 13:52:10    

Bonjour,
J'ai plusieurs feuilles de calcul qui ont la même forme mais avec des nombres différents ... Je voudrais faire une feuille de synthèse contenant la somme de ces feuilles de calcul.
Par avance merci

Reply

Marsh Posté le 20-04-2004 à 13:52:10   

Reply

Marsh Posté le 21-04-2004 à 15:13:21    

o clique dans une cellule de ta feuille 'somme' disons 'A1'
o appuie sur '='
o clique sur l'onglet d'une autre feuille, genre Feuil1 pour en changer
o clique sur la cellule 'A1' de cette feuille
o appuie sur '+'
o clique sur l'onglet d'une autre feuille, genre Feuil2
o clique sur la cellule 'A1' de cette feuille
o appuie sur 'Entrée/Return'
 
Ooooh
=Feuil1!A1+Feuil2!A1
 
Je te laisse copier/coller la formule dans ta feuille 'Somme' et scripter en cas de Feuilles nombreuses et aux noms variables ...

Reply

Marsh Posté le 21-04-2004 à 16:25:47    

D'accord je te remercie  ... mais bon je savais déjà faire ca ... mais c'est vrai que c'est de ma faute car je n'avais pas préciser exactement ce que je voulais faire.
En fait je veux faire une macro pour que ce soit fait automatiquement. J'ai tenté ca (attention on essaye de pas se moquer parce que je débute le VBA  :D ):

Code :
  1. Sub ValeurA1()
  2.     Dim i, Sum As Integer
  3.     Worksheets("Feuil1" ).Range("A1:A5" ).Value = 1
  4.     Worksheets("Feuil2" ).Range("A1:A5" ).Value = 3
  5.     For i = 1 To 2
  6.     Sum = Worksheets("Feuili" ).Range("A1:A5" ).Value + Worksheets("Feuili" ).Range("A1:A5" ).Value
  7.     Worksheets("Feuil3" ).Range("A1:A5" ).Value = Sum
  8.     Next
  9. End Sub


 
2 problèmes :
- d'une part il semble que je ne puisse pas faire une somme en prenant en compte directement plusieurs cellules (parce que avec A1:A5 ca ne marche pas mais avec A1 seulement oui)
- d'autre part il ne semble pas que ma variable i dans Feuilli ne soit pas bien interprété
 
Tout autre suggestion est bien sur la bienvenue

Reply

Marsh Posté le 21-04-2004 à 17:26:21    

Essaye ça
 


Sub ValeurA1()  
 
 Worksheets("Feuil1" ).Range("A1:A5" ).Value = 1  
 Worksheets("Feuil2" ).Range("A1:A5" ).Value = 3  
 
 Worksheets("Feuil3" ).Range("A1:A5" ).FormulaR1C1 = "=Feuil1!RC+Feuil2!RC"
 
End Sub  


 
Pour ton problème d'indice i, normal qu'il ne l'interprète pas bien,
dans ta syntaxe "...Worksheets("Feuili" )..." comment veux tu qu'il sache quoi faire de tes i (tu en as deux) entre guillemets ?
La bonne syntaxe d'utilisation d'un indice aurait été dans ce cas "...Worksheets("Feuil" & i)..."
 
Mais tu dois pouvoir t'en passer avec ma formule
Seulement celle-ci marche dans ton contexte précis, mais probablement pas dans d'autres, à toi de voir.

Reply

Marsh Posté le 21-04-2004 à 19:00:45    

mirascheat a écrit :


Code :
  1. Dim i, Sum As Integer
  2.     For i = 1 To 2
  3.     Sum = Worksheets("Feuili" ).Range("A1:A5" ).Value + Worksheets("Feuili" ).Range("A1:A5" ).Value
  4.     Worksheets("Feuil3" ).Range("A1:A5" ).Value = Sum
  5.     Next
  6. End Sub


 

Pourquoi A1 et pas A1:A5? --> Sum est un entier, tu ne peux y affecter qu'une seule valeur (entière) unique. Pour y associer 5 valeurs, il faudrait un tableau ou bien manipuler des objets 'Range'.
Tu peux copier/coller un 'Range' d'une feuille à une autre mais pas (enfin je pense pas) copier/additionner blabla.range += blabla.range (avec la notation matricielle c'est peut-être possible mais c'est tellement ch.... à utiliser :D)

Reply

Marsh Posté le 22-04-2004 à 09:52:07    

@ tegu : je ne comprends pas très bien à quoi correspondent le "R1C1" dans

Code :
  1. FormulaR1C1

et les RC dans

Code :
  1. "=Feuil1!RC+Feuil2!RC"


Par avance merci

Reply

Marsh Posté le 22-04-2004 à 15:46:09    

J'ai une autre question (j'utilise le meme topic) :
Je voudrais selectionner une cellule en fonction de son nom ... Je détaille :
j'ai un tableau avec sur la première ligne un ensemble de nom (Pierre, Paul, Jacques ...) et sur la deuxième ligne un paramètre spécifique à chaque nom (5, 4, 9 ...)
j'ai une variable "name" qui pointe sur la personne courante et je voudrais récupérer la valeur du paramètre spécifique au nom courant.
j'ai essayé ca :

Code :
  1. Cells(name).Offset(1, 0).value


mais ca ne semble pas marcher.
 
Voilà j'espère que j'ai été clair et merci pour votre aide.

Reply

Marsh Posté le 23-04-2004 à 10:06:32    

FormulaR1C1 permet d'affecter une formule utilisant le référencement de cellules RC (ou LC en français).  
Tu travailles en mode A1 mais tu peux changer cela dans le menu Outils/Options/onglet général/case cocher "Style de référencement L1C1"
 
En mode A1 les cellules sont indexées à la façon de la bataille navale, en mode R1C1 elles le sont par leur numéro de ligne (row) et de colonne.
 
 
Pour le RC, il signifie "même ligne et même colonne que la cellule active"
Donc si je saisis en cellule D4 de la feuille 2 la formule R1C1 "=Feuil1!RC" cela veut dire "sur la feuille 1, en D4".
 
Je regarde ton autre question


Message édité par tegu le 23-04-2004 à 10:07:51
Reply

Marsh Posté le 23-04-2004 à 10:22:45    

Pour ta question sur les noms et paramètres associés
 
Quand tu dis que ta variable name "pointe" sur la personne courante, que contient elle comme valeur ?
Le nom de la personne ? Les coordonnées de la cellule où le nom est inscrit ?
 
".Cells" attend deux paramètres: les numéros de ligne et de colonne de la cellule à traiter
Je ne crois pas qu'on puisse lui passer un nom de cellule/plage.
 
Donc si name contient les coordonnées de la cellule sous forme "A1" ou son nom de plage Excel, alors il faut utiliser ".Range(name)".
Si name contient le nom de la personne, il faut t'orienter vers la fonction de l'interface Excel (pas besoin de VBA) RECHERCHEH(...)
 

Reply

Sujets relatifs:

Leave a Replay

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