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 SubJe 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érosCa 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 SubSuper, 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 ?