Microsoft 365 VBA Max

  • Initiateur de la discussion Initiateur de la discussion Keiko
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Keiko

XLDnaute Occasionnel
Bonjour à tous,

je fais des petites recherches sur internet et je vois qu'il est possible de bloquer une celulle à un maximum déterminé par une autre celulle.
Par exemple C2 ne peut pas écrire plus que C3.
Pour cela, il faut que je clique sur l'onglet et que je visualise le code et qu'ensuite j'incruste le code vba dedans.
Mais aucun code ne fonctionne ou peut etre que je le fais mal.

Pouvez vous m'aider?
 
Solution
Re,

Si j'ai bien compris la cellule où se fait la saisie (D76) doit être supérieure ou égale à la cellule C73 et inférieure ou égale à la cellule C79 ?

Dans ce cas, la liste de validation aura la formule: =ET(D76>=C73;D76<=C79)
Merci mais comment incorporer le code dans la cellule?

1581418158835.png
 
Dans le code le mot Target dans ce cas recouvre la cellule C2 ...

et toujours dans le code Target.Offset(1,0) signifie la cellule C3 ...

Si tu as besoin du même code ... sans que la valeur maximale ne soit visible dans la Feuille ...
tu peux ajouter 1000 directement dans le code

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then Target = Application.WorksheetFunction.Min(Target, 1000)
End Sub

En espèrant que tout cela soit un peu plus clair ...

P.S. Tu ne m'as toujours pas répondu au sujet du fonctionnement ...
Est-ce-que cela fonctionne ... ou pas ...???
 
Re,

Les macros standard ( avec boutons ) sont stockées dans des modules standards ...

Tandis que les macros qui sont évènementielles ... parce qu'elles sont déclenchées par un évènement ( et pas par un bouton ) doivent êtres stockées dans le module de la feuille concernée ...

Dans ton fichier test ... la macro évènementielle est stockée dans le module de la feuille ...
 
bonjour
si ca ne concerne que C2 et C3
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$2" And Target <> "" Then
        If Target.Value > Target.Offset(1) Then
            Application.EnableEvents = False
            Target = ""
            Application.EnableEvents = True
            MsgBox "plus grand que ""[C3]"""
            Target.Select
        End If
    End If
End Sub

si ça concerne toute les cellules de la colonne "C"
et que le principe est jamais plus grand que celle d'en dessous
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 And Target <> "" Then
        If Target.Offset(1) <> "" And Target.Value > Target.Offset(1) Then
            Application.EnableEvents = False
            Target = ""
            Application.EnableEvents = True
            MsgBox "plus grand que ""[""" & Target.Offset(1).Address(0, 0) & "]"""

            Target.Select
        End If
    End If
End Sub
on peut limiter le champs d'action a certaines lignes aussi
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
373
Réponses
72
Affichages
1 K
Réponses
6
Affichages
150
Réponses
32
Affichages
978
Réponses
10
Affichages
484
Réponses
16
Affichages
846
Retour