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

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Consolidation Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Consolidation Excel

n°2818332
niclus5457
Posté le 07-11-2008 à 10:18:19  profilanswer
 

Bonjour,  
 
J'ai un problème sur Excel......Je réalise tous les mois des classeurs Excel contenant un nombre variable de feuilles (de ±20 a....200 voir +)  
A chaque fin de mois je crée une feuille que je nomme CONSO pour consolider toutes les données de mes feuilles.  
Je récupere donc sur chaque feuille la meme plage de donnée sauf que lorsque je me retrouve avec 200feuilles a cliquer pour les inclure dans la fonction consolidation ça me prend un temps fou sans compter que parfois j'en oublie.  
Je cherche donc a creer une macro ou autre qui pourrait prendre en compte le nombre de feuille (variable tous les mois) et consolider la mm plage de donnée de toutes ces feuilles automatiquement........AIDEZ MOI !!!!!  
Merci d'avance

mood
Publicité
Posté le 07-11-2008 à 10:18:19  profilanswer
 

n°2818356
Ptit loup
Quand c'est flou, y'a un loup
Posté le 07-11-2008 à 11:29:48  profilanswer
 

Quand tu dis "consolidation"... tu fais quoi sur cette feuille... une somme des cellules de chacun des autres feuilles par exemple ?
 
En fait, il va te falloir surtout connaître le nb de feuille...

'Récup du nombre de feuilles
NombreDeFeuilles = ActiveWorkbook.Sheets.Count


Puis ensuite, le mieux, c'est de balayer chaque feuille pour récupérer ce que tu veux...
 

For i = 1 To NombreDeFeuilles
    Sheets(i).Select
...
Next i


 
Après... tu peux aussi générer une variable qui va cumuler "en temps réel" ce qu'il y a sur tes autres feuilles
-> tu crées une chaine qui vient faire au final : sheet(1).cell(x,y).value + sheet(2).cell(x,y).value... + sheet(NombreDeFeuilles -1).cell(x,y).value, et tu affectes ensuite ça comme formule de ta cellule de la feuille conso.
(j'ai mis -1 parce qu'on veut probablement prendre la feuille "CONSO" )

n°2818420
niclus5457
Posté le 07-11-2008 à 15:40:50  profilanswer
 

En fait "consolidation" est une fonction d'Excel tu la trouve dans donnée/consolidation et je consolide une plage de données fixe sur toutes mes feuilles pour recuperer les valeurs sauf que cette fonction necessite de clique sur chacune de mes feuilles et valider la selection.
Le prob et que je cherche une fonction qui me trouve le nombre de feuille, et qui lance ou realise l'equivalent de la fonction consolidation....je sais pas si je suis assez clair.....en + j'y connais quasi rien en VBA

n°2818425
Ptit loup
Quand c'est flou, y'a un loup
Posté le 07-11-2008 à 16:14:24  profilanswer
 

Ta consolidation n'est qu'un moyen pour simplifier ce que tu peux faire sur plusieurs champs...
 
Et dans ta consolidation, tu dis aussi si tu fais une somme, une moyenne, un écart type, etc...
Je suppose que ta consolidation est plutôt une moyenne ??? tu fais ça sur toute une plage de cellules ??
 
Donne un peu plus de précisions.
 
Côté macro, il est assez facile d'avoir le nb de feuilles (comme je te l'indique plus haut).
 
Maintenant, pour la fonction de consolidation "pure"... voilà le code VBA (un semble enregistrement de macro te donne ça !)
 
Selection.Consolidate Sources:=Array("[Classeur1]Feuil1!R1C1:R1C4", _
        "[Classeur1]Feuil2!R1C1:R1C4" ), Function:=xlSum, TopRow:=False, LeftColumn :=False, CreateLinks:=False
 
Voilà... ceci fait la somme des cellules 1 à 1 de mes plages A1:D1 sur 2 feuilles...
en modifiant le param Function de xlSum à autre chose, tu choisira le type de consolidation...
 
À toi de jouer !

n°2818429
niclus5457
Posté le 07-11-2008 à 16:23:18  profilanswer
 

Ca y est j'ai la soluce........ pour info et pour ceux qui comprennent (moi perso je pige pas tout mais ça marche)
Voila le code VBA à taper pour réaliser une macro qui vous fera une consolidation sans prob et a la vitesse grand V
 
Sub consolider()
Dim Arr(), I As Byte, sh As Worksheet
I = 1
  ReDim Arr(1 To Sheets.Count - 1)
  For Each sh In Sheets
  If sh.Name <> "conso" Then
    Arr(I) = sh.Name & "!R12C1:R52C5" 'correspond à la plage A12:E52
    I = I + 1
    End If
Next sh
  Sheets("conso" ).[A1].Consolidate Sources:=Arr(), Function:=xlCount, TopRow:=True, LeftColumn _
        :=False, CreateLinks:=True
End Sub
 
A + tt le monde pour de nouveaux probleme a resoudre


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Consolidation Excel

 

Sujets relatifs
MACRO EXCEL impression classeur entier / feuilles précisesAu secours, problème avec excel 2007
[Excel] Vérouiller feuillemise en forme conditionnelle sous excel
"delete" or "delete row" dans excel ?[Excel] Cherche fonction
Reporter valeurs différentes d'un tableau sur un autre sous ExcelExcel rajoute des " dans mon csv
[Excel] Importer des données automatiquementExcel-adapter taille du classeur à l'écran
Plus de sujets relatifs à : Consolidation Excel


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