XL 2016 If not intersect avec autre condition

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

Calvus

XLDnaute Barbatruc
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
 

fanch55

XLDnaute Barbatruc
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 ...
 

Willystic

XLDnaute Nouveau
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 076
Membres
103 111
dernier inscrit
Eric68350