Comment bloquer une cellule?

Bonjour,

j'ai un classeur, qui contient une seule feuille, ou je veux inscrire mes operations bancaires.

j'ai fais tous ça, là je veux que si l'operation est un retrait, je veux bloquer la cellule de la ligne courante et la colonne "entrée".

le feuille est en piece jointe: https://www.excel-pratique.com/~files/doc/Operations.xls

Bonjour,

essaie ce code dans l'évènement de feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
    Dim Derlig As Long
    Derlig = Me.[A65000].End(xlUp).Row - 1
    If Not Intersect(Target, Range(Cells(2, 3), Cells(Derlig, 4))) Is Nothing Then
        If Target.Offset(0, IIf(Target.Column = 3, 1, -1)) <> "" Then
            Application.EnableEvents = False
            Target = ""
            Application.EnableEvents = True
        End If
    End If
End If
End Sub

https://www.excel-pratique.com/~files/doc/Operations_v1.xls

non ça marche pas, je peux toujours saisir un montant dans la cellule de la colonne C

Euh.......

Dans ton exemple, tu as une sortie en D3, d'une valeur de 100 €

Et tu dis que tu peux mettre quelque chose en C3?

Sur mon fichier?

Tu as activé les macros?

oui biensur, en fait ce que je veux c que chaque fois que la valeur de la colonne B est "Retrait", la la cellule de la meme ligne de la colonne C se bloque de tel façon que je ne peux rien saisir.

Ok,

j'avais pas bien saisi la demande....

En cours.....

Euh, Retrait, ou Versement, ou Dépôt, ou Virement......

Qu'entends-tu par ces termes?

Un virement, c'est un retrait? c'est ça?

felix a écrit :

Ok,

j'avais pas bien saisi la demande....

En cours.....

Euh, Retrait, ou Versement, ou Dépôt, ou Virement......

Qu'entends-tu par ces termes?

Un virement, c'est un retrait? c'est ça?

non par retrait je veux dire que j'ai pris de l'argent d'un GAB

Re,

par ce code, tu ne peux pas sélectionner une cellule de la colonne C ou D, si le motif de l'opération n'est pas renseigné...

Si le motif est renseigné, tu ne peux que sélectionner la colonne adéquate...

PS, n'oublie pas de supprimer l'ancien code que je t'ai fourni....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
    Dim Derlig As Long
    Derlig = Me.[A65000].End(xlUp).Row - 1
    If Not Intersect(Target, Range(Cells(2, 3), Cells(Derlig, 4))) Is Nothing Then
        If Cells(Target.Row, 2) = "" Then
            Cells(Target.Row, 2).Select
        ElseIf Cells(Target.Row, 2) = "Virement" Then
            Cells(Target.Row, 4).Select
        Else
            Cells(Target.Row, 3).Select
        End If
    End If
End If
End Sub

https://www.excel-pratique.com/~files/doc/Copie_de_Operations_v2.xls

felix a écrit :

Re,

par ce code, tu ne peux pas sélectionner une cellule de la colonne C ou D, si le motif de l'opération n'est pas renseigné...

Si le motif est renseigné, tu ne peux que sélectionner la colonne adéquate...

PS, n'oublie pas de supprimer l'ancien code que je t'ai fourni....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
    Dim Derlig As Long
    Derlig = Me.[A65000].End(xlUp).Row - 1
    If Not Intersect(Target, Range(Cells(2, 3), Cells(Derlig, 4))) Is Nothing Then
        If Cells(Target.Row, 2) = "" Then
            Cells(Target.Row, 2).Select
        ElseIf Cells(Target.Row, 2) = "Virement" Then
            Cells(Target.Row, 4).Select
        Else
            Cells(Target.Row, 3).Select
        End If
    End If
End If
End Sub

https://www.excel-pratique.com/~files/doc/Copie_de_Operations_v2.xls

meme avec ce code, je peux toujours saisir dans la colonne C si la valeur de B est retrait

Re,

on la refait

dans ton fichier exemple, tu as une liste de validation, dans la colonne B, qui n'autorise que "Virement", ou "Versement"

Et toi, tu parles de Retrait, dans la colonne B....

On fait quoi?

felix a écrit :

Re,

on la refait

dans ton fichier exemple, tu as une liste de validation, dans la colonne B, qui n'autorise que "Virement", ou "Versement"

Et toi, tu parles de Retrait, dans la colonne B....

On fait quoi?

Dsl, c vrai dans le fichier que j'ai envoyé y'a pas de retrait lol car chez moi je l'ai ajouté.

bein ce qu'on fait c qu'on ajoute "retrait"; Merci bcp et dsl encore une fois

j'ai modifié un peu ton code, mais ça ne marche pas.

voila ce que j'ai fais:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
    Dim Derlig As Long
    Derlig = Me.[A65000].End(xlUp).Row - 1
    If Not Intersect(Target, Range(Cells(2, 3), Cells(Derlig, 4))) Is Nothing Then
        If Cells(Target.Row, 2).Value = "Retrait" Then
            Cells(Target.Row, 3).EnableEvents = False
        End If
    End If
End If
End Sub

Re,

pour ta peine,

Réfléchis, avec mon code....

suffit de rajouter une condition......

        ElseIf Cells(Target.Row, 2) = "Virement" Or Cells(Target.Row, 2) = "Retrait" Then

Sans rancune, mais fais gaffe, quand tu demandes quelque chose, sois le plus précis possible....

Re,

j'ai modifié un peu ton code

je refuse de porter la paternité de ce code......

.....
Cells(Target.Row, 3).EnableEvents = False 
......

c moi qui l'a fait, mais c quoi le catastrophique dedans?

Re,

tout d'abord, ton fichier modifié....

https://www.excel-pratique.com/~files/doc/Copie_de_Operations_v3.xls

Ensuite

Dans TON code, clique au milieu de EnableEvents, et tape sur F1

Tu verras que cette instruction ne s'applique qu'à "Application"

Cette instruction, à manipuler avec d'extrêmes précautions, désactive les évènements, quels qu'ils soient.....

Éviter de jouer à l'apprenti sorcier avec cette instruction.....

Merci bcp felix, deja pour le code, et en plus mille merci pour l'information car je ne le savais pas.

Merci une autre fois

Rechercher des sujets similaires à "comment bloquer"