Execution de macro numéro automatique et protection feuille

Bonjour à tous,

Alors voilà, j'ai réalisé une base de données sous Excel 2013 dans le cadre de mon BTS. On y retrouve ma base de données clients, employés, fournisseurs, produits, un tableau de suivi des stocks, j'y ai intégré un devis, un tableau de suivi de devis, un bon de commande et son tableau de suivi ainsi qu'une facture et son tableau de suivi, de même pour les avoirs.

J'ai liée une VBA à un bouton pour mon devis, mon bon de commande, ma facture et mon avoir, de sorte à avoir un nouveau numéro automatique.

J'ai besoin de protéger mes feuilles, cependant quand j'enclenche la protection de mes feuilles, malgré que j'ai déverrouillé la protection de mon bouton, mes macros ne veulent plus fonctionner et j'ai ce message erreur :

"Erreur de protection '1004' :

La cellule ou le graphique que vous essayez de modifier se trouve sur une feuille protégée. Pour y apporter des modifications, cliquer sur Ôter la protection de la feuille. "

J'ai essayé de chercher sur différents forum comment réussir à exécuter ma macro tout en protégeant la feuille mais je n'ai rien trouvé qui fonctionne dans mon cas, pourriez-vous m'aider s'il vous plaît ?

PS : Voici ma macro :

Sub NouveauNuméroDevis()

On Error GoTo NuméroUn

N = Right(Range("B11").Value, 5)

Range("B11").Value = "D" & Year(Date) & Month(Date) & "-" & Format(N + 1, "00000")

Exit Sub

NuméroUn:

Range("B11").Value = "D" & Year(Date) & Month(Date) & "-" & Format(1, "00000")

Resume Next

End Sub

Bonne journée à tous

Bonjour,

Pour avoir eu le même type de problème avec les protections (Je voulais écrire des valeurs dans un fichier mais qu'on ne puisse pas les modifier ensuite). J'ai simplement enlevé la protection, puis l'ai remise après l'exécution du code.

Exemple :

Sub NouveauNuméroDevis()

ThisWorkbook.Sheets(1).Unprotect

   On Error GoTo NuméroUn
   N = Right(Range("B11").Value, 5)
   Range("B11").Value = "D" & Year(Date) & Month(Date) & "-" & Format(N + 1, "00000")
Exit Sub

   NuméroUn:
   Range("B11").Value = "D" & Year(Date) & Month(Date) & "-" & Format(1, "00000")
   Resume Next

ThisWorkbook.Sheets(1).Protect DrawingObjects:=False, contents:=True, Scenarios:=False 'avec les options voulues pour la protection, qui s'obtiennent facilement avec l'enregistreur de macro

End Sub

Je viens d'essayer avec votre macro en faisant un copier coller mais j'ai toujours ce même message erreur

Attention que vous devez adapter pour votre classeur Excel !

ThisWorkbook.Sheets("NomDeLaFeuille").Unprotect 'Feuille dans laquelle vous écrivez les numéros

Ca pourrait p-e déjà aider

Du coup ça me donne cette macro c'est bien cela ?

Sub NouveauNuméroDevis()

ThisWorkbook.Sheets(Devis).Unprotect Devis

On Error GoTo NuméroUn

N = Right(Range("B11").Value, 5)

Range("B11").Value = "D" & Year(Date) & Month(Date) & "-" & Format(N + 1, "00000")

Exit Sub

NuméroUn:

Range("B11").Value = "D" & Year(Date) & Month(Date) & "-" & Format(1, "00000")

Resume Next

ThisWorkbook.Sheets(Devis).Protect Devis DrawingObjects:=False, contents:=True, Scenarios:=False

End Sub

J'ai une erreur de syntaxe sur la phrase :

ThisWorkbook.Sheets(Devis).Protect Devis DrawingObjects:=False, contents:=True, Scenarios:=False

Il faut ajouter des guillemets pour le nom si non il ne le trouvera pas.

Ca donne :

Sub NouveauNuméroDevis()

ThisWorkbook.Sheets("Devis").Unprotect

On Error GoTo NuméroUn
N = Right(Range("B11").Value, 5)
Range("B11").Value = "D" & Year(Date) & Month(Date) & "-" & Format(N + 1, "00000")
Exit Sub

NuméroUn:
Range("B11").Value = "D" & Year(Date) & Month(Date) & "-" & Format(1, "00000")
Resume Next

ThisWorkbook.Sheets("Devis").Protect DrawingObjects:=False, contents:=True, Scenarios:=False

End Sub

Super, merci pour la macro, ça fonctionne !

On ne peut pas laisser la protection en permanence ? On est obligé de remettre la protection de la feuille à chaque fois ?

Les jurys risquent de m'embêter sur ce fait puisque n'importe quel salarié pourrait effacer le numéro de devis

La protection est enlevée seulement pour l'exécution de ce bout de code donc une fois le nouveau numéro généré il n'est pas modifiable dans la feuille

Si c'est le cas, il faut dans le fichier de base verrouiller la colonne qui contient les numéros de devis.

Bon et bien du coup j'ai un problème, lorsque j'appuie sur mon bouton on me demande le mot de passe de déverrouillage, je le saisi et ça me déverrouille toute la feuille

Re,

Tu peux faire ceci

ThisWorkbook.Sheets("Devis").Unprotect ("mot de passe")

'code pour nv numéro de devis

ThisWorkbook.Sheets("Devis").Protect ("mot de passe")

Comme ça les personnes qui doivent générer un nv numéro peuvent le faire sans connaitre le mp mais ne savent pas modifier la feuille devis ensuite

Fiou,

J'ai toujours le même problème, je verrouille les cellules que je souhaite, je protège ma feuille avec mot de passe et lorsque j'appuie sur mon bouton de N° de devis automatique la protection saute :/

Chez moi ça fonctionne comme tu veux !

Est-ce que tu déselectionnes bien "Sélectionner les cellules verrouillées" au moment de protéger la feuille ?

Rechercher des sujets similaires à "execution macro numero automatique protection feuille"