Compilation de données avec mise à jour automatique

ougogo

XLDnaute Nouveau
Bonjour,

Je cherche actuellement à tirer des informations d'une feuille de données ("Données") pour avoir des statistiques ainsi que des récapitulatifs de données.

Par exemple :
  • Liste des champs selon les années avec leur surface
  • Surface de légumineuses pour 2015/2016
  • Nombre de PBC/GBC/BR/BTE pour 2015/2016
  • Quantité totale de M.S. par an, par champ, en légumineuse, en graminée, en FS/ENR/ENS
  • Graphique de la proportion de légumineuse/graminées

Bref, j'aimerais pouvoir avoir une feuille (avec les éléments listés ci-dessus) qui s'actualise un fois le patron réalisé.
Par exemple si je rajoute une culture en 2015, j'aimerais que le tout s'actualise (liste des champs, surface, etc.), de même si je met une nouvelle année comme 2017.

Je vous joint le dit fichier en espérant qu'une personne aura une idée de comment faire....
Le but étant que les utilisateurs entrent leurs données et que le reste s'actualise, ou alors avec de légères modifications.

Merci pour le temps que vous me consacrerez :)

Hugo.
 

Pièces jointes

  • Bilan-fourrages-CLIENT2.xlsx
    96.8 KB · Affichages: 41

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Compilation de données avec mise à jour automatique

Bonsoir ougogo et bienvebue sur XLD :),


Je vous propose un essai basé sur la création d'une base de données à partir du tableau de la feuille "Données".
Cette base pourra ensuite servir à créer des Tableaux Croisés dynamiques (TCD) selon ce que vous désirez afficher, regrouper, filtrer comme informations. Un exemple figure sur la feuille "TCD1".

Le bouton "Actualiser" permet de recréer la base de données et les TCD qui ont cette base pour source.

Le code se trouve dans le module de code "module1"

VB:
Sub CreerBase()

Dim nlig&, ncoupe&, i&, j&, k&, n&, commun, coupe, s


  With Feuil1
    'nbr de lignes
    nlig = .Cells(.Rows.Count, "a").End(xlUp).Row
    If nlig = 2 Then
      MsgBox "Aucune donnée sur la feuille " & .Name & " -> ECHEC !", vbCritical
      End: End If
      
    'nbr de coupe
    ncoupe = Application.WorksheetFunction.CountIf(.Rows(1), "Coupe *")
    If ncoupe = 0 Then
      MsgBox "Aucune coupe sur la feuille " & .Name & " -> ECHEC !", vbCritical
      End: End If
    
    Application.ScreenUpdating = False
    With Feuil2
      'effacer ancienne DataBase
      .Range("a2:j" & .Rows.Count).ClearContents
      
      'Recréer la base
      n = 1
      For i = 3 To nlig
      ' valeurs communes à une ligne de champ
      commun = Feuil1.Cells(i, "a").Resize(, 4).Value
        For k = 1 To ncoupe
          ' valeur pour la coupe n° k
          coupe = Feuil1.Cells(i, "e").Offset(, 5 * (k - 1)).Resize(, 5).Value
          ' concatenation ddes valeurs de la coupe n° k est vide
          s = "": For j = 1 To 5: s = s & coupe(1, j): Next j: s = Trim(s)
          ' si la ligne de la coupe n° k est vide, on ne rajoute pas de ligne à DataBase
          If s <> "" Then
            n = n + 1
            .Cells(n, 1).Resize(, 4) = commun
            .Cells(n, "e") = k
            .Cells(n, "f").Resize(, 5) = coupe
          End If
        Next k
      Next i
    End With
  End With
  MsgBox "Actualisation terminée :-)"
End Sub


Sub Actualiser()
  CreerBase
  ActiveWorkbook.RefreshAll
End Sub
 

Pièces jointes

  • ougogo-Bilan-fourrages-CLIENT2.xlsm
    137.5 KB · Affichages: 29

ougogo

