Sub tri() [COLOR="Lime"]' là, c'est le nom de la fonction[/COLOR]
crit = InputBox("Valeur a faire remonter?") [COLOR="Lime"]' Je donne un nom (crit) à la valeur saisie dans l'inputbox[/COLOR]
taille = ActiveSheet.UsedRange.Rows.Count [COLOR="Lime"]' Je compte le nombre de lignes utilisées (UsedRange) de la feuille active[/COLOR]
For i = 4 To taille [COLOR="Lime"] ' La c'est une boucle....à chaque fois que la valeur dans la colonne A convient, je la ferais remonter. Je parcours donc mon tableau entier, de la ligne 4 (ou je l'ai fait commencer), à la fin (taille)[/COLOR]
If Range("A" & i).Value = crit Then [COLOR="Lime"]' Si la valeur en Ai (i étant l'index de ligne, sur lequel je boucle) est égal à crit -> c'est donc le cas d'une ligne à faire remonter[/COLOR]
If i <> 4 Then [COLOR="Lime"]' La je teste que ce ne soit pas la 1re ligne, sinon, inutile de la faire remonter (en fait c'est pire, sans ce test, ça plante)[/COLOR]
Rows(i & ":" & i).Cut [COLOR="Lime"] ' Donc, si la valeur en Ai est celle choisie, alors, je coupe la ligne i.....[/COLOR]
Rows("4:4").Select [COLOR="Lime"]' ......pour aller l'insérer avant la ligne 4[/COLOR]
Selection.Insert Shift:=xlDown [COLOR="Lime"]' .....en faisant descendre le reste du tableau[/COLOR]
End If [COLOR="Lime"]' Pas de Else, puisqu'il n'y a rien à faire si la valeur est différente de crit, ou si c'est la 1re ligne (ligne 4 en fait dans mon exemple)[/COLOR]
End If
Next i [COLOR="Lime"] ' Quand j'arrive ici, i est incrémenté de 1 : je teste la ligne suivante[/COLOR]
End Sub [COLOR="Lime"]' Fin de la procédure[/COLOR]