Doubleclick sur deux plages deux actions différentes (VBA)

Bonjour, je veux doubliquer sur une plage de cellule et réaliser une action. Et doubler cliquer sur une autre et faire une autre action.

En farfouillant, j'ai trouvé

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Intersect(Target, Range("F3:BG38")) Is Nothing Then Exit Sub

If Target.Value = "I" Then

Target.Value = "o"

Else

Target.Value = "I"

End If

End Sub

Qui me permet, en cliquant sur une plage F3/BG38 de rajouter I ou de passer à 0 si il y deja un I.

Je voulais rajouter une autre plage et faire une autre action. J'ai pensé rajouter un private sub worksheet before... mais il semble qu'il ne peut y en avoir qu'un ....

J'ai essayé de rajouter un If Intersect(Target, Range.... en dessous en me disant qu'il va le réaliser car le premier est pas concerné, mais nada :/.

Comment puis-je faire, en gros, un DOUBLE Private Sub Worksheet_Before....? Du style :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Intersect(Target, Range(Plage 1) Is Nothing Then Exit Sub

COMMANDE 1

If Intersect(Target, Range(Plage 2) Is Nothing Then Exit Sub

COMMANDE 2

End Sub

Merci

If Not Intersect(Target, Range("F3:BG38")) Is Nothing Then
    If Target.Value = "I" Then

    Else

    End If

ElseIf Not Intersect(Target, Range("XX:XX")) Is Nothing Then

End If

On me dit else sans if :s

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("F3:BG38")) Is Nothing Then Exit Sub
If Target.Value = "I" Then
    Target.Value = "o"
  Else
    Target.Value = "I"
  End If
ElseIf Not Intersect(Target, Range("B7")) Is Nothing Then
  Cells(2, 2) = 2
  End If
End Sub

Bonjour,

Tu as ajouté exit sub à tort.

Pense à indenter ton code et utiliser la balise de mise en forme (Code) stp.

Merci pour nos yeux

eric

Bonjour.

Je ne sais pas à quoi sert le exit sub^^, c'est juste un copié collé du net.

En le tirant, j'ai :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("F3:BG38")) Is Nothing Then
If Target.Value = "I" Then
    Target.Value = "o"
  Else
    Target.Value = "I"
  End If
  ElseIf Not Intersect(Target, Range("B7")) Is Nothing Then
  Cells(2, 2) = 1
  End If
End Sub
 

avec ce code, même la première partie ne fonctionne plus, les I ne se remplace plus pas des 0.

EDIT: même avec le code de base, qui fonctionne, sans le exit sub, plus rien ne fonctionne ;s

Effectivement, tu as aussi oublié le Not :

If Not Intersect(...,..) is nothing then

Si l'intersection n'est pas vide alors ...

eric

Ho punaise :p ça fonctionne, merci

J'aime juste comprendre ce que je fais quand même, quand tu dis l'interaction, c'est l'interaction entre mes cellules et ma souris?

Donc si elle est pas vide (inexistante) ===> c'est que je clique???

Donc en gros, le private sub prévient que je vais double clique et le if not intersect vérifie si oui ou non j'utilise le double clique?

Non, j'ai dit intersection

Si l'intersection des 2 plages est vide c'est que tu as cliqué en dehors de F3:BG38

Et comme tu veux savoir si tu as cliqué dedans...

eric

Je crois ne pas comprendre

Si je prends la plage B2 (prenons une seule cellule) et B4. l'intersection entre les deux est... forcément vide non? Vu qu'elle ne se touche pas.

Bonjour,

Si, tu as compris.

Et si tu cliques sur B4 au lieu de B2 l'intersection n'est plus vide. Donc tu as cliqué B4, ce que tu veux savoir.

Toi tu calcules l'intersection entre F3:BG38 et la cellule cliquée pour savoir si tu es dedans ou pas.

eric

Ok, mon ficher semble terminé et il fonctionne comme je veux

(Quoi que je pense encore à rajouter autre chose, mais pour plus tard ^^)

Un tout grand merci à toi en tout cas.

Ok.

N'oublie pas de mettre en résolu dans le message avec la bonne réponse.

Bonne continuation.

eric

En fait j'ai encore une petite question.

L'un de mes codes indique des dates dans une ligne, du genre 22/01.

Je voudrais bien analyser la colonne de la date si elle est comprise entre deux dates que je définie.

Mais je ne trouve pas la fonction.

Si A1 = 22/01

A2 = date 1

A3 = date 2

Je voudrais un truc du genre :

IF A1>A2 and A1<A3 then

Mais rien ne passe, aussi bien avec des dateval ou date.

Je voudrais aussi que le VBA m'écrive jj/mm, mais que dans la cellule, c'est considéré comme jj/mm/aaaa. Exactement comme ça se passe si j'écris manuellement 22/11 dans la cellule, dans la barre c'est bien écris 22/11/1900 (bon l'année est pas bonne ^^)

Pour la date en vba, j'utilise format (now, "dd/mm")

Merci

Erreur

Rechercher des sujets similaires à "doubleclick deux plages actions differentes vba"