Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim TabInit() As Variant
Dim TabWork() As Variant
Dim RngPlanning As Range
NouvelAgent = Application.InputBox("Veuillez taper l'agent â inserer")
If NouvelAgent = "" Then Cancel = True: Exit Sub 'OK sans nom d'agnet
If Not NouvelAgent Then Cancel = True: Exit Sub 'annuler
With ActiveSheet 'avec la feuille active
Set RngPlanning = .Range("B5").CurrentRegion 'on dŽfinit la plage
'RngPlanning.Select
nbcolplanning = RngPlanning.Columns.Count 'on en dŽduit le nombre de colonnes
'On d?termine la position du nouvel ?lement
liginsert = Target.Row - RngPlanning(1, 1).Row + 1
ColInsert = Target.Column - RngPlanning(1, 1).Column + 1
TabInit = RngPlanning.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 procde 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 'pour le dŽbug
'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
RngPlanning.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