Userform Calendrier à améliorer

Bonjour le forum

J'ai ajouté un userform Calendrier à ce fichier, mais je voudrais qu'il ne soit pas obligatoire de double-cliquer sur la cellule pour l'activer, qu'il s'ouvre du seul fait de mettre le curseur dans la cellule date. Est-ce possible?

Aussi, est-il possible que ce soit le mois courant qui apparaisse lorsque l'userform est actionné. Par exemple, si je suis quelques mois sans utiliser le formulaire, et bien le calendrier s'ouvre au mois de la création de la macro?

Merci pour votre aide.

Bonsoir,

à tester dans Feuil1 :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Not Intersect(Target, Range("A2")) Is Nothing Then
      Calendrier.Show
   End If
End Sub

J'avais mangé la 2ème question...

VDMICHEL a écrit :

Aussi, est-il possible que ce soit le mois courant qui apparaisse lorsque l'userform est actionné. Par exemple, si je suis quelques mois sans utiliser le formulaire, et bien le calendrier s'ouvre au mois de la création de la macro?

Private Sub UserForm_Initialize()
  Me.monthview1 = Now
End Sub

Super, merci Fred35!

Bonne semaine à tous

Bonjour Fred35

Bon! En faisant quelques tests après les modifications, j'ai constaté que le calendrier apparaissait au moment de cliquer sur le bouton Envoyer!

Comment éviter cela?

Merci

Bonsoir,

J'ai regardé mais je ne vois pas.

Pourriez vous ôter le mot de passe sur la feuille.

Cdt,

Bonjour Fred35

j'ai ôté la protection.

merci pour votre aide

Bonsoir,

Je viens de regarder et je ne comprends pas pourquoi d'autant que je ne vois aucun appel vers le calendrier...

Peut être des personnes plus le vba pourront t'aider. Désolé de ne pouvoir faire mieux...

Bonsoir Fred35

D'accord merci quand même. J'ai l'impression qu'il doit y avoir un conflit de commande entre les boutons Envoyer... et ceux de l'userform Message courriel, ou peut-être là où se trouve le curseur dans le fichier! Mais ce n'est qu'une hypothèse que je ne saurais vérifier!

à bientôt...

Bonjour,

Essaye de remplacer, dans ta Sub SendMail() (91ème ligne de cette procédure) :

    Range("A1:I22").Select
    Application.CutCopyMode = False
    Selection.Locked = False
    Selection.FormulaHidden = False

Par :

    Range("A1:I22").Locked = False
    Range("A1:I22").FormulaHidden = False

Bonjour pijaku

malheureusement, ce remplacement ne corrige pas le problème!

Lorsque je clique sur le bouton « Envoyez votre demande », c'est le calendrier qui apparaît!

Bonjour le forum

le problème semble venir de ce code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Not Intersect(Target, Range("A2")) Is Nothing Then
      Calendrier.Show
   End If
End Sub

Avec l'actuel code, je n'ai pas ce problème:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Me.Range("A2")) Is Nothing Then Calendrier.Show     
    Cancel = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Cells.Count = 1 Then
    If Not Intersect(Target, Me.Range("A2")) Is Nothing Then   
        If CalendrierOK <> True And Target.Value <> "" Then
            Target.Value = ""
            MsgBox ("Vous devez double-cliquer sur cette cellule pour la compléter.")
            Target.Select
        End If
    End If
End If

If Not Intersect(Target, Range("A13:A22")) Is Nothing Then
Call validation
End If

End Sub

Je souhaitais éviter le double click!

Merci pour vos pistes de solutions.

Bonjour

Le problème vient de ton Select

Rows("1:22").Select

Je te propose cette solution mais sans garantie, car chez moi, ton code bloque sur

Set session = CreateObject("Notes.NOTESSESSION")

    Set session = CreateObject("Notes.NOTESSESSION")
    Set Maildb = session.GETDATABASE("", "")
    On Error GoTo ErrorHandler
        Maildb.OPENMAIL
    On Error GoTo 0

    'Rows("1:22").Select
    'Application.CutCopyMode = False
    'Selection.Copy

    WorkbookActuel = ActiveWorkbook.Name
    'Workbooks.Add
    Sheets("Formulaire").Copy
    NouveauWorkbook = ActiveWorkbook.Name

    'ActiveSheet.Paste
    'Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.Zoom = 100
    'Application.CutCopyMode = False
    With ActiveWorkbook

Bonjour,

remplacer la macro de la manière suivante :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$2" Then
      Calendrier.Show
      Cancel = True
End If
End Sub

A+

Rechercher des sujets similaires à "userform calendrier ameliorer"