Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

captainejack

XLDnaute Occasionnel
Bonjour le Forum

J'ai créer un classeur Excel avec plusieurs UserForms et je souhaiterai s'avoir comment "obliger" à utiliser les formulaires pour l'enregistrement des données.
Y a t il un code vba à ajouter?
En vous remerciant
Dan
 
Dernière édition:
Re : Vba

Bonjour Dan, bonjour le forum,

Il faut que tes onglets soit protégés ce que interdira aux utilisateurs l'édition de données. Mais pour permettre aux macros de modifier il faut au niveau de la protection, que la propriété UserInterfaceOnly soit égale à True. Mais si je ne dis pas de bêtises, ce qui est rare, je crois que cette propriété n'est pas gardée en mémoire. Je te propose donc une macro événementielle à l'ouverture du classeur - à placer par VBE dans le composant ThisWorkbook - qui protège tous les onglets :
Code:
Private Sub Workbook_Open()
Dim sh As Worksheet
For Each sh In Sheets
sh.Protect UserInterfaceOnly = True
Next sh
End Sub
Le résultat est que par tes Userform les onglets peuvent être modifiés mais pas directement en éditant une cellule.
 
Re : Vba

Bonjour captainjack,

Bien sûr, tu dois ajouter une ligne d'appel, ex :

Code:
Userform.Show

Userform étant le nom de ton formulaire.

Tu peux insérer cette ligne dans l'événement Worksheet_Activate de ta feuille, ou dans CommandButton1_Click d'un bouton placé sur ta feuille, ou par tout autre moyen de ton choix.

Il ne te reste plus, alors, qu'à gérer ton formulaire.

Espérant avoir répondu.

Cordialement.

Oups, bonjour Robert : je crois qu'on n'a pas compris la même chose.
 
Dernière édition:
Re : Vba

Bjr Robert / Papou Net
J'ai mis le code dans ThisWorkbook et ça me bloque tout mon classeur Excel
Je me suis peut être mal exprimé, ce que je voulais savoir, quel est le moyen pour que les personnes utilisent les formulaires pour insérer les données sans qu'ils aillent directement dans les cellules. Il faut obligatoirement utiliser les userforms pour insérer les données
J'ai des boutons d'appel des formulaires, mais les gens irons directement dans les cellules
Encore Merci
 
Re : Vba

Bonjour le fil, bonjour le forum,

Ben justement le code proposé doit faire exactement ce que tu demandes. Tes onglets sont bloquées mais si tu passes par un formulaire ça marche. Essaie avec la propriété = False c'est peut-être là que je me suis gouré...
 
Re : Vba

Bonsoir le fil, bonsoir le forum,

Bon, en pièce jointe un exemple qui montre comment ça marche... Entre parenthèse, c'est quand même un comble que ce soit moi qui soit obligé de créer une pièce jointe !!!!

Dans le fichier aucun onglet n'est protégé manuellement. Donc au départ ils sont tous libres. La macro d'ouverture du classeur assure la protection de tous les onglets. Du coup l'utilisateur ne peut rien éditer dans les cellules. Mais, en utilisant l'UserForm, la macro accepte l'ajout de données.

Tu adapteras si tu en as envie mais je ne vois pas comment je pourais t'aider plus que ça à moins que tu ne daignes envoyer ton propre fichier (ou un fichier allégé basé sur ton fichier) en pièce jointe.
 

Pièces jointes

Re : Vba

Bonjour le fil, bonjour le forum,

Il ne peux y avoir qu'une seule procédure Workbook_Open sinon il y a conflit ! Dans ton exemple il y en a deux... On peux réunir les deux codes :
Code:
Private Sub Workbook_Open()
Dim sh As Worksheet
For Each sh In Sheets
    sh.Protect UserInterfaceonly:=True
Next sh
Sheets("Feuil1").Activate
F_Feuil1_simple.Show
End Sub
Si tu es le seul utilisateur, passe encore, mais si d'autres doivent utiliser ton fichier, imagine qu'ils ferment l'Userform... Il leur faudra alors fermer puis rouvrir le classeur pour lancer l'Userform ! Je pense qu'un bouton serait le bienvenu. Je n'ai pas compris non plus l'intêret du bouton Feuil1 dans l'UserForm ??? Si tu veux que l'Userform s'ouvre par défaut sur l'onglet Feuil1 tu peux le faire à l'initialisation :
Code:
Private Sub UserForm_Initialize()
Sheets("Feuil1").Activate
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
266
Réponses
18
Affichages
533
Réponses
2
Affichages
136
Réponses
3
Affichages
233
Réponses
3
Affichages
256
Retour