Bonjour à tous,
J'ai pour projet de lancer un site de data-journalisme (suite à une formation traditionnelle en journalisme presse écrite web). Je débute dans le développement informatique, un peu tardivement mais bourré de motivation.
J'ai produit un tableau représentant les différents gouvernements au pouvoir depuis 1965. Chaque colonne représente un pays, chaque ligne une année, et chaque case représente une sensibilité politique, exprimée en couleur de fond (onglet Feuille1). La saisie n'est pas terminée (50% environ), ceci dit j'explore les différentes possibilités d'exploiter le tableau.
J'ai demandé à mon frère qui touche un peu à Visual Basic de fournir un code pour que, sur chaque ligne, les couleurs soient regroupées. Il y est parvenu assez rapidement grâce au code ci-dessous, le résultat est dans l'onglet Test.
Enfin, j'ai copié le résultat et collé en inversant abscisse et ordonnée, afin d'obtenir une esquisse de graphique (aires empilées) allant de gauche (1965) à droite (2015), visible à l'onglet Feuil2 (en zoom à 25%, l'ensemble tient sur un écran ; ça fait un peu penser aux stats de pop dans Age of Empire, mais là c'est en vrai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 Sub CodeCouleur() 'Ca sélectionne la feuille ou la macro marche, histoire de ne pas faire de bétise Application.Worksheets("Copie de Feuille 1").Activate 'For = pour faire une boucle For i = 57 To 66 Dim a As Long Dim b As Long 'prends les codes couleurs a = Cells(i, 3).Interior.Color Cells(i, 2).Value = a b = Cells(i, 9).Interior.Color Cells(i, 7).Value = b 'recopie les couleurs dans des cases en dessous, histoire de vérifier Cells(i + 13, 2).Interior.Color = a Cells(i + 13, 7).Interior.Color = b Next i End Sub Sub tri() 'Ca sélectionne la feuille ou la macro marche, histoire de ne pas faire de bétise Application.Worksheets("Copie de Feuille 1").Activate 'Boucle For sur les lignes For i = 3 To 53 'Valeur pour la colonne qui va augmenter en fonction des couleurs trouvées a = 3 'Boucle For sur les codes couleurs 1ere colonne For k = 57 To 66 'Boucle For sur les colonnes For j = 3 To 144 'test = est-ce que c'est la bonne couleur ? If Cells(i, j).Interior.Color = Cells(k, 3).Interior.Color Then 'si oui = on rentre la donnée dans la nouvelle feuille Worksheets("test").Cells(i, a).Value = Cells(2, j).Value Worksheets("test").Cells(i, a).Interior.Color = Cells(i, j).Interior.Color a = a + 1 End If Next j Next k 'Boucle For sur les codes couleurs 2eme colonne For k = 57 To 66 'Boucle For sur les colonnes For j = 3 To 144 'test = est-ce que c'est la bonne couleur ? If Cells(i, j).Interior.Color = Cells(k, 9).Interior.Color Then 'si oui = on rentre la donnée dans la nouvelle feuille Worksheets("test").Cells(i, a).Value = Cells(2, j).Value Worksheets("test").Cells(i, a).Interior.Color = Cells(i, j).Interior.Color a = a + 1 End If Next j Next k Next i End Sub). Le tout contient des erreurs, essentiellement issues de la saisie initiale, mais c'est plutôt prometteur.
C'est là que je me tourne vers votre expérience. De son propre aveu, mon frère m'a fait un code un peu alambiqué qu'on pourrait rendre plus simple. Avez-vous une piste pour passer du tableau initial au résultat en Feuil2 par un autre chemin ?
Plus largement, je compte exploiter les données pour les présenter de différentes manières. Je pense à produire des graphiques (camembert par année, aires empilées...) mais je suis sûr que certaines macros peuvent faire un joli boulot pour un résultat auquel je ne pense pas encore. Un conseil sur ce qui serait intéressant d'appliquer ici ?
Enfin, l'objectif à terme est de le publier sur un site dédié et ouvert à tous, pour un rendu esthétique, voire interactif. On me conseille de passer par un logiciel de gestion de base de données, qui fournirait plus de possibilités qu'Excel - BVA. Bonne idée, ou Excel peut faire le job ?
D'avance merci et à bientôt
JJ
Partager