XLDnaute Nouveau
Re : Compilation de données avec mise à jour automatique

Simplement wow .....
C'est exactement ce que je souhaitais ! Un brin de mise en page et c'est nickel !

Question :
1- Si j'avais directement fait une colonne avec le numéro de coupe, la partie code n'aurait pas été nécessaire si ?
2- Comment modifie-t-on le style du TCD ? Couleur, etc. Ainsi que les nouvelles années, etc ? Afin que les nouvelles lignes adoptent bien le style (pas de modification manuelle).
2- Le principe de l'actualisation des TCD est-il applicable à des graphiques, diagrammes, etc ?

Merci beaucoup encore ! Vous n'imaginez pas comme cela va m'être utile !

Hugo.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Compilation de données avec mise à jour automatique

Bonsoir ougogo,

(...) Question :
1- Si j'avais directement fait une colonne avec le numéro de coupe, la partie code n'aurait pas été nécessaire si ?
2- Comment modifie-t-on le style du TCD ? Couleur, etc. Ainsi que les nouvelles années, etc ? Afin que les nouvelles lignes adoptent bien le style (pas de modification manuelle).
3- Le principe de l'actualisation des TCD est-il applicable à des graphiques, diagrammes, etc ? (...)

1) Sans doute pas mais dans ce cas, pour chaque ligne de coupe, il faudra saisir "les données fixes" : année, n° du champ, surface, Type (en fait, adopter directement la structure de la DataBase). Noter que dans ce cas, si les données sources du TCD sont modifiées, il ne faudra pas oublier de réactualiser (à la mano) les TCD qui dépendent de cette source (à moins que l'option de réactualisation automatique des TCD ne soit présente dans Excel 2013 :confused:)


2) Pour modifier le style, par exemple les blocs de lignes par année, j'ai fait cela à la mimine (aidé par la gestion native des TCD par Excel 2010):
  • dans le TCD, passer le pointeur de la souris au dessus de la cellule contenant + 2015 (vers la gauche de la cellule B9)
  • quand le pointeur se transforme en flèche noire, cliquer -> toutes les lignes du TCD correspondant à 2015) sont sélectionnées
  • choisir la couleur de fond et police désirée (par exemple via le ruban accueil)
  • dans le TCD, passer le pointeur de la souris au dessus de la cellule contenant Total 2015 (vers la gauche de la cellule B12)
  • quand le pointeur se transforme en flèche noire, cliquer -> toutes les lignes du TCD correspondant à Total 2015 sont sélectionnées
  • choisir la couleur de police désirée et ses caractéristiques (gras & italique)
  • ...etc
nota: dans les options du TCD, l'ajustement automatique des largeurs de colonnes lors de l'actualisation a été désactivée et l'option conserver la mise en forme des cellules lors de l'actualisation a été cochée.

Je ne connais pas les possibilités de mise en forme des TCD d'Excel 2013 car j'utilise la version 2010.

rem: le jour où on ajoute pour la première fois l'année 2017, il faudra sans doute rajouter la mise en forme pour 2017 dans les TCD.


3) l'actualisation des graphiques en fonction de la taille des données sources est possible (faire une recherche sur le forum).
On doit aussi pouvoir utiliser des graphiques croisés dynamiques qui se mettront probablement également à jour quand on clique sur le bouton Actualiser (pas vérifié :eek:)
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Compilation de données avec mise à jour automatique

Bonjour

Pour compléter les remarques de Mapomme, que je salue :), concernant Excel 2013 :


  • pas d'actualisation automatique dans 2013 (heureusement)
  • pas de différence sur les options de mise en forme (ou minimes)
  • les GCD suivent bien les TCD lors de l'actualisation

On pourrait mettre la BD sous forme de tableau : cela permettrait de fonder le TCD sur le tableau et d'éviter de devoir filtrer les vides.
La macro viderais puis remplirait les lignes du tableau...
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 222
Membres
103 158
dernier inscrit
laufin