Datepicker - Dans la colonne d'un tableau

Bonjour,

Je cherchais une solution pour utiliser un datepicker et je suis finalement arrivé ici ^^
Disposant de Office365 en 64bits, impossible de faire sans la solution (fonctionnelle !!!) évoqué sur votre page : https://www.excel-pratique.com/fr/fonctions-complementaires/date-picker

Tout est en place et un rapide petit essai est concluant.
Merci beaucoup pour ce pack !

Alors personnelement, n'aillant pas les aptitudes nécessaires pour adapter le code donné en exemple aux besoins que j'ai, je sollicite votre aide afin que le code VBA s'applique, dès lors que l'on double clic sur une colonne entière. Plus précisément, sur les cellules d'une colonne contenues dans un tableau (donc identifiable par une en-tête).

Voici le code de départ :

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

    If Target.Address = "$A$1" Then 'Si cellule A1

        Cancel = True

        maDate = datePicker(Range("A1"))

        If maDate <> "" Then 'Si date choisie par l'utilisateur
            Range("A1") = maDate
        End If

    End If

End Sub

Idéalement, remplacer la référence absolue A1 par l'étiquette de ma colonne. Au pire, une plage du style A1:A9 fera l'affaire.
J'ai essayé mais sans succès :(

Merci beaucoup pour votre aide.
En vous souhaitant, une bien bonne nouvelle année 2022.

Bonjour,

Voici le principe avec la référence à adapter (Tableau est le nom du tableau, Colonne le nom de la colonne) :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If not intersect(Target, range("Tableau[Colonne]")) is nothing Then 'Si cellule A1
    Cancel = True
    maDate = datePicker(target)
    If maDate <> "" Then target = maDate
End If
End Sub

Très bon réveillon et excellente année 2022 à vous !

Cdlt,

Merci beaucoup @3GB !

Par contre, un petit "effet indésirable" :

Avec le code précédement adapté, dès le double clic dans une cellule, la date du jour s'inscrit, même si l'on ne valide pas notre choix dans le calendrier.

Alors que de base(code initial), la cellule reste vide tant que notre choix n'est pas validé. Comportement que je préfère car il évite de remplir des cases que l'on ne souhaite pas forcement...

Bonjour Gotcha et tous mes voeux pour cette nouvelle année !

Je n'ai rien changé de particulier à ce niveau là. Avant, c'était la valeur de A1 qui rentrait en argument du datepicker et maintenant, c'est la cellule cliquée qui appartient à la colonne définie.

Je ne connais pas la fonction datepicker donc je ne saurais pas expliquer le résultat mais j'imagine qu'il dépend de la valeur rentrée en argument.

Cdlt,

Par défaut, le contenu dans la cellule cliqué est pris en compte pour définir la date du datepicker. Si le contenu est vide, la date du jour est utilisé dans le datepicker MAIS rien n'est inscrit dans la dite-cellule tant que la validation du datepicker n'est pas effective.
Autrement dit, il est tout à fait possible de double-cliquer sur une cellule qui contient déjà une date (différente du celle du jour d'aujourd'hui) ce qui ouvre le datepicker centré sur cette date, de pouvoir naviguer dans le calendrier et refermer se dernier sans valider et sans avoir modifié la valeur initial de la dite cellule.

Peut-être manque t-il un petit système de prise en compte de la valeur de la cellule dans votre code @3GB pour venir compenser cette différente ?

Merci

C'est bon j'ai trouvé la solution :

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

    If Not Application.Intersect(Target, Range("Tableau_des_commandes[Livraison prévue le]")) Is Nothing Then
        Cancel = True
        maDate = datePicker(Target.Value, 2, , 1, "Date de livraison")
        If maDate <> "" Then
            Target.Value = maDate
        End If
    End If
End Sub

Il fallait pointer sur "Target.Value" et non simplement "Target"

Encore merci pour votre aide @3GB !!!

Pour un tout petit peu plus loin, j'ai voulu pousser le vis pour ajouter la fonctionnalité du datepicker toujours dans la même feuille mais dans une seconde colonne également, le tout, avec une personnalisation qui diffère légèrement.

Du coup, voici le code :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
'
' Permet d'insérer un "date-picker" dans une colonne. ATTENTION à bien installer et activer tout ce qu'il faut sur les postes de travail de manière identique !
'
' Source : https://www.excel-pratique.com/fr/fonctions-complementaires/date-picker
' Forum : https://forum.excel-pratique.com/s/goto/1028248

    If Not Application.Intersect(Target, Range("Tableau_des_commandes[Livraison prévue le]")) Is Nothing Then
        Cancel = True
        maDate = datePicker(Target.Value, 2, 1, 1, "Date de livraison")
        If maDate <> "" Then
            Target.Value = maDate
        End If
        ElseIf Not Application.Intersect(Target, Range("Tableau_des_commandes[Date de commande]")) Is Nothing Then
            Cancel = True
            maDate = datePicker(Target.Value, , 1, , "Date de la commande")
            If maDate <> "" Then
                Target.Value = maDate
        End If
    End If

End Sub
Rechercher des sujets similaires à "datepicker colonne tableau"