Bonjour,

Je viens glaner quelques informations qui me font cruellement défaut.
J'ai commencé mon premier projet Java professionnel qui consiste en un logiciel de Statistiques alimenté par des BDD et des fichiers Excel.
J'ai choisi ce langage du fait de la mixité PC / Mac, et j'avais tellement de mal à faire évoluer graphiquement mon logiciel au fur et à mesure des ajouts de fonctionnalités que j'ai recommencé en utilisant JavaFX.

J'ai crée une page en particulier qui fonctionne bien, qui prend les valeurs contenues dans des combo, et passe à travers une série de conditions afin de générer un graphique à partir de 3 tableaux Excel.
Ceci dit, je me suis rendu compte au fur et à mesure en écrivant les actions de ce bouton, qu'il exécutait à lui seul 300 lignes de code, et presque autant de conditions, sans jamais faire appel à une seule autre classe. Cela m'a un peu semblé contraire à tout ce que j'ai appris sur le langage Java, et sur le développement Orienté Objet en général.

J'ai donc essayé, avec beaucoup de mal, de définir mes objets, de créer les classes correspondantes et de leur attribuer des actions bien spécifiques, seulement au stade où j'en suis, ma page ne compile plus, et bien que le problème me semble être en vérité ma créativité et mon imagination, j'ai du mal à faire le lien entre les différentes classes.

Voici comment j'ai, naturellement, crée ma page ainsi que ses fonctionnalités :

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
 
public class StatistiquesSI implements Initializable {
 
    // Instances de classes
    Strings strings = new Strings();
 
    // Instances des objets FXML
    @FXML
    private JFXHamburger hamburger;
    @FXML
    private JFXDrawer drawer;
    @FXML
    private JFXComboBox comboCentre;
    @FXML
    private JFXComboBox comboPeriode;
    @FXML
    private JFXComboBox comboIndic;
    @FXML
    private JFXComboBox comboYear;
    @FXML
    private PieChart roundGraph;
    @FXML
    private JFXButton generateButton;
 
    // Variables de classe
    String fileNameA = "";
    String fileNameB = "";
    String fileNameC = "";
    int selectedSheet = 0;
    String selectedColumn = "";
    int selectedRow = 0;
    int selectedRow2 = 0;
    int selectedRow3 = 0;
    int selectedRow4 = 0;
    int selectedRow5 = 0;
    int selectedRow6 = 0;
    Cell cell = null;
    Cell cell2 = null;
    Cell cell3 = null;
    Cell cell4 = null;
    Cell cell5 = null;
    Cell cell6 = null;
    double from1 = 0;
    double from2 = 0;
    double from3 = 0;
    double from4 = 0;
    double from5 = 0;
    double from6 = 0;
    boolean withGraphic = false;
    ObservableList<PieChart.Data> pieChartData;
 
// ...
 
        // COMBOBOX
        comboYear.setItems(strings.yearList);
        comboCentre.setItems(strings.centerList);
        comboIndic.setItems(strings.indicList);
        comboPeriode.setItems(strings.periodList);
 
// GENERATE BUTTON
        generateButton.addEventHandler(MouseEvent.MOUSE_CLICKED, (e) -> {
 
            // RECUPERATION DES ITEMS DANS COMBO
            int compareYear = (int) comboYear.getValue();
            if (compareYear == 2017) {
                fileNameA = "P:/PROVINCE et statistiques FASD/Namur 2017.xls";
                fileNameB = "P:/PROVINCE et statistiques FASD/Données Namur 2017.xls";
                fileNameC = "P:/PROVINCE et statistiques FASD/Suivi pers. CJB Namur 2017.xls";
            } else if (compareYear == 2016){
                fileNameA = "P:/PROVINCE et statistiques FASD/Namur 2016.xls";
                fileNameB = "P:/PROVINCE et statistiques FASD/Données Namur 2016.xls";
                fileNameC = "P:/PROVINCE et statistiques FASD/Suivi pers. CJB Namur 2016.xls";
            }else{
                System.out.println("Année introuvable");
            }
            String compareCentre = comboCentre.getValue().toString();
            if (compareCentre == "Global") {
                selectedSheet = 5;
            } else if (compareCentre == "Namur") {
                selectedSheet = 4;
            } else if (compareCentre == "Philippeville") {
                selectedSheet = 0;
            } else if (compareCentre == "Ciney") {
                selectedSheet = 1;
            } else if (compareCentre == "Gedinne") {
                selectedSheet = 2;
            } else if (compareCentre == "Eghezée") {
                selectedSheet = 3;
            } else {
                System.out.println("Le centre n'existe pas");
            }
            String comparePeriode = comboPeriode.getValue().toString();
            if (comparePeriode == "Janvier") {
                selectedColumn = "D";
            } else if (comparePeriode == "Février") {
                selectedColumn = "E";
            } else {
                System.out.println("Période pas encore implementée");
            }
            String compareIndic = comboIndic.getValue().toString();
            if (compareIndic == "Total jours payés") {
                selectedRow = 6;
                selectedRow2 = 7;
                selectedRow3 = 8;
                selectedRow4 = 9;
                withGraphic = true;
            } else if (compareIndic == "Total jours prestés Infirmières") {
                selectedRow = 11;
                selectedRow2 = 12;
                selectedRow3 = 13;
                withGraphic = false;
            } else {
                System.out.println("Indicateur pas encore implementé");
            }
 
            try {
                Workbook wb = WorkbookFactory.create(new File(fileNameA));
                Workbook wb2 = WorkbookFactory.create(new File(fileNameB));
                Workbook wb3 = WorkbookFactory.create(new File(fileNameC));
                HSSFFormulaEvaluator evaluator = (HSSFFormulaEvaluator) wb.getCreationHelper().createFormulaEvaluator();
                HSSFFormulaEvaluator evaluator2 = (HSSFFormulaEvaluator) wb2.getCreationHelper().createFormulaEvaluator();
                HSSFFormulaEvaluator evaluator3 = (HSSFFormulaEvaluator) wb3.getCreationHelper().createFormulaEvaluator();
                String[] workbookNames = {"Namur 2017.xls", "Données Namur 2017.xls", "Suivi pers. CJB Namur 2017.xls"};
                HSSFFormulaEvaluator[] evaluators = {evaluator, evaluator2, evaluator3};
                HSSFFormulaEvaluator.setupEnvironment(workbookNames, evaluators);
                Sheet sheet = wb.getSheetAt(selectedSheet);
                CellReference cellReference = new CellReference(selectedColumn + selectedRow);
                Row row = sheet.getRow(cellReference.getRow());
                cell = row.getCell(cellReference.getCol());
                if (selectedRow2 != 0) {
                    CellReference cellReference2 = new CellReference(selectedColumn + selectedRow2);
                    Row row2 = sheet.getRow(cellReference2.getRow());
                    cell2 = row2.getCell(cellReference2.getCol());
                }
                if (selectedRow3 != 0) {
                    CellReference cellReference3 = new CellReference(selectedColumn + selectedRow3);
                    Row row3 = sheet.getRow(cellReference3.getRow());
                    cell3 = row3.getCell(cellReference3.getCol());
                }
                if (selectedRow4 != 0) {
                    CellReference cellReference4 = new CellReference(selectedColumn + selectedRow4);
                    Row row4 = sheet.getRow(cellReference4.getRow());
                    cell4 = row4.getCell(cellReference4.getCol());
                }
                if (selectedRow5 != 0) {
                    CellReference cellReference5 = new CellReference(selectedColumn + selectedRow5);
                    Row row5 = sheet.getRow(cellReference5.getRow());
                    cell5 = row5.getCell(cellReference5.getCol());
                }
                if (selectedRow6 != 0) {
                    CellReference cellReference6 = new CellReference(selectedColumn + selectedRow6);
                    Row row6 = sheet.getRow(cellReference6.getRow());
                    cell6 = row6.getCell(cellReference6.getCol());
                }
                if (cell != null) {
                    from1 = cell.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell2 != null) {
                    from2 = cell2.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell2)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell2.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell2.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell2.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell2.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell3 != null) {
                    from3 = cell3.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell3)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell3.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell3.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell3.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell3.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell4 != null) {
                    from4 = cell4.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell4)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell4.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell4.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell4.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell4.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell5 != null) {
                    from5 = cell5.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell5)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell5.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell5.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell5.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell5.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell6 != null) {
                    from6 = cell6.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell6)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell6.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell6.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell6.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell6.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                // MISE EN FROMAGE
                if (withGraphic == true) {
                    pieChartData = FXCollections.observableArrayList(
                            new PieChart.Data("Test 2", from2),
                            new PieChart.Data("Test 3", from3),
                            new PieChart.Data("Test 3", from4),
                            new PieChart.Data("Test 3", from5)
                    );
                    roundGraph.setData(pieChartData);
                    roundGraph.setStartAngle(90);
                }else{
                    pieChartData.clear();
                }
 
                // VIDAGE MEMOIRE
                cell = null;
                cell2 = null;
                cell3 = null;
                cell4 = null;
                cell5 = null;
                cell6 = null;
                selectedRow = 0;
                selectedRow2 = 0;
                selectedRow3 = 0;
                selectedRow4 = 0;
                selectedRow5 = 0;
                selectedRow6 = 0;
                wb.close();
                wb2.close();
                wb3.close();
 
            } catch (IOException e1) {
                e1.printStackTrace();
            } catch (InvalidFormatException e1) {
                e1.printStackTrace();
            }
        });
    }
Je n'ai mis que la partie du code gérée par le bouton generateButton, mais j'avoue que moi-même je m'y perds un peu, je mets plusieurs secondes pour retrouver la ligne dont j'ai besoin, et surtout j'ai de plus en plus de mal à ajouter des fonctionnalités de tri par exemple, sans multiplier les conditions, sans compter que ma façon de faire me bloquera sans doute à un moment donné.

J'ai donc décider d'arrêter d'avancer dans le projet, et de le rendre plus propre, car étant mon premier projet, c'est ici que je dois commencer les bonnes habitudes si je ne veux pas que tous mes futurs projets se retrouvent aussi sales à chaque fois.
J'ai alors commencé avec le contenu de la comboYear, imaginant que les années étaient donc des objets. J'ai crée la classe Year, et essayé de basculer tout le code en rapport avec les années. Voici le résultat :

CLASSE YEAR
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
package com;
 
public class Year {
 
    private int year;
    public String filePathA;
    public String filePathB;
    public String filePathC;
    public String fileNameA;
    public String fileNameB;
    public String fileNameC;
 
    public Year (){
        year = 0;
    }
    public Year (int year){
        this.year = year;
    }
 
    public int getYear(){
        return year;
    }
 
    public void setYear(int year){
        this.year = year;
    }
 
    public void toPath(){
        if (year == 2017){
            filePathA = "P:/PROVINCE et statistiques FASD/";
            fileNameA = "Namur 2017.xls";
            filePathB = "P:/PROVINCE et statistiques FASD/";
            fileNameB = "Données Namur 2017.xls";
            filePathC = "P:/PROVINCE et statistiques FASD/";
            fileNameC = "Suivi pers. CJB Namur 2017.xls";
        }
    }
 
    public String getFilePathA(){
        return filePathA;
    }
    public String getFileNameA(){
        return fileNameA;
    }
}
Et voici le code du boutton maintenant, qui n'est qu'un peu raccourci mais ce serait un bon début :

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
 
public class StatistiquesSI implements Initializable {
 
    // Instances de classes
    Strings strings = new Strings();
 
    // Instances des objets fxml
    @FXML
    private JFXHamburger hamburger;
    @FXML
    private JFXDrawer drawer;
    @FXML
    private JFXComboBox comboCentre;
    @FXML
    private JFXComboBox comboPeriode;
    @FXML
    private JFXComboBox comboIndic;
    @FXML
    private JFXComboBox comboYear;
    @FXML
    private PieChart roundGraph;
    @FXML
    private JFXButton generateButton;
 
    // Variables de classe
    int selectedSheet = 0;
    String selectedColumn = "";
    int selectedRow = 0;
    int selectedRow2 = 0;
    int selectedRow3 = 0;
    int selectedRow4 = 0;
    int selectedRow5 = 0;
    int selectedRow6 = 0;
    Cell cell = null;
    Cell cell2 = null;
    Cell cell3 = null;
    Cell cell4 = null;
    Cell cell5 = null;
    Cell cell6 = null;
    double from1 = 0;
    double from2 = 0;
    double from3 = 0;
    double from4 = 0;
    double from5 = 0;
    double from6 = 0;
    boolean withGraphic = false;
    ObservableList<PieChart.Data> pieChartData;
 
// ...
 
      // COMBOBOX
        comboYear.setItems(strings.yearList);
        comboCentre.setItems(strings.centerList);
        comboIndic.setItems(strings.indicList);
        comboPeriode.setItems(strings.periodList);
 
        // GENERATE BUTTON
        generateButton.addEventHandler(MouseEvent.MOUSE_CLICKED, (e) -> {
 
            // RECUPERATION DES ITEMS DANS COMBO
            Year year = new Year((Integer)comboYear.getValue());
            year.toPath();
 
            String compareCentre = comboCentre.getValue().toString();
            if (compareCentre == "Global") {
                selectedSheet = 5;
            } else if (compareCentre == "Namur") {
                selectedSheet = 4;
            } else if (compareCentre == "Philippeville") {
                selectedSheet = 0;
            } else if (compareCentre == "Ciney") {
                selectedSheet = 1;
            } else if (compareCentre == "Gedinne") {
                selectedSheet = 2;
            } else if (compareCentre == "Eghezée") {
                selectedSheet = 3;
            } else {
                System.out.println("Le centre n'existe pas");
            }
            String comparePeriode = comboPeriode.getValue().toString();
            if (comparePeriode == "Janvier") {
                selectedColumn = "D";
            } else if (comparePeriode == "Février") {
                selectedColumn = "E";
            } else {
                System.out.println("Période pas encore implementée");
            }
            String compareIndic = comboIndic.getValue().toString();
            if (compareIndic == "Total jours payés") {
                selectedRow = 6;
                selectedRow2 = 7;
                selectedRow3 = 8;
                selectedRow4 = 9;
                withGraphic = true;
            } else if (compareIndic == "Total jours prestés Infirmières") {
                selectedRow = 11;
                selectedRow2 = 12;
                selectedRow3 = 13;
                withGraphic = false;
            } else {
                System.out.println("Indicateur pas encore implementé");
            }
 
            try {
                Workbook wb = WorkbookFactory.create(new File(year.filePathA+year.fileNameA);
                Workbook wb2 = WorkbookFactory.create(new File(year.filePathB+year.fileNameB));
                Workbook wb3 = WorkbookFactory.create(new File(year.filePathC+year.fileNameC));
                HSSFFormulaEvaluator evaluator = (HSSFFormulaEvaluator) wb.getCreationHelper().createFormulaEvaluator();
                HSSFFormulaEvaluator evaluator2 = (HSSFFormulaEvaluator) wb2.getCreationHelper().createFormulaEvaluator();
                HSSFFormulaEvaluator evaluator3 = (HSSFFormulaEvaluator) wb3.getCreationHelper().createFormulaEvaluator();
                String[] workbookNames = {year.fileNameA, year.fileNameB, year.fileNameC};
                HSSFFormulaEvaluator[] evaluators = {evaluator, evaluator2, evaluator3};
                HSSFFormulaEvaluator.setupEnvironment(workbookNames, evaluators);
                Sheet sheet = wb.getSheetAt(selectedSheet);
                CellReference cellReference = new CellReference(selectedColumn + selectedRow);
                Row row = sheet.getRow(cellReference.getRow());
                cell = row.getCell(cellReference.getCol());
                if (selectedRow2 != 0) {
                    CellReference cellReference2 = new CellReference(selectedColumn + selectedRow2);
                    Row row2 = sheet.getRow(cellReference2.getRow());
                    cell2 = row2.getCell(cellReference2.getCol());
                }
                if (selectedRow3 != 0) {
                    CellReference cellReference3 = new CellReference(selectedColumn + selectedRow3);
                    Row row3 = sheet.getRow(cellReference3.getRow());
                    cell3 = row3.getCell(cellReference3.getCol());
                }
                if (selectedRow4 != 0) {
                    CellReference cellReference4 = new CellReference(selectedColumn + selectedRow4);
                    Row row4 = sheet.getRow(cellReference4.getRow());
                    cell4 = row4.getCell(cellReference4.getCol());
                }
                if (selectedRow5 != 0) {
                    CellReference cellReference5 = new CellReference(selectedColumn + selectedRow5);
                    Row row5 = sheet.getRow(cellReference5.getRow());
                    cell5 = row5.getCell(cellReference5.getCol());
                }
                if (selectedRow6 != 0) {
                    CellReference cellReference6 = new CellReference(selectedColumn + selectedRow6);
                    Row row6 = sheet.getRow(cellReference6.getRow());
                    cell6 = row6.getCell(cellReference6.getCol());
                }
                if (cell != null) {
                    from1 = cell.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell2 != null) {
                    from2 = cell2.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell2)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell2.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell2.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell2.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell2.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell3 != null) {
                    from3 = cell3.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell3)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell3.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell3.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell3.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell3.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell4 != null) {
                    from4 = cell4.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell4)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell4.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell4.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell4.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell4.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell5 != null) {
                    from5 = cell5.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell5)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell5.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell5.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell5.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell5.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                if (cell6 != null) {
                    from6 = cell6.getNumericCellValue();
                    switch (evaluator.evaluateFormulaCell(cell6)) {
                        case Cell.CELL_TYPE_BOOLEAN:
                            System.out.println(cell6.getBooleanCellValue());
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            System.out.println(cell6.getNumericCellValue());
                            break;
                        case Cell.CELL_TYPE_STRING:
                            System.out.println(cell6.getStringCellValue());
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            break;
                        case Cell.CELL_TYPE_ERROR:
                            System.out.println(cell6.getErrorCellValue());
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                    }
                }
                // MISE EN FROMAGE
                if (withGraphic == true) {
                    pieChartData = FXCollections.observableArrayList(
                            new PieChart.Data("Test 2", from2),
                            new PieChart.Data("Test 3", from3),
                            new PieChart.Data("Test 3", from4),
                            new PieChart.Data("Test 3", from5)
                    );
                    roundGraph.setData(pieChartData);
                    roundGraph.setStartAngle(90);
                }else{
                    pieChartData.clear();
                }
 
                // VIDAGE MEMOIRE
                cell = null;
                cell2 = null;
                cell3 = null;
                cell4 = null;
                cell5 = null;
                cell6 = null;
                selectedRow = 0;
                selectedRow2 = 0;
                selectedRow3 = 0;
                selectedRow4 = 0;
                selectedRow5 = 0;
                selectedRow6 = 0;
                wb.close();
                wb2.close();
                wb3.close();
 
            } catch (IOException e1) {
                e1.printStackTrace();
            } catch (InvalidFormatException e1) {
                e1.printStackTrace();
            }
        });
    }
 
}
Evidemment ça ne compile pas car les chemins de fichiers dans les Workbooks sont vides, et je n'arrive pas à les récupérer à partir de la nouvelle classe Year. J'ai essayé en créant des getters, ou sans, mais ça n'a pas l'air d'être la solution.

Si quelqu'un pouvait m'éclairer, ainsi qu'éventuellement me donner des conseils pour peut-être raccourcir mes instructions, ou comment faire plus facilement cerner mes objets, car je me rends bien compte que mon code est inutilement lourd, par exemple ma façon de tester si les cellules contiennent des données à mettre dans le graphiques me semble vraiment mauvaise, mais j'ai vraiment du mal à le corriger.

D'avance un tout grand merci !