IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Bloquer une cellule par rapport à une sélection


Sujet :

Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut Bloquer une cellule par rapport à une sélection
    Bonjour,

    J'avance mon petit bout de chemin sur mon tableau et je vous remercie de votre aide.

    J'ai une autre petite question.

    Voilà, le cas est le suivant : j'ai deux cellules N7 et N8. Dans la cellule N7, j'ai créé par le biais de données, validation des données, une liste ou deux choix sont possibles : O/N (Oui ou Non). Ce que j'aimerais faire, c'est que quand je sélectionne O dans N7, on peut renseigner N8 manuellement, par contre si je mets N ou rien dans N7, cette cellule soit grisée ou bloquée.

    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut Proposition
    Bonjour,
    Blocquer une cellule à mon avis ne peut se faire qu'à travers la protection de la feuille.
    Par défaut toutes les cellules d'une feuille sont verrouillées, mais cela n'a pas d'effet tant que la feuille n'est pas protégée.
    Donc il faut au départ que N7 ne soit pas verrouillée. Les autres cellules où on doit renseigner des données non plus.
    Ensuite on clique droit sur l'onglet de la feuille et on choisi Visualiser le code.
    L'editeur VBA s'ouvre on a deux listes dans le haut de l'écran à gauche il est inscrit General et à droite Déclarations.
    Ouvrir celle de gauche et choisir Worksheet automatiquement celle de droite se met sur SelectionChange, ouvrir la liste et choisir l'évènement Change
    on a alors ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    End Sub
    on tape alors le code dans cette procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
         If Target.Column <> 14 Then Exit Sub 
         If Target.Value = "O" Then 
              Sheets("NomDeLaFeuille").Unprotect
         Else
              Sheets("NomDeLaFeuille").Protect
         End If
    End Sub
    Il faut que la feuille soit protégée au départ et que la cellule N8 soit verrouillée.
    Il sera peut-être nécessaire de reprotéger la feuille après avoir renseigné N8 à vous de voire.
    Il y a peut-être d'autres solutions. Vous verrez bien.
    Edit : Je viens de regarder dans l'aide VBA Excel et j'ai trouver ce qui suit

    Référence du développeur Excel
    Range.Locked, propriété
    Cette propriété renvoie ou définit une valeur de type Variant qui indique si l'objet est verrouillé.
    Syntaxe

    expression.Locked

    expression Variable qui représente un objet Range.

    Remarques


    Cette propriété renvoie la valeur True si l'objet est verrouillé, la valeur False si l'objet peut être modifié avec une feuille de calcul protégée ou la valeur Null si la plage spécifiée contient à la fois des cellules verrouillées et déverrouillées.


    Exemple


    Cet exemple montre comment déverrouiller les cellules A1:G37 contenues dans la feuille Sheet1 de sorte qu'elles puissent être modifiées lorsque la feuille est protégée.

    Visual Basic pour Applications
    Worksheets("Sheet1").Range("A1:G37").Locked = False
    Worksheets("Sheet1").Protect

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Une solution qui empeche la selection de la cellule en utilisant l’évènement Worksheet_SelectionChange

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    'Applique un fond de couleur
    If Target.Address = "$N$7" Then
        If UCase(Target.Value) = "N" Then
            Range("N8").Interior.ColorIndex = 15
        Else
            Range("N8").Interior.ColorIndex = xlNone
        End If
    End If
     
     
    End Sub
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Action si selection N8 interdite
    If Target.Address = "$N$8" And Ucase(Range("N7").Value) = "N" Then
        Range("N7").Select
    End If
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut Merci
    Merci beaucoup pour votre aide.

    Jerome, ta proposition est très intéressante mais malheureusement elle ne passe pas sur excel 2010 ou alors je m'y prends mal.

    J'ai essayé une autre solution un peu plus batarde mais si tu veux jeter un oeil sur mon fichier alors fais moi signe.

    Merci tout de même.

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    affiche ton code

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    Citation Envoyé par CALLEBOUT
    si je mets N ou rien dans N7, cette cellule soit grisée ou bloquée.
    si c'est bien un ou, tu peux te contenter d'une mise en forme conditionelle et griser ta cellule quand N7 = N. elle ne sera pas verrouillée mais sera grise

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Citation Envoyé par alsimbad Voir le message
    si c'est bien un ou, tu peux te contenter d'une mise en forme conditionelle et griser ta cellule quand N7 = N. elle ne sera pas verrouillée mais sera grise
    merci pour ta réponse. Comment faire pour la verrouiller ?

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    si tu tient a la verrouiller, c'est donc un ET dans ta question. il ne te reste que le VBA, suis les conseils écris dans le reste du post

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    tu as une autre posibilité qui t'evite le VBA
    il te faut utiliser une troisieme cellule qui vas remplacer la valeur N8
    tu as une case ou l'utilisateur ecris oui ou non (ton N7)
    tus a une case ou l'utilisateur ne met rien s'il écris N et ou il est sensé ne rien mettre s'il écris oui
    et au cas ou il se goure tu rend la réponse N prioitaire dans une troisiéme cellule, celle utilisée dans ton calcul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    = si (N7 = "N";"";si(N7 = "O";N8)

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2012, 13h37
  2. Décalege d'une cellule par rapport à une autre
    Par anisse9 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/03/2010, 14h52
  3. [XL-2007] Conditionnal formating d'une cellule par rapport à une autre
    Par rouget dans le forum Excel
    Réponses: 5
    Dernier message: 11/11/2009, 00h54
  4. [XL-2007] Position d'une UserForm par rapport à une cellule
    Par ESVBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/10/2009, 18h23
  5. Copier/coller d'une cellule par rapport à une autre
    Par AzelRoth dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/02/2009, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo