Simplifier un code VBA pour une insertion de ligne à un seul endroit

Bonjour,

Sur la feuille "5 ateliers", on m'a créé un code VBA complexe alors que je ne souhaiterais insérer une ligne qu'à un seul endroit sur un seul tableau.

image

Or le code suivant me donne plusieurs choix. Alors qu'à aucun moment je ne veux insérer sur l'autre tableau en colonne Z :

Sub Inserer_Ligne_5ateliers()
     Dim LO    As ListObject
     On Error Resume Next
     Set LO = ActiveCell.ListObject
     On Error GoTo 0

     If LO Is Nothing Then
          MsgBox "Vous n'étes pas dans le tableau" & vbLf & "Impossible de savoir quelle ligne", vbInformation, "Insérer ligne"
     Else
          With LO
               .Parent.Unprotect MdP
               .Range.AutoFilter 1
               .Range.AutoFilter
               Set c = .ListRows.Add.Range   'la plage de la ligne ajoutée au bout du TS *******************
               Application.Goto .DataBodyRange.Cells(1, 1), 1     'se déplacer vers la première cellule du tableau, position fixe topleft
               Application.Goto c.Cells(i, 1)     'se déplacer vers la première cellule de la nouvelle ligne ajoutée
               If StrComp(.Name, "TBL_5Ateliers", 1) = 0 Then c.Cells(1, 4).Resize(, 20).Value = 0     'si vous traitez ce TS, ajoutez des zéros dans les cellules 4-23
               Proteger
          End With
     End If
End Sub

Et dernier chose... BsAlv m'a créé une formule sur la feuille "5 ateliers" qui fonctionne parfaitement. Celle-ci résiste à une RAZ du tableau :

image

Je me suis inspiré du travail de BsAlv pour essayer de le reproduire sur la feuille "tir à 9 cibles", or cette formule ne tient pas lorsque je fais une RAZ du tableau :

image

Merci pour votre aide

Bonne fin d'après-midi

Sur le bouton "Débloquer ou Quitter", tapez vodoraix pour tt débloquer.

Et mot de passe pour débloquer les feuilles ==> seb

Bonsoir,

je regarderai bien mais alors faites en sorte qu'il n'y ait plus de MDP et autres protections... Pour ma part c'est "usant"... Il vous faudrait développer l'application en Open Source, puis une fois finaliser mettre en place les protections au juste nécessaire...

Si ces protections sont mises en place pour éviter que les utilisateurs ne fasse des bêtises, ces derniers doivent-ils mettre à jour le fichier ou juste le consulter ?
Si c'est une consultation alors un fichier "copie" sans protection suffit et ce dernier sera mis à jour lorsque le fichier original sera enregistré, comme cela la copie sera toujours conforme à la dernière version de l'originale... Tout dépend de la régularité de modification de l'original, c'est ce que je faisais pour l'un de mes suivis, mais il est vrai que c'était moi le "référent" de la mise à jour.

@ bientôt

LouReeD

Bonsoir LouReeD et désolé, je l'avais débloqué voilà 2 jours et sur des modifs ça a dû être remis par un "aidant" qui m'avait résolu un autre pb...

Bonne soirée

à bientôt

Voilà c'est fait, désolé ==>

Bonjour vodoraix,
Si ton tableau pour insérer une ligne est toujours le même alors la macro peut se simplifier légèrement :

Sub Inserer_Ligne_5ateliers()
     Dim LO    As ListObject
     On Error Resume Next
     Set LO = ActiveSheet.ListObjects("TBL_5Ateliers")
     On Error GoTo 0

     If LO Is Nothing Then
          MsgBox "Le tableau n'existe plus" & vbLf & "ou a changé de nom !", vbInformation, "Insérer ligne"
     Else
          With LO
               .Parent.Unprotect MdP
               .ListRows.Add.Range.Offset(, 3).Resize(, 20).Value = 0
               Application.Goto .DataBodyRange.Cells(1, 1), 1
               Proteger
          End With
     End If
End Sub

Ton autre soucis vient du fait que pour une raison que j'ignore, ton tableau Tab_9Cibles contient 10 colonnes supplémentaires masquées. Pour remédier à ce soucis, il te suffit d'exécuter ce bout de code une seule fois sur la feuille tir à 9 cibles.

Range("Tab_9Cibles").ListObject.DataBodyRange.Offset(,13).Resize(, 10).Delete

Attention, il y a risque que ton second tableau de la feuille soit également effacé, tu peux simplement le copier puis le recoller en place après exécution.

J'espère que ça t'aidera à avancer.
À bientot.

Bonsoir Chbouli04 et merci beaucoup

C'est absolument parfait

Pour les colonnes cachées, j'ai besoin de leur existence pour mon code car ce sont tjrs les mêmes pour le tableau importé en Z, AA et AB. Mais merci de t'en être inquiété

Bonne soirée

à bientôt...

Rechercher des sujets similaires à "simplifier code vba insertion ligne seul endroit"