Validation de données avec classeur partagé

Résolu
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -  
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je vous expose mon problème très embêtant.

Je viens de créer un fichier excel comportant pas mal de macros et permettant de gagner un temps considérable.

Seulement voilà, ces macros comportent une ligne de code indiquant qu'en fonction du nombre de lignes de mon tableau, en face de chaque ligne, il y aura une validation de données dans la colonne O. Donc chaque fois que j'ajoute une ligne, la validation se fait pour avoir une liste déroulante dans la colonne O.

Problème : Si le fichier est partagé (et pas le choix, les utilisateurs sont nombreux), j'ai un message d'erreur car je ne peux pas créer de validation de données en mode partage.

Auriez-vous une solution à me proposer?

Merci d'avance.

Cordialement.
A voir également:

1 réponse

Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Solution trouvée.

Code :

Sub Validation()

With ActiveWorkbook      ' Je désactive le partage du fichier
    .UnprotectSharing
    .ExclusiveAccess
End With

If ActiveSheet.Name = "SOURCE" Then Exit Sub

If ActiveSheet.Cells.Find("*") Is Nothing Then Exit Sub

Dim DL As Long

DL = ActiveSheet.Cells(Application.Rows.Count, 1).End(xlUp).Row

For i = 1 To DL

With ActiveSheet.Range("O" & i).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=SOURCE!$A$1:$A$3"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
End With

Next i

Application.DisplayAlerts = False
 ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared
 Application.DisplayAlerts = False 'Je réactive le partage du fichier avec un enregistrement

End Sub
0