@Override
    public AbstractTableModel getTableModel() {
        return new AbstractTableModel() {
            @Override
            public String getColumnName(int col) {
                return columnsNames[col];
            }

            @Override
            public int getRowCount() {
                return documents.size();
            }

            @Override
            public int getColumnCount() {
                return columnsNames.length;
            }

            @Override
            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return true;
            }

            @Override
            public Object getValueAt(int rowIndex, int columnIndex) {
                DocumentAdministratif doc = documents.get(rowIndex);
                switch (columnIndex) {

                    case 0:
                        TypeDocument type = TypeDocumentDao.getTypeDocumentAdministratif(doc.getIdtype());
                        return type != null ? type.getLibelledocument() : "";
                    case 1:
                        return doc.getDateValiditer();
                    case 2:
                        Chauffeur chauffeur = ChauffeurDao.getChauffeur(doc.getIdchauffeur());
                        return chauffeur != null ? (chauffeur.getNomChauffeur() + " " + chauffeur.getPrenomChauffeur()) : doc.getIdmaterielroulant();

                    default:
                        return null;
                }
            }

            @Override
            public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
                DocumentAdministratif document = documents.get(rowIndex);
                switch (columnIndex) {

                    case 0:
                        document.setDateValiditer(new Date());
                        //Todo encore à faire
                        break;
                    case 1:
                        document.setIdtype(Integer.valueOf((String) aValue));
                        break;
                }
                try {
                    abstractControleur.controleEtModifie(document);
                } catch (ValidationException ex) {
                    //TODO JOptionPane
                }
            }
        };
    }