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.
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 SubEt dernier chose... BsAlv m'a créé une formule sur la feuille "5 ateliers" qui fonctionne parfaitement. Celle-ci résiste à une RAZ du tableau :
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 :
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...
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 SubTon 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).DeleteAttention, 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...