Macro workbook où es mon erreur ?

Option Explicit

Private Sub Workbook_Open()
Dim Ws As Worksheet

  For Each Ws In Sheets
    If Left(Ws.Name, 8) = "Atelier " Then
      Ws.Protect Password:="12345678" & LCase(Right(Ws.Name, 1)), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
    End If
   If Left(Ws.Name, 7) = "Cui-Dep" Then
      Ws.Protect Password:="12345678" & LCase(Right(Ws.Name, 6)), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
    End If
  Next Ws
End Sub

'Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
'  MsgBox "feuille calculée " & Sh.Name
'End Sub

Je pars de la macro suivante à laquelle j'ai ajouté la seconde partie concernant Cui-Dep. Le mot de passe de la feuille "Cui-Dep" est "12345678cuidep", le chiffre 6 sors du nombre de caractère qui compose "cuidep".

Je suppose que c'est encore une erreur de syntaxe, suis vraiment trop noob lol

Salut le forum

LCase(Right(Ws.Name, 6)) de Cui-Dep sa donne ui-dep

Mytå

Bonjour

Bonjour Mytå

Le mot "Cui-Dep" contient 7 lettres

Aussi si ta page s'appelle seulement "Cui-Dep" ce n'est pas la peine de tester les 7 premiers caractères

Essayes ceci

Option Explicit

Private Sub Workbook_Open()
Dim Ws As Worksheet

  For Each Ws In Sheets
    If Left(Ws.Name, 8) = "Atelier " Then
      Ws.Protect Password:="12345678" & LCase(Right(Ws.Name, 1)), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
   ElseIf Ws.Name = "Cui-Dep" Then
      Ws.Protect Password:="12345678" & LCase(Replace(Ws.Name, "-", "")), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
    End If
  Next Ws
End Sub

Nickel.

Petite question relative à l'utilisation de "Elself"

A tout hasard, peut-on mettre autant de ElseIf que l'on veut ?

Bonjour

cmbodson2 a écrit :

A tout hasard, peut-on mettre autant de ElseIf que l'on veut ?

Oui

J'ai rajouté une troisième ligne et je pense que Je dois le mettre au mauvais endroit... le débogeur me signale "Else sans If"

Private Sub Workbook_Open()
Dim Ws As Worksheet

  For Each Ws In Sheets
    If Left(Ws.Name, 8) = "Atelier " Then
      Ws.Protect Password:="12345678" & LCase(Right(Ws.Name, 1)), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
   ElseIf Ws.Name = "Cui-Dep" Then
      Ws.Protect Password:="12345678" & LCase(Replace(Ws.Name, "-", "")), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
    End If
   ElseIf Ws.Name = "SportsPreaux" Then
      Ws.Protect Password:="12345678" & LCase(Replace(Ws.Name, "-", "")), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
    End If
  Next Ws
End Sub

'Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
'  MsgBox "feuille calculée " & Sh.Name
'End Sub

Bonjour

Enlèves le End If

    Private Sub Workbook_Open()
    Dim Ws As Worksheet

      For Each Ws In Sheets
        If Left(Ws.Name, 8) = "Atelier " Then
          Ws.Protect Password:="12345678" & LCase(Right(Ws.Name, 1)), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
       ElseIf Ws.Name = "Cui-Dep" Then
          Ws.Protect Password:="12345678" & LCase(Replace(Ws.Name, "-", "")), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
        [barrer]End If[/barrer]
       ElseIf Ws.Name = "SportsPreaux" Then
          Ws.Protect Password:="12345678" & LCase(Replace(Ws.Name, "-", "")), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True
        End If
      Next Ws
    End Sub
 

Inutile le code pour la page "SportsPreaux" tu n'as pas de - (tiret) dans le nom

Ws.Protect Password:="12345678" & LCase(Ws.Name), DrawingObjects:=False, Contents:=True, Scenarios:=False, userinterfaceonly:=True

Merci Banzai64

J'ai remarqué un truc. Sur les pages ateliers dont tu as réalisé la macro, lors d'une nouvelle ouverture du classeur, même si l'utilisateur a sauvegardé le classeur avec les cases des listes remplies, les cases des listes sont remises à zéro et c'est parfait.

Par contre, sur les miennes (cuidep et sportspreaux), les listes fonctionnent mais à l'ouverture du classeur dans les mêmes conditions (en ayant été sauvegardé), dés l'ouverture, les cases sont remplies des anciennes données.

Comment avais-tu fait pour remettre cet affichage de liste à zéro à l'ouverture du classeur ?

Ah, j'ai trouvé, je devais rajouter ceci dans le code des feuilles cuidep et sportspréaux

Range("X6:X70,Z6:Z70,AB6:AB70").ClearContents

Je fais des progrès, lol

Rechercher des sujets similaires à "macro workbook mon erreur"