Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not IsNumeric(Target.Text) Then Exit Sub
Dim zone As Range
Cancel = True
Set zone = Target.CurrentRegion 'zone de nombres où se trouve Target
zone.Interior.ColorIndex = 37 'bleu
Suivante1 zone, Target 'choisir la macro
'Suivante2 zone, Target
End Sub
Sub Suivante1(zone As Range, Target As Range)
'valeurs sur une même ligne dans l'ordre
Dim i&, suiv As Byte, plage As Range, j As Variant
With zone
For i = zone.Rows.Count To 1 Step -1
1 Target.Interior.ColorIndex = 6 'jaune
suiv = 1 + (Target Mod 9)
Set plage = Range(IIf(Target.Row > .Rows(i).Row, .Cells(i, 1), Target), .Cells(i, .Columns.Count))
j = Application.Match(suiv, plage, 0)
If IsNumeric(j) Then Set Target = plage(j): GoTo 1
Next
End With
End Sub
Sub Suivante2(zone As Range, Target As Range)
'valeurs sur une même ligne dans le désordre
Dim i&, suiv As Byte, j As Variant
With zone
For i = zone.Rows.Count To 1 Step -1
1 Target.Interior.ColorIndex = 6 'jaune
suiv = 1 + (Target Mod 9)
j = Application.Match(suiv, .Rows(i), 0)
If IsNumeric(j) Then Set Target = .Cells(i, j): GoTo 1
Next
End With
End Sub