Bonjour Durand (j’aime bien ce prénom) et le forum
Voilà une petite macro qui semble résoudre ton pb si je l’ai bien compris
A copier dans feuil1 de l Ȏditeur vBa
Private Sub Worksheet_Change(ByVal Target As Range)
‘ déclarations
Dim glissade As Range
Static flag As Boolean
Dim lig As Long
If Intersect(Target, Range("B2")) Is Nothing Then: Exit Sub
If flag = True Then: Exit Sub
'teste la différence B1/B2
If Range("B1") = Range("B2") Then: End
flag = True
‘ B1 devient la future ancienne valeur de test
Range("B1") = Range("B2")
'Numero de la dernière ligne occupée colonne A
lig = Range("A1").End(xlDown).Row
' active une variable « range » des valeurs existant en colonne A à partir de la ligne 2
Set glissade = Range(Cells(2, 1), Cells([lig], 1))
' nettoie le dernière cellule
Cells(lig, 1).ClearContents
' restitue les valeurs de la col A à partir de la ligne 1
Range(Cells(1, 1), Cells([lig] - 1, 1)) = glissade.Value
flag = False
End Sub
Le coup de la variable « static flag » doit beaucoup à une macro de Ti trouvée dans le coffret des listes. ( j’ai surnommé dans mes archives cette macro de Ti : la « macro des vraies fausses sorties » après avoir passé pas mal de temps à comprendre…c’est tout l’intérêt du forum : etudier les solutions proposées pour essayer de piger et + tard appliquer, Encore 1 fois, Merci Ti et les autres champions d’Excel).
Toutefois, qq chose me dit qu’il doit y avoir + simple, donc peut-être à +
Bon Dimanche
Michel. Béziers