Bonjour à tous,
Je réalise une macro qui me récupère les "X" plus grande valeurs et les "X" valeurs plus petite dans une plage ( rows2).
Mais mon code m'indique une erreur 1004 sur la ligne "wsBoard.Range(Cells((10 + x) + (1 * x), 11), Cells((10 + x) + (1 * x), 15)).Merge" et si je saute cette instruction j'ai la même erreur à la ligne du dessous.
Pouvez vous m'expliquer ou se trouve l'erreur ?
	
	
	
	
	
		
Merci
	
		
			
		
		
	
				
			Je réalise une macro qui me récupère les "X" plus grande valeurs et les "X" valeurs plus petite dans une plage ( rows2).
Mais mon code m'indique une erreur 1004 sur la ligne "wsBoard.Range(Cells((10 + x) + (1 * x), 11), Cells((10 + x) + (1 * x), 15)).Merge" et si je saute cette instruction j'ai la même erreur à la ligne du dessous.
Pouvez vous m'expliquer ou se trouve l'erreur ?
		VB:
	
	
	Private Sub grandevaleurs()
Dim x, y As Integer
Dim NombreG, NombreP As Double
Dim ColonneG, colonneP As Integer
Dim wsDonnees, wsBoard As Object
   
Select Case quantite ' quantite: variable Public
    Case Is > 10
    y = 5
    Case Is < 10 > 7
    y = 3
    Case Is > 4 < 7
    y = 2
    Case Is = 2
    y = 1
    Case Is < 2
    Exit Sub
End Select
    For x = 1 To y 'boucle pour récupérer les plus grandes valeurs et les plus petites
   
         Set wsDonnees = ThisWorkbook.Worksheets("Donnees")
         Set wsBoard = ThisWorkbook.Worksheets("Tableau")
        'récupère la Xieme valeur la plus élevée dans la 2eme ligne
        NombreG = wsDonnees.Application.WorksheetFunction.Large(Rows(2), x) ' Valeur de la "X" valeur la plus grande
        NombreP = wsDonnees.Evaluate("Small(IF(" & Rows(2).Address & ">1," & Rows(2).Address & ")," & x & ")") ' Valeur de la "X" valeur la plus petite
        'recherche le numéro de la colonne pour la valeur trouvée
        ColonneG = wsDonnees.Application.Match(NombreG, Rows(2), 0) 'repupere le N° de colonne de la "X" valeur la plus grande
        colonneP = wsDonnees.Application.Match(NombreP, Rows(2), 0) 'repupere le N° de colonne de la "X" valeur la plus petite
       
        If x = y Then Exit Sub ' si x à atteint y alors on sort du Sub
       
        ' Afin d'éviter d'avoir des doublons, si la valeur "x" est égale à la valeur de "X+1" alors on sort du sub
        If wsDonnees.Application.WorksheetFunction.Large(Rows(2), x) = wsDonnees.Application.WorksheetFunction.Large(Rows(2), x + 1) Then Exit Sub
       
        ' Afin d'éviter d'avoir des doublons, si la valeur "x" est égale à la valeur de "X+1" alors on sort du sub
        If wsDonnees.Evaluate("Small(IF(" & Rows(2).Address & ">1," & Rows(2).Address & ")," & x & ")") = wsDonnees.Evaluate("Small(IF(" & Rows(2).Address & ">1," & Rows(2).Address & ")," & x + 1 & ")") Then Exit Sub
       
         wsBoard.Range(Cells((10 + x) + (1 * x), 11), Cells((10 + x) + (1 * x), 15)).Merge ' Fusion d'une plage de cellule
       
        ' Copie de l'entete de la valeur  "X"  la plus grande dans une autre feuille
         wsDonnees.Range(Cells(1, ColonneG)).Value.Copy wsBoard.Range(Cells((10 + x) + (1 * x), 11), Cells((10 + x) + (1 * x), 15))
       
         wsBoard.Range(Cells((10 + x) + (1 * x), 17), Cells((10 + x) + (1 * x), 18)).Merge ' Fusion d'une plage de cellule
           
         wsBoard.Range(Cells((10 + x) + (1 * x), 17), Cells((10 + x) + (1 * x), 18)) = NombreG ' Copie de la "X" valeur la plus grande
       
         wsBoard.Range(Cells((20 - x) - (1 * x), 22), Cells((20 - x) - (1 * x), 26)).Merge ' Fusion d'une plage de cellule
        
         ' Copie de l'entete de la valeur  "X"  la plus petite dans une autre feuille
         wsDonnees.Range(Cells(1, colonneP)).Value.Copy wsBoard.Range(Cells((20 - x) - (1 * x), 22), Cells((20 - x) - (1 * x), 26))
       
         wsBoard.Range(Cells((20 - x) - (1 * x), 27), Cells((20 - x) - (1 * x), 29)).Merge ' Fusion d'une plage de cellule
        
         Range(Cells((20 - x) - (1 * x), 27), Cells((20 - x) - (1 * x), 29)) = NombreP ' Copie de la "X" valeur la plus petite
       
    Next x
End Sub
	Merci