private void formInternalFrameOpened(javax.swing.event.InternalFrameEvent evt) { Connexion conn; try { conn.Connecter(); Connection cnx; cnx = conn.con; Produit prd = new Produit(); try { prd.remplir(cnx, jTable1, ch); } catch (SQLException ex) { Logger.getLogger(Produits.class.getName()).log(Level.SEVERE, null, ex); } cnx.close(); } catch (ClassNotFoundException ex) { Logger.getLogger(Produits.class.getName()).log(Level.SEVERE, null, ex); } pour le code de la connexion j l'ai mis dans une class "Connexion" qui comporte la methode Connecter(): import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Connexion { String url ="jdbc:mysql://localhost:3306/gestion_stock"; public Connection con; public void Connecter() throws ClassNotFoundException, InstantiationException, IllegalAccessException{ try { Class.forName("com.mysql.jdbc.Driver").newInstance(); con= DriverManager.getConnection(url,"root",""); System.out.println("pilote Mysql chargé"); } catch(SQLException sqle) { System.err.println(" Erreur lors de la connexion : " + sqle.getMessage()) ; } } } et pour la fonction remplir() qui rempli le jTable1 elle se trouve dans une autre class "Produit": public class Produit { public Produit() {} public void remplir(Connection con,JTable Liste,String req)throws SQLException{ DefaultTableModel d=(DefaultTableModel) Liste.getModel(); d.setRowCount(0); Statement st=con.createStatement(); ResultSet rst= st.executeQuery(req); while (rst.next()){ d.insertRow(Liste.getRowCount(), new Object[]{rst.getInt("Num_prd"), rst.getString("Nom_prd"),rst.getInt("Prix"),rst.getInt("Qte_stock"), rst.getInt("Num_frn")}); } } voyons mnt le remplissage de notre jTable2 qui se fait a partir de selection des elements de jTable2: ce remplissage se fait quand on click sur la bouton "ok", donc voilà le code de notre bouton : NB: mes 2 jTables contiennent 3 colonnes num_prd,num_cmd et qte_cmd private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { if (jTable1.getSelectedRow() == -1) { JOptionPane.showMessageDialog(this, "Il Faut d'abord Selectionné un produit"); } else { int row = jTable1.getSelectedRow(); String num_prd = jTable1.getValueAt(row, 0).toString(); String num_cmd = jTable1.getValueAt(row,1).toString(); String qte_cmd = jTable1.getValueAt(row, 2).toString(); if (jTable2.getRowCount() == -1) {} else { for (int i = 0; i <= jTable2.getRowCount() - 1; i++) { //num_prd est le 1er element dans chaque colonne de jTable1 et jTable2 if (Integer.parseInt(jTable2.getValueAt(i, 0).toString()) == Integer.parseInt(num_prd)) { index = i; } /*pour eviter l'ajout de la meme ligne plusieur fois si le num_prd n'existe pas déjà dans jTable2 là on va ajouter la ligne selectionnée du jtable1 dans jTable2 */ if (index == -1) { DefaultTableModel d = (DefaultTableModel) jTable2.getModel(); d.insertRow(jTable2.getRowCount(), new Object[]{num_prd, num_cmd, qte_cmd}); } else { index = -1; JOptionPane.showMessageDialog(this, "l'element Selectionné existe déjà!"); } } }