public static BigDecimal convertTwoUnit(String categorieUnite, String nameUniteIn,
	    String nameUniteOut, BigDecimal valueIn) {

	// On cherche la value de la l'unite OUT
	// The value of the unity we seek OUT
	BigDecimal valueOut = BigDecimal.ZERO;

	// On initialise les variables qui vont nous servir a realiser les calculs
	// We initialize variables that will serve us realize calculations
	BigDecimal multiIn = BigDecimal.ZERO;
	BigDecimal multiOut = BigDecimal.ZERO;
	BigDecimal additionIn = BigDecimal.ZERO;
	BigDecimal additionOut = BigDecimal.ZERO;

	Boolean in = true;
	Boolean out = true;

	// On va se placer dans la bonne categorieUnite pour recuperer multi et addition
	// It will be placed in good measure to recover the multiplier and adding
	for (int i = 0; i < listMeasure.size(); i++) {
	    // Si le name de la categorieUnite existe
            // If the name of categorieUnite are
	    if (listMeasure.get(i).getNameCategorieUnite().equals(categorieUnite)) {
		// On va chercher les deux unites
		// We search the two units
		for (int j = 0; j < listMeasure.get(i).getLstUnite().size(); j++) {
		    // IN
		    if (listMeasure.get(i).getLstUnite().get(j).getNameUnite()
			    .equals(nameUniteIn)) {
			multiIn = listMeasure.get(i).getLstUnite().get(j)
				.getmultiParRapportDefaut();
			additionIn = listMeasure.get(i).getLstUnite().get(j)
				.getadditionParRapportDefaut();
			in = false;
		    }
		    // OUT
		    if (listMeasure.get(i).getLstUnite().get(j).getNameUnite()
			    .equals(nameUniteOut)) {
			multiOut = listMeasure.get(i).getLstUnite().get(j)
				.getmultiParRapportDefaut();
			additionOut = listMeasure.get(i).getLstUnite().get(j)
				.getadditionParRapportDefaut();
			out = false;
		    }
		}
	    }
	}

	if (in) {
	    System.out.println("  \n   L'unite " + nameUniteIn + " est introuvable, la conversion est donc impossible");
	}

	if (out) {
	    System.out.println("  \n   L'unite " + nameUniteOut + " est introuvable, la conversion est donc impossible");
	}

	// On teste si <> de 0
	// It tests whether <> 0
	if (!in && !out) {

	    // Etape 1, tranformer en unite de base (exemple : 1km en m :  1 * 1000 (multi km)= 1000m)
	    // Step 2, tranformer in base unit (eg 1km m: 1 * 1000 (multi km) = 1000m)
	    BigDecimal valBase = valueIn.multiply(multiIn).add(additionIn);

	    // Etape 2, transformer en unite out
	    // Step 2, into unit out
	    valueOut = valBase.subtract(additionOut).divide(multiOut, 3, BigDecimal.ROUND_HALF_UP);

	    System.out.println("  " + valueIn + " " + nameUniteIn + " = " + valueOut + " " + nameUniteOut);
	}
	return valueOut;
    }