Bonjour, j'ai un tableau qui est basé sur une tableau croisé dynamique (TCD) situé sur une autre feuille.
Dans ce tableau j'ai des lignes qui permettent la sélection d'un pays dans une liste déroulante (basé sur le TCD) et le montant attribué à ce pays est récupéré du TCD:
J'ai mis en place une protection (mot de passe: 000) pour que les montants ne soient pas modifiés ainsi que les listes déroulantes des lignes déjà insérées.
Un bouton "Add a new country" me permet d'ajouter une nouvelle ligne grâce à du VBA. Ainsi j'ai déverrouillé temporairement la feuille puis ajouté la ligne et enfin vérouillé à nouveau la feuille.
Ma fonction VBA:
Sub AddANewParticipant()
With ActiveSheet.ListObjects("Table6")
Sheets("Estimated Costs").Unprotect Password:="000"
ligne = .ListRows.Count + .HeaderRowRange.Row + 2
Rows(ligne).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.ListRows.Add
.DataBodyRange.Cells(.ListRows.Count, 2).Select
End With
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=ParticipantCountries"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Sheets("Estimated Costs").Protect Password:="000"
End Sub
Mon problème est que l'on ne peut plus sélectionner une nouvelle valeur dans la liste déroulante ajoutée et je ne sais pas comment le dévérouiller ou vérouiller des cellules de la nouvelle ligne ajoutée. Pourriez-vous m'aider s'il vous plaît?
Ici le fichier: