Bonsoir Zesuila, Jean-Marie (Chti160), le Forum.
Il a fallu que je réflechisse un peu, pour savoir qu'il fallait mettre en option explicite :
Public Z1 As Range
Public Z2 As Range
Non Zesuila, en complément de la réponse (judicieuse) de Jean-Marie, je t'informe que tu n'as point besoin de déclarer "
public" Z1 et Z2 au
niveau module (c'est-à-dire juste en dessous d'Option Explicit). La déclaration de ces variables objets doit plutôt se faire ici, au
niveau procédure comme suit :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Z1 as Range
Dim Z2 as Range
set Z1=Range("D
")
set Z2=Range("H:H")
If Not Application.Intersect(Target, Union(Z1,Z2))Is Nothing Then
Application.Run "mDFcalShow"
End If
End Sub
Tu aurais pu aussi écrire directement :
If Not Application.Intersect(Target, Union(Range("D
"), Range("H:H"))) Is Nothing Then...
ou
(ce qui revient au même)
If Not Application.Intersect(Target, Union(Columns(4), Columns(8))) Is Nothing Then...
Entre le passage de D et H, le calendrier reste en activité, ce qui fait que en arrivant à H j'ai un message d'erreur comme quoi le calendrier reste ouvert. La seule solution est de faire echap. entre les 2 cellules
Lorsqu'il est ouvert, en bas et à gauche du mDF_Calendrier, tu as la représentation d'un petit
cadenas. Il s'agit d'une option "Verrou" permettant le maintien de l'affichage du Calendrier après sélection d'une date. Pour régler ton pb, il suffit simplement de désactiver cette option en cliquant sur ce
cadenas (il se transforme en
clé)... Ainsi, le calendrier se fermera à chaque sélection d'une date et tu n'auras donc cette erreur dans ton code.
Pour info, un clic sur l'icone ">>" (en bas à droite), te permet l'accès aux explications et autres options du Calendrier...
Cordialement,
Didier_mDF