XL 2016 If not intersect avec autre condition

  • Initiateur de la discussion Initiateur de la discussion Willystic
  • 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 !

Willystic

XLDnaute Nouveau
Bonjour,
J'utilise "If not intersect" afin de donner que 2 valeurs à une cellule dans une plage de cellule ("Bon état" ou "manquant")
Par contre dans cette plage de cellule, il y a des cellules vides et j'aimerai qu'elles soient vérouillées ou que l'on ne puissent pas changer la valeur "vide". Voici la partie du code.
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

'Changement des états en "bon état" ou "Manquant"

  If Not Intersect([H9:S9], Target) Is Nothing Then Target.Value = IIf(Target.Value = "Bon état", "Manquant", "Bon état")
  Cancel = True

End Sub

merci de votre aide.
 
Solution
Bonjour,

Si j'ai bien compris ta demande :
VB:
  If Not Intersect([H9:S9], Target) Is Nothing And Target <> "" Then Target.Value = IIf(Target.Value = "Bon état", "Manquant", "Bon état")
  Cancel = True

Bonne journée
Bonjour,

Si j'ai bien compris ta demande :
VB:
  If Not Intersect([H9:S9], Target) Is Nothing And Target <> "" Then Target.Value = IIf(Target.Value = "Bon état", "Manquant", "Bon état")
  Cancel = True

Bonne journée
 
Salut,
Attention aux cellules fusionnées ...
VB:
  If Not Intersect([H9:S9], Target) Is Nothing Then
        With Target.Cells(1)
           If .Value <> vbNullString Then _
              .Value = IIf(.Value = "Bon état", "Manquant", "Bon état")
        End With
  End If
  Cancel = True

Fonctionne avec une cellule simple ou des cellules fusionnées ( seule la première a une valeur ).

Pourquoi ne pas avoir donné un nom à la plage, cela éviterait de modifier le code si la plage s’agrandit , se réduit ou est déplacée ...
 
Salut,
Attention aux cellules fusionnées ...
VB:
  If Not Intersect([H9:S9], Target) Is Nothing Then
        With Target.Cells(1)
           If .Value <> vbNullString Then _
              .Value = IIf(.Value = "Bon état", "Manquant", "Bon état")
        End With
  End If
  Cancel = True

Fonctionne avec une cellule simple ou des cellules fusionnées ( seule la première a une valeur ).

Pourquoi ne pas avoir donné un nom à la plage, cela éviterait de modifier le code si la plage s’agrandit , se réduit ou est déplacée ...
Merci Calvus et fanch55. J'ai utlisé le"and" de Calvus et ça répond à ma demande.

pour le simple "and" et "nommée une plage" sont des réflexes que je n'ai pas encore. Merci de votre soutien.
 
- 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
9
Affichages
404
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
441
Réponses
16
Affichages
1 K
Retour