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.

1 réponse

  1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    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