Rapport de message :*
 

double condition sur l'expression "If not intersect"

Titre du sujet : double condition sur l'expression "If not intersect"
par gladius le 06/07/2011 12:11:15

Bonjour

J'aurai une petite question sur la synthaxe de l'expression suivante.

If Not (Intersect(Target, [N6:O30]) Is Nothing) Then

ci-dessous mon code:

'Accès au calendrier par un double clic en 1e cas
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       
    If Not (Intersect(Target, [N6:O30]) Is Nothing) Then
        'Si on est pas dans la plage N6:O30 on sort
        Cancel = True
        'on annule l'entrée dans la cellule
        Calendar.Show
        'Lancement de l'USF calendar
    End If
   
    If Cells(Target.Row, "N") <> "" And Cells(Target.Row, "O") <> "" And Cells(Target.Row, "N") > Cells(Target.Row, "O") Then
        MsgBox "la date de fin ne peut être supérieure à la date de début", vbExclamation, "Erreur de date"
        Target.ClearContents
    End If
         
End Sub


Vu que ce tableau possede une frontiere orange il est normal de ne pas activer la fonction calendrier :

D'ou ma façon de noter

If Not (Intersect(Target, [N6:O30]) Is Nothing) And .Range ("N6:030").Interior.ColorIndex = xlNoneThen ......
...lancer le calendrier.

Apres le double clic, rien ne se passe.


De plus, comme le tableau peut evoluer par les boutons d'insertion/suppression de ligne, j'ai tenté de mettre une fonction ci-dessous (si la ligne appartient au tableau.

Private Function ActivLignOK() As Boolean
'La ligne active appartient-elle au tableau ?
Dim Lmax As Long
        Lmax = .Cells(.Rows.Count, 1).End(xlDown).Row
    If ActiveCell.Row > 6 And ActiveCell.Row <= Lmax Then ActivLignOK = True
End Function


Ce code est placé avant le 1e, cela pour chasser la zone approximative N6:O30, mais je suis confronté à une erreur de compilation.