BeforeDoubleClick - Range vs Cell

Bonjour à tous

j'ai ce code qui fonctionne bien, mais je voudrais cibler non pas seulement des plages, mais aussi des cellule spécifique pour cette fonction. Comme pour "Q24", etc.

Mes tentatives de modification du code furent infructueuses. Pouvez vous m'éclairer sur la solution.

Merci

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  temp = Array("O", "")
    If Not Application.Intersect(Target, Range("C36:C41")) Is Nothing Then

    With Target
  p = Application.Match(Target, temp, 0)
  If Not IsError(p) Then
    If p = UBound(temp) + 1 Then p = 0
  Else
    p = 0
  End If
  Target = temp(p)
  Cancel = True
    End With
  End If
End Sub

bonsoir

essayer ca :

Pour des cellules unique

If Not Application.Intersect(Target, Union(Range("A1"), Range("A3"))) Is Nothing Then MsgBox "ok"

pour des plages

If Not Application.Intersect(Target, Union(Range("A1:A2"), Range("A4"))) Is Nothing Then MsgBox "ok"

Bonsoir Michel, bonsoir le forum,

Actuellement ton code ne fonctionne que sur la plage C36:C41. Pour ajouter des cellules ou des plages de cellules au fonctionnement du code il faut le spécifier dans la ligne :

If Not Application.Intersect(Target, Range("C36:C41")) Is Nothing Then

en rajoutant la ou les cellules ou la ou les plages de cellules précédée d'une virgule non plus dans une Intersection mais dans une Union. Par exemple :

If Not Application.Intersect(Target, Application.Union(Range("C36:C41"), Range("Q24"), Range(etc...))) Is Nothing Then

[Édition]

Arf ! Amir, que je salue au passage, a été plus rapide sur ce coup !...

Bonjour ThauThème et Amir

un très gros merci à vous deux. C'est impeccable.

Biens à vous!

Bonjour ThauThème

je faisais un dernière vérification avant de transmettre le fichier que j'ai protégé. Et le code fonctionne seulement pour la plage et non plus pour les cellules spécifiques. Y a-t-il une erreur dans le code?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  temp = Array("O", "")
    If Not Application.Intersect(Target, Application.Union(Range("C36:C41"), Range("Q24"), Range("T24"), Range("G28"), Range("L28"), Range("Q28"), Range("L31"), Range("Q31"))) Is Nothing Then
    With Target
  p = Application.Match(Target, temp, 0)
  If Not IsError(p) Then
    If p = UBound(temp) + 1 Then p = 0
  Else
    p = 0
  End If
  Target = temp(p)
  Cancel = True
    End With
  End If
End Sub

https://www.cjoint.com/c/FFcnvHsbMDq

Bonjour,

Ça marche mais tu as dû rajouter une ligne et tu n'en as pas tenu compte dans le code. Tout est décalé d'une ligne...

Le bon code :

If Not Application.Intersect(Target, Application.Union(Range("C37:C42"), Range("G29"), Range("I27"), Range("L29"), Range("L32"), Range("Q25"), Range("Q29"), Range("Q32"), Range("T25"))) Is Nothing Then

..et que je suis bête parfois. J'entends ma femme me dire: arrête de regarder avec des yeux d'homme!

Désolé pour le dérangement. merci

Rechercher des sujets similaires à "beforedoubleclick range"