Détection d'écriture dans cellule
Fermé
Greeegoryyy
-
23 mai 2017 à 12:44
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 23 mai 2017 à 15:12
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 23 mai 2017 à 15:12
A voir également:
- Détection d'écriture dans cellule
- Écriture facebook - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Écriture miroir - Guide
- Ecriture en gras - Guide
4 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
23 mai 2017 à 13:50
23 mai 2017 à 13:50
Bonjour,
Détecter non, mais effacer ou rétablir après le changement oui... Car la procédure Change ne s'exécute qu'après la validation. Tu peux éventuellement, émettre un message quand la cellule est sélectionnée via la procédure SelectionChange mais ce dernier apparaîtra même si elle n'est pas éditée...
Détecter non, mais effacer ou rétablir après le changement oui... Car la procédure Change ne s'exécute qu'après la validation. Tu peux éventuellement, émettre un message quand la cellule est sélectionnée via la procédure SelectionChange mais ce dernier apparaîtra même si elle n'est pas éditée...
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
Modifié le 23 mai 2017 à 14:36
Modifié le 23 mai 2017 à 14:36
Bonjour
Il te faut mettre le contenu de la cellule cliquée dans une variable globale à la selection de la cellule visée
Quelque chose de ce genre
RQ. Si tu ne veux que nettoyer la cellule ceci suffira (sans procédure Change)
Cdlmnt
Il te faut mettre le contenu de la cellule cliquée dans une variable globale à la selection de la cellule visée
Quelque chose de ce genre
Dim v ' variable globale, tu peux en preciser le type Dim Autorisation1 As Boolean ' vairable affectée quelque part dans tes procedures Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:U")) Is Nothing Then v = Target.Value End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("A:U")) Is Nothing And Autorisation1 = False Then MdPDemande.Show If Autorisation1 = False Then Target.Value = "": Exit Sub End If End Sub
RQ. Si tu ne veux que nettoyer la cellule ceci suffira (sans procédure Change)
If Autorisation1 = False Then Target.Value = v: Exit Sub
Cdlmnt
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié le 23 mai 2017 à 14:41
Modifié le 23 mai 2017 à 14:41
Re,
Pourquoi faire une usine à gaz alors que protéger l'onglet par mot de passe plus + verrouiller les cellules le fait très bien ?
Mais bon... Le code dans trois composants différents :
• Dans un module standard quelconque (Module1 par exemple), les premières lignes avant tout autre code, les déclarations des variables publiques :
• dans le composant de l'onglet concerné :
Dans l'userform MdPDemande :
À tester... Maintenant, si je suis utilisateur de ton fichier et que je dois taper le mot de passe chaque fois que je dois modifier une des cellules des colonnes A à U, je te garantis que je pète un câble !...
À plus,
ThauTheme
Pourquoi faire une usine à gaz alors que protéger l'onglet par mot de passe plus + verrouiller les cellules le fait très bien ?
Mais bon... Le code dans trois composants différents :
• Dans un module standard quelconque (Module1 par exemple), les premières lignes avant tout autre code, les déclarations des variables publiques :
Public V As Variant Public AD As Range Public Autorisation1 As Boolean
• dans le composant de l'onglet concerné :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) V = Target.Value Set AD = Target If Not Application.Intersect(Target, Range("A:U")) Is Nothing Then MdPDemande.Show End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Autorisation1 = False Then AD.Value = V End Sub
Dans l'userform MdPDemande :
Private Sub TextBox1_Change() TextBox1.PasswordChar = "*" If TextBox1.Value = "Demandeur" Then Autorisation1 = True Unload Me End If End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If Autorisation1 = False Then Cancel = True End Sub
À tester... Maintenant, si je suis utilisateur de ton fichier et que je dois taper le mot de passe chaque fois que je dois modifier une des cellules des colonnes A à U, je te garantis que je pète un câble !...
À plus,
ThauTheme
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
23 mai 2017 à 15:12
23 mai 2017 à 15:12
Re,
je comprends pas ton problème. Tu peux mettre le mot de passe de protection de l'onglet dans le code en dur en activant la protection. Ainsi il ne te le demande pas :
Idem pour la déprotection :
je comprends pas ton problème. Tu peux mettre le mot de passe de protection de l'onglet dans le code en dur en activant la protection. Ainsi il ne te le demande pas :
ActiveSheet.Protect "Ton_Mot_de_passe"
Idem pour la déprotection :
ActiveSheet.Unprotect "Ton_Mot_de_passe"
23 mai 2017 à 13:57
Du coup admettons, en partant de ma situation :
J'ai ces codes :
Dans le Change
Userform
La UserForm est une fenêtre qui demande un mot de passe.
Ce qu'il ce passe, c'est que dès que j'aurais modifier une cellule, il va me demander un mot de passe. Or, si l'utilisateur ne rentre pas le mot de passe (quitte la userform), le contenu de la cellule reste alors que si l'utilisateur n'a pas le mot de passe, il n'est pas censé la changer.
Comment faire pour que, si l'utilisateur quitte la userform sans renseigner de mot de passe, la cellule soit "vidée" ?