Déverrouiller cellule si
Joo
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je travail actuellement sur un fichier où toute la feuille est verrouillée à l’exception de la colonne D dans laquelle l'utilisateur peut rentrer un nombre de 1 à 99 (via un menu déroulant). Ma colonne E, est une simple formule de recherche (=vlookup) qui affiche un description du nombre.
Sauf que pour certaines valeurs (en l’occurrence 25 & 50) le descriptif est "Autre" et l'utilisateur doit en préciser la nature.
J'aimerais savoir s'il est possible de faire un petit code qui lorsque la valeur en (D,row) est 25 ou 50, alors ma case (E,row) se déverrouille et supprime la formule à l'intérieur de manière à ce que l'utilisateur puisse faire une saisie libre. Et évidemment si la valeur en (D,row) change et n'est plus 25 ou 50 alors la formule (stocké préalablement dans une variable) revient et ma cellule (E,row) se reverrouille.
Je pense que la procédure devrait se déclencher sur à l'occasion d'un selection_change conditionné sur la colonne D (je ne vois pas d'autres alternative, peut être qqch auquel je n'ai pas pensé ?).
Pour être honnête, j'ai fais plusieurs essais par moi-même mais jamais concluant, je dois être nul en syntaxe ou oublier qqch...
J'espère que quelqu'un pourra me donner un petit coup de main.
Merci d'avance et bonne journée !
Je travail actuellement sur un fichier où toute la feuille est verrouillée à l’exception de la colonne D dans laquelle l'utilisateur peut rentrer un nombre de 1 à 99 (via un menu déroulant). Ma colonne E, est une simple formule de recherche (=vlookup) qui affiche un description du nombre.
Sauf que pour certaines valeurs (en l’occurrence 25 & 50) le descriptif est "Autre" et l'utilisateur doit en préciser la nature.
J'aimerais savoir s'il est possible de faire un petit code qui lorsque la valeur en (D,row) est 25 ou 50, alors ma case (E,row) se déverrouille et supprime la formule à l'intérieur de manière à ce que l'utilisateur puisse faire une saisie libre. Et évidemment si la valeur en (D,row) change et n'est plus 25 ou 50 alors la formule (stocké préalablement dans une variable) revient et ma cellule (E,row) se reverrouille.
Je pense que la procédure devrait se déclencher sur à l'occasion d'un selection_change conditionné sur la colonne D (je ne vois pas d'autres alternative, peut être qqch auquel je n'ai pas pensé ?).
Pour être honnête, j'ai fais plusieurs essais par moi-même mais jamais concluant, je dois être nul en syntaxe ou oublier qqch...
J'espère que quelqu'un pourra me donner un petit coup de main.
Merci d'avance et bonne journée !
A voir également:
- Déverrouiller cellule si
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Excel somme si couleur cellule - Guide
- Aller à la ligne dans une cellule excel - Guide
6 réponses
Bonjour
Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
CDlmnt
Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
CDlmnt
Je pensais que le code serait plus "simple" que ça.
Le code en lui même n'est pas très compliqué (en fait 2 fois 4 lignes). Les constantes en début de module décrivent la configuration des données, elles évitent de toucher au code de la procédure si la configuration cahneg
Cdlmnt
Le code en lui même n'est pas très compliqué (en fait 2 fois 4 lignes). Les constantes en début de module décrivent la configuration des données, elles évitent de toucher au code de la procédure si la configuration cahneg
Cdlmnt
1. Eh oui, la fusion de cellules est souvent/toujours une source de problèmes, et les macros sont très chatouilleuses là dessus.
2. Si tu n'envoies pas un fichier exemple construit comme le vrai, c'est encore une source de problèmes
Un essai qui tient compte de la fusion Exx:Gxx
http://www.cjoint.com/c/GIDitEshQTB
Cdlmnt
2. Si tu n'envoies pas un fichier exemple construit comme le vrai, c'est encore une source de problèmes
Un essai qui tient compte de la fusion Exx:Gxx
http://www.cjoint.com/c/GIDitEshQTB
Cdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu as un excel anglais ?
Essaies ceci
1. Dans la formule
Const formule As String = "=SI(Dxx<>"""";RECHERCHEV(Dxx;Tbase;2;FAUX);"""")"
Essaies de mettre IF à la place de SI (tu as déjà remplacé FAUX et RECHERCHEV !)
2.Remplace FormulaLocal par Formula ici
Range(co2 & li).FormulaLocal = f
Si on ajoute/enlève des lignes/colonnes à une plage nommée dynamiquement, le nom attribué est toujours associé à la nouvelle plage, ça évite de redéfinir la plage à chacune des modifications de celle-ci
Cdlmnt
Essaies ceci
1. Dans la formule
Const formule As String = "=SI(Dxx<>"""";RECHERCHEV(Dxx;Tbase;2;FAUX);"""")"
Essaies de mettre IF à la place de SI (tu as déjà remplacé FAUX et RECHERCHEV !)
2.Remplace FormulaLocal par Formula ici
Range(co2 & li).FormulaLocal = f
Si on ajoute/enlève des lignes/colonnes à une plage nommée dynamiquement, le nom attribué est toujours associé à la nouvelle plage, ça évite de redéfinir la plage à chacune des modifications de celle-ci
Cdlmnt
mais... j'ai oublié le SI
eh oui, ça arrive !
Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)
Bonne journée
eh oui, ça arrive !
Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)
Bonne journée
Je retire ce que j'ai dit... Ca ne fonctionne toujours pas, l'erreur reste la même au même endroit. La macro fonctionne bien lorsque on entre une des valeurs cibles (23 & 61), mais plante lorsqu'il s'agit d'une autre valeur (1 à 99, 23 & 61 exclu)
J'ai essayé plusieurs choses (sans succès) :
- Remplacer FormulaLocal par Formula
- Remplacer FormulaLocal par Value
- Remplacer Range(co2 & li) par Plage
- Remplacer Range(co2 & li) par Plage & FormulaLocal par Formula
- Remplacer Range(co2 & li) par Plage & FormulaLocal par Value
Une autre idée ?
J'ai essayé plusieurs choses (sans succès) :
- Remplacer FormulaLocal par Formula
- Remplacer FormulaLocal par Value
- Remplacer Range(co2 & li) par Plage
- Remplacer Range(co2 & li) par Plage & FormulaLocal par Formula
- Remplacer Range(co2 & li) par Plage & FormulaLocal par Value
Une autre idée ?
Voici le fichier comme demandé : http://www.cjoint.com/c/GICncxkpyLT
Merci pour l'aide