Microarrays are a powerful tool in studying genes expressions under several conditions. The obtained data need to be analyzed using data mining methods. Biclustering is a data mining method which consists in simultaneous clustering of rows and columns in a data matrix. Using biclustering, we can extract genes that have similar behavior (co-express) under specific conditions. These genes may share identical biological functions. The aim in analyzing gene expression data is the extraction of maximal number of genes and conditions that present similar behavior. The two objectives to be optimized (size and similarity) are conflicting. Therefore, multi-objective optimization is suitable for biclustering. In our work, we combine a well-known multi-objective genetic algorithm (NSGA-II) with a heuristic to solve the biclutering problem. Due to the huge size of the datasets, we use a string of integers as a solution representation where integers represent the indexes of the rows and the columns. Experimental results on real data set show that our approach can find significant biclusters of high quality.