bonjour le fil,
@jExceL2fr,
je trouve que la feuille "ECME" est trop "nerveux", j'aurais mis une protection dessus et sauter vers la feuille "Saisie" uniquement pour la première colonne.
Et comme c'est un tableau structuré, ces lignes vides sont inutiles ou pire. Puis vous pouvez utiliser toutes les possibilités d'un TS, donc inutile de calculer la position, on peut même déplacer ce TS vers une autre feuille sans modifier le code. Juste le numéro du ListRow suffit pour tout faire. Ajouter une ligne, on peut le faire dans la même macro avec Lig=0
Sub ModifEqt(Optional Lig As Long = 0) ' Position de l'enregistrement
Dim LO, Indx, N, bDrapeau As Boolean
Set LO = Range("Tableau1").ListObject 'le tableau
N = LO.ListRows.Count 'nombre de lignes
If Lig < 1 Or Lig > N Then bDrapeau = True: Lig = LO.Range.Row + N + 1 'ajouter une ligne = avec lig=0, alors calculer Lig comme ceci
Indx = Lig - LO.HeaderRowRange.Row 'index listrow
' Afficher la feuille de SAISIE
With ThisWorkbook.Sheets("Saisie")
.Range("F1").Value = Indx ' Inscrire le numéro d'enregistrement
.Visible = xlSheetVisible
With .Cells(1, "C").Resize(10) 'plage pour corriger
If bDrapeau Then 'oubien ajouter (lig=0) oubien lig était hors limites
.ClearContents 'rien à coller du tableau, juste RAZ
Else
.Value = Application.Transpose(LO.ListRows(Indx).Range.Value2) 'coller contenu du Listrow & transposer
End If
End With
Application.Goto .Range("A1"), 1
End With
' Masquer la feuille de saisie
ThisWorkbook.Sheets("ECME").Visible = xlVeryHidden
End Sub