Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim TabInit() As Variant
Dim TabWork() As Variant
NouvelAgent = Application.InputBox("Veuillez taper l'agent à insérer")
nbcolplanning = 12 'nombre de colonnes à traiter
With ActiveSheet
'On détermine la position du nouvel élement
liginsert = Target.Row - .Range("Planning")(1, 1).Row + 1
ColInsert = Target.Column - .Range("Planning")(1, 1).Column + 1
TabInit = .Range("Planning").Value 'on place toute la plage planning dans le tablo vba
Nbele = UBound(TabInit, 1) 'nbele par colonne
ReDim TabWork(1 To nbcolplanning * Nbele, 1 To 1) 'on dimsensionne un tableau à 1 colonne
NumElementInsert = (ColInsert - 1) * Nbele + liginsert 'numéro de l'élément inséré dans le tabwork
'on remplit le tabwork avec le planning
For j = 1 To nbcolplanning
For i = 1 To Nbele
TabWork(Nbele * (j - 1) + i, 1) = TabInit(i, j)
Next i
Next j
'on procède au décalage
For i = UBound(TabWork, 1) To NumElementInsert + 1 Step -1
TabWork(i, 1) = TabWork(i - 1, 1)
Next i
TabWork(NumElementInsert, 1) = NouvelAgent
'.Range("A5").Resize(UBound(TabWork, 1), 1) = TabWork
'on remplit à nouveau le TabInit
For i = 1 To UBound(TabWork, 1)
col = Int((i - 1) / Nbele) + 1
lig = ((i - 1) Mod Nbele) + 1
TabInit(lig, col) = TabWork(i, 1)
Next i
.Range("Planning").Resize(UBound(TabInit, 1), nbcolplanning) = TabInit 'on place le résultat dans la feuille
End With
Cancel = True 'on annule le double clic pour selectionner la cellule
End Sub