Où mettre Unprotect et Protect
Résolu
Nai
Messages postés
714
Date d'inscription
Statut
Membre
Dernière intervention
-
Nai Messages postés 714 Date d'inscription Statut Membre Dernière intervention -
Nai Messages postés 714 Date d'inscription Statut Membre Dernière intervention -
Bonsoir la communauté !
Je poursuis le projet d'outil pour ALSH, largement abouti grâce à la communauté CCM :)
Là, j'ai un problème de protection de feuille.
La macro en question me permet d'ajouter un enfant dans un tableau d'un simple clic depuis une base de données (détail que je souhaite modifier ultérieurement par les données de la feuille Réel).
Le problème c'est que la feuille ne doit pas être protégée pour que la macro fonctionne. Je me dis qu'il suffit de "Retirer la protection" avant la macro et de la remettre après; que nenni :/
J'ai fait le test avec le tableau 1, en vain.
Voir la macro "Worksheet_SelectionChange" dans la PJ, feuille "Tableau Baignade" : https://www.cjoint.com/c/GFvsnOriHwM
Merci d'avance pour votre aide ! :)
Je poursuis le projet d'outil pour ALSH, largement abouti grâce à la communauté CCM :)
Là, j'ai un problème de protection de feuille.
La macro en question me permet d'ajouter un enfant dans un tableau d'un simple clic depuis une base de données (détail que je souhaite modifier ultérieurement par les données de la feuille Réel).
Le problème c'est que la feuille ne doit pas être protégée pour que la macro fonctionne. Je me dis qu'il suffit de "Retirer la protection" avant la macro et de la remettre après; que nenni :/
J'ai fait le test avec le tableau 1, en vain.
Voir la macro "Worksheet_SelectionChange" dans la PJ, feuille "Tableau Baignade" : https://www.cjoint.com/c/GFvsnOriHwM
Merci d'avance pour votre aide ! :)
A voir également:
- Où mettre Unprotect et Protect
- Copy protect - Télécharger - Chiffrement
- Id appel entrant et protection spam - Forum SFR
- Protect de mailinblack avis ✓ - Forum Réseaux sociaux
- Dl protect link verification en cours ✓ - Forum Téléchargement
- Autoradio kenwood protect - Forum Autoradio
3 réponses
Bonjour,
Suite
Fichier avec controle de doublon avant mise en tableaux
https://mon-partage.fr/f/MfrsJrM3/
Suite
Fichier avec controle de doublon avant mise en tableaux
https://mon-partage.fr/f/MfrsJrM3/
Bonjour,
il te suffit de retirer la protection de la feuille au début de ta macro.. et de la remettre à la fin.
Nous ne pouvons pas tester.. la feuille étant actuellement protégée et n'ayant pas le password....
il te suffit de retirer la protection de la feuille au début de ta macro.. et de la remettre à la fin.
Nous ne pouvons pas tester.. la feuille étant actuellement protégée et n'ayant pas le password....
Pourtant ... ça semble parfaitement fonctionner :
et à la fin.. avant le end sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim cellule_première_ligne As Range, ligne As Range Dim Tinfos() As String, copie() Dim xl As Excel.Application Dim i1 As Integer, i2 As Integer, i3 As Integer Sheets("Tableau baignade").Unprotect ("alsh")
et à la fin.. avant le end sub
End If Sheets("Tableau baignade").protect Password:="alsh", DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Je ne comprend pas :/
Je pensais que le problème pouvait venir du fait que j'utilise ActiveSheet.Unprotect, mais non. Même en utilisant ton code, le deboggeur hurle ici :
dans "ajouter au tableau 3"
Constates-tu des différences entre ton exemple et ce fichier : https://www.cjoint.com/c/GFvv6VsJuNM ?
Je pensais que le problème pouvait venir du fait que j'utilise ActiveSheet.Unprotect, mais non. Même en utilisant ton code, le deboggeur hurle ici :
ligne.Resize(, UBound(Tinfos) + 1).Value = xl.Transpose(xl.Transpose(Tinfos))
dans "ajouter au tableau 3"
Constates-tu des différences entre ton exemple et ce fichier : https://www.cjoint.com/c/GFvv6VsJuNM ?
N'ayant pas le fichier bdd.xls je ne peux pas correctement tester.
Par contre... ton code contient quelques anoamies je pense....
par exemple .. à quoi servent les lignes :
Ce code fait que ça relance à nouveau la procédure Worksheet_SelectionChange
A ce moment là .. ton tu n'entres pas dans ton IF ..
Donc la ligne
doivent, en effet, te cracher une erreur !
Corrige déjà ça .... puis lance ton code en mode pas à pas (en mettant un point d'arrêt au début de la sub par exemple) pour voir ce qui se passe et pourquoi cela "plante".
Par contre... ton code contient quelques anoamies je pense....
par exemple .. à quoi servent les lignes :
ligne.Select
Ce code fait que ça relance à nouveau la procédure Worksheet_SelectionChange
A ce moment là .. ton tu n'entres pas dans ton IF ..
Donc la ligne
Set ligne = cellule_première_ligne.Resize(, .Columns.Count)n'est pas exécuté.... et donc les lignes de code suivantes :
ligne.Resize(, UBound(Tinfos) + 1).Value = xl.Transpose(xl.Transpose(Tinfos)) ligne.Columns(4).FormulaR1C1 = "=IF(RC[-1]<>"""",DATEDIF(RC[-1],R7C4,""y""),"""")"
doivent, en effet, te cracher une erreur !
Corrige déjà ça .... puis lance ton code en mode pas à pas (en mettant un point d'arrêt au début de la sub par exemple) pour voir ce qui se passe et pourquoi cela "plante".
En effet :O La suppression de cette ligne résous une partie du problème.
Par contre, je ne parviens plus à supprimer les enfants...
J'ai comme qui dirait l'impression que cette macro est bien trop longue pour que je puisse la comprendre entièrement...
Ton aide est d'autant plus précieuse :)
Voici la base de données : https://www.cjoint.com/c/GFvwv0LoEnM
J'ai constaté l'impossibilité de sélectionner D7:D12 pour "ne pas protéger ces cellules". Dès que je sélectionne la plage, la feuille se protège :O
Par contre, je ne parviens plus à supprimer les enfants...
J'ai comme qui dirait l'impression que cette macro est bien trop longue pour que je puisse la comprendre entièrement...
Ton aide est d'autant plus précieuse :)
Voici la base de données : https://www.cjoint.com/c/GFvwv0LoEnM
J'ai constaté l'impossibilité de sélectionner D7:D12 pour "ne pas protéger ces cellules". Dès que je sélectionne la plage, la feuille se protège :O
Bonjour a Tous,
Nai:
Peut-être le problème vient-il d'une protection ailleurs ?
Non, c'est un probleme d'appel recursif de cette procedure
lie a
et plus etrange
une selection intempestive de la cellule F26 que je ne m'explique pas
J'ai donc mis les lignes
et utilise Application.EnableEvents false/true pour eviter ces desagrements.
fichier modifie pour prot/unprot: https://mon-partage.fr/f/5CAagWeI/
j'ai laisse votre principe de protection
Il est possible de mettre x fois le meme nom dans un tableau et ce meme nom dans les autres tableaux!!!!!!!!!!!!!!!! Normal ou pas ?????
L'utilisation de votre fichier est un peu sensible
Nai:
Peut-être le problème vient-il d'une protection ailleurs ?
Non, c'est un probleme d'appel recursif de cette procedure
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lie a
ligne.Selectet l'ecriture des cellules pour le message ex:
Range("A25") = "Sélectionnez le NOM de l'enfant pour le supprimer" et Range("A25") = Empty
et plus etrange
une selection intempestive de la cellule F26 que je ne m'explique pas
J'ai donc mis les lignes
ligne.Selecten commentaire car pas utiles
et utilise Application.EnableEvents false/true pour eviter ces desagrements.
fichier modifie pour prot/unprot: https://mon-partage.fr/f/5CAagWeI/
j'ai laisse votre principe de protection
Il est possible de mettre x fois le meme nom dans un tableau et ce meme nom dans les autres tableaux!!!!!!!!!!!!!!!! Normal ou pas ?????
L'utilisation de votre fichier est un peu sensible
Salut ! Merci pour ce message ! Le prot/unprot fonctionne nickel, mais j'ai un soucis avec la ListBox1 qui rétrécie à chaque nouvelle recherche :O J'ai beau l'éditer en mode création, elle se rétrécie toujours :/
Il est possible de mettre x fois le meme nom dans un tableau et ce meme nom dans les autres tableaux!!!!!!!!!!!!!!!! Normal ou pas ?????
Oui et non lol S'il est possible de l'interdire, c'est mieux, mais en pratique le directeur devrait vite se rendre compte que le nombre d'enfant sur les tableaux ne correspond pas au réel lol. J'envisage de ne plus prendre en compte la base de données pour cette feuille, mais plutôt les données des enfants de la feuille "Réel".
L'utilisation de votre fichier est un peu sensible
Ah ! Voilà une remarque intéressante ! L'objectif premier de ce fichier est de rendre son utilisation simple et intuitif. Qu'entendez-vous par "sensible" ?
Il est possible de mettre x fois le meme nom dans un tableau et ce meme nom dans les autres tableaux!!!!!!!!!!!!!!!! Normal ou pas ?????
Oui et non lol S'il est possible de l'interdire, c'est mieux, mais en pratique le directeur devrait vite se rendre compte que le nombre d'enfant sur les tableaux ne correspond pas au réel lol. J'envisage de ne plus prendre en compte la base de données pour cette feuille, mais plutôt les données des enfants de la feuille "Réel".
L'utilisation de votre fichier est un peu sensible
Ah ! Voilà une remarque intéressante ! L'objectif premier de ce fichier est de rendre son utilisation simple et intuitif. Qu'entendez-vous par "sensible" ?
Re,
Qu'entendez-vous par "sensible" ?
A la moindre anomalie dans Table baignade, il faut systematiquement fermer et rouvrir le fichier.Pour le reste je n'ai pas regarde
Il faudrait que la listbox soit invisible si textbox vide, ca arrangerait un peu
S'il est possible de l'interdire, c'est mieux,
Tout est possible, suffit de le vouloir
O J'ai beau l'éditer en mode création, elle se rétrécie toujours :/
Je regarde la chose
Qu'entendez-vous par "sensible" ?
A la moindre anomalie dans Table baignade, il faut systematiquement fermer et rouvrir le fichier.Pour le reste je n'ai pas regarde
Il faudrait que la listbox soit invisible si textbox vide, ca arrangerait un peu
S'il est possible de l'interdire, c'est mieux,
Tout est possible, suffit de le vouloir
O J'ai beau l'éditer en mode création, elle se rétrécie toujours :/
Je regarde la chose
A la moindre anomalie dans Table baignade, il faut systematiquement fermer et rouvrir le fichier.
En fait, il suffit de relancer Workbook2_Open. J'ai mis un bouton "Recharger" pour la relancer :)
Tout est possible, suffit de le vouloir
C'est en effet quelque chose que je voudrais. Mais je pense d'abord modifier la source de données de cette feuille. En effet, dans le cas de ce tableau de baignade il est inutile de charger toute la base de données, seuls les enfants du tableau "Réel" importent. J'envisagerais l'impossibilité d'ajouter deux fois le même enfant après avoir modifié cela. Ceci sera d'ailleurs mon projet sujet :)
Encore et toujours merci pour l'aide !
EDIT: Pour la taille de la ListBox, j'ai trouvé ceci : https://forums.commentcamarche.net/forum/affich-19525091-vba-aide-pour-bloquer-taille-listbox mais reste sans réponse :/ J'ai trouvé très peu de chose à ce sujet :/
En fait, il suffit de relancer Workbook2_Open. J'ai mis un bouton "Recharger" pour la relancer :)
Tout est possible, suffit de le vouloir
C'est en effet quelque chose que je voudrais. Mais je pense d'abord modifier la source de données de cette feuille. En effet, dans le cas de ce tableau de baignade il est inutile de charger toute la base de données, seuls les enfants du tableau "Réel" importent. J'envisagerais l'impossibilité d'ajouter deux fois le même enfant après avoir modifié cela. Ceci sera d'ailleurs mon projet sujet :)
Encore et toujours merci pour l'aide !
EDIT: Pour la taille de la ListBox, j'ai trouvé ceci : https://forums.commentcamarche.net/forum/affich-19525091-vba-aide-pour-bloquer-taille-listbox mais reste sans réponse :/ J'ai trouvé très peu de chose à ce sujet :/
J'ai personnalisé le message d'erreur.
Me reste plus qu'à modifier la base de données pour le tableau de baignade et, en effet, à rendre le fichier moins sensible ^^
Encore merci !