Double Click Date en VBA et Tableau Structuré

Bonjour tout le monde,

je reviens sur cette nouvelle demande en partie solutionnée dans un précédent post

Dans un tableau structuré, je souhaite ajouter la possibilité d'indiqué la date du jour en réalisant un simple 'double click"

Pour des cellules aléatoire, j'ai réussi a faire ce que je voulais avec ce code pour alterné Date+Heure, ou simplement Date

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("M3")) Is Nothing Then
Cancel = True
Target.Formula = Now
End If
If Not Intersect(Target, Range("B8")) Is Nothing Then
Cancel = True
Target.Formula = Date
End If
If Not Intersect(Target, Range("B10")) Is Nothing Then
Cancel = True
Target.Formula = Date
End If
End Sub

Mais ce que je souhaite, c'est l'ajouter au tableau structuré (Voir pièce jointe), en sachant que ce tableau va évolué par la suite avec l'ajout de nouvelle données, ou des lignes supprimée etc.... comment l'appliqué de la première cellule à la dernière ?

D'avance merci à tous pour votre aide

25fcy-date-heure.xlsm (14.44 Ko)

Bonjour JujudeVA,

Si ton tableau structuré se nomme "Tableau1" ...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("Tableau1")) Is Nothing Then
        Cancel = True
        Target.Formula = Now
    End If
End Sub

ric

Merci pour ta rapidité RIC c est sympa

Effectivement je comprend mieux le principe de fonctionnement

Cependant, le tableau en pièce jointe n est qu'un exemple pour le forum

Mon véritable tableau contient beaucoup plus de colonne et je ne souhaite laissé cette possibilité du double clik que dans une seule colonne.

(celle ou mes collègues et moi devront inter agir pour mettre la date du jour.

(j'ai peur que si je laisse le double click partout, je vais me retrouvé avec des date du jour a droite et a gauche )

C'est pour cela que je voulais connaitre la syntaxe pour la plage cible, à savoir première cellule du tableau jusqu a la dernière en sachant qu'il y aura ajout, suppression de ligne par la suite.

Tu penses que c est faisable ?

D'avance merci a toi

Bonjour JujudeVA,

Pour limiter à la colonne "Date de traitement" ...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("Tableau1[Date de traitement]")) Is Nothing Then
        Cancel = True
        Target.Formula = Now
    End If
End Sub

ric

Ah oui tout bête 😜

Encore merci à toi je transpose ça dans mon tableau et jte dis si tout est ok 👍

Bonjour JujudeVA,

ric

Re ric,

Oui, je n’étais pas chez moi, je viens de rentré, et essayé ta dernière proposition... ça marche nickel, trop bien

je vais encore t’embêter une dernière fois, et après je serai bon pour mon fichier perso...

Est il possible, via, VBA, de supprimé toutes les lignes du tableau pour faire un "RAZ"

Mais, je souhaite gardé la premier ligne qui contient des formules en "E3" et "F3" tout en effaçant également les données des colonnes "B" "C" et "D"

Mon but est de rattacher cette macro a un bouton pour disons... repartir de zero si besoin... pour ensuite ajouter mes données etc....

je sais pas si je me fais bien comprendre ?

je te joint une capture et le fichier test

image
25fcy-date-heure.xlsm (14.61 Ko)

d'avance je te remercie

Bonjour JujudeVA,

Le plus simple serait de faire un raz total et de réécrire les 2 formules ...

Est-ce que tu peux d’ores et déjà me fournir les formules ?

Zou bien, est-ce que tu serais habile à changer celles aux hasards que je mettrais dans le code ??

ric

Bonjour JujudeVA,

Un essai à adapter ...

Private Sub RazTableau1()

    If Range("Tableau1").Rows.Count > 1 Then Range("Tableau1").Rows.Delete

    Range("Tableau1[Colonne test]").Cells(1, 1).FormulaLocal = "=xxx"
    Range("Tableau1[Colonnes Test 2]").Cells(1, 1).FormulaLocal = "=yyy"
End Sub

ric

Je vais essayé de changer celles que tu mettra au hasard.... le truc, c est que j'ai 7 a 8 colonne dans mon vrai tableau, certaines masquées, certaines avec formules et d'autres non.... mais j'ai créer mon tableau de sorte que toutes les colonnes et cellules qui peuvent etre RAZ se trouvent a gauche du tableau

Re ric,

je viens de faire l'essai dans le fichier test... ca a l air de fonctionner, j'ai su retranscrire avec fonction...

je vais essayé de l'appliquer dans mon "vrai" tableau, je valide ensuite ton post comme solutionné

En tout cas un grand merci, ca me change la vie

Bonjour JujudeVA,

Ça fait plaisir ...

ric

Re Bonsoir ric

J'ai un petit probleme, et je ne comprend pas pk....

image image

Est ce que tu sais pk cela me fait cela ? si je met un espace, cela repasse en noir, mais des que je vais a la ligne, cela revient....

Cela me fait le meme sur mes deux derniere

image

Bonjour JujudeeVA,

Au lieu d'image ... clique sur le bouton </> et colle le bout de code ... s.t.p.

Quand tu tentes de coder une formule , tu dois doubler les guillemets quand cela concerne du texte ...

.formulalocal = "=si(A1=2;""Bon"";""Mauvais"" ................)"

ric

pfffff alors le coup, effectivement avec 2 "".. ca marche... et maintenant..... alors que tout a l eheure dans le fichier test.. nickel

Private Sub RAZIMPORT()

If Range("IMPORT").Rows.Count > 1 Then Range("IMPORT").Rows.Delete

Range("IMPORT[Reception Cpa]").Cells(1, 1).FormulaLocal = "=SIERREUR(DATEVAL([@[Derniere Modif]]);"")"
Range("IMPORT[Bo]").Cells(1, 1).FormulaLocal = "=SIERREUR(RECHERCHEV([@Commune];BDD!B:C;2);"")"
Range("IMPORT[Délai]").Cells(1, 1).FormulaLocal = "=SIERREUR(SI([@[Traitement Cpa]]="";NB.JOURS.OUVRES.INTL([@[Reception Cpa]];AUJOURDHUI();1;JOURSFéries[DATES]);"");"")"
Range("IMPORT[Délai Traitement CPA]").Cells(1, 1).FormulaLocal = "=SI([@[Traitement Cpa]]<>"";NB.JOURS.OUVRES.INTL([@[Reception Cpa]];[@[Traitement Cpa]];1;JOURSFéries[DATES]);"")"
Range("IMPORT[Etat Capella]").Cells(1, 1).FormulaLocal = "=SI([@[Traitement Cpa]]="";""Aprendre en charge"";""Traitement réalisé"")"
Range("IMPORT[Lien Intranet]").Cells(1, 1).FormulaLocal = "=LIEN_HYPERTEXTE(""https://capella.enedis.fr/capella/application#/dossier/" & [@Dossier] & "/C5_PART"";""Lien > Capella"")"
End Sub

image

Bonsoir,

le doublement des guillemets est également nécessaires pour les guillemets : si "Bon" devient ""Bon"", alors "" devient """"
l'erreur n'était pas détecté avant car l'erreur fin d'instruction devait être testée avant celle-ci, donc elle est passée inaperçue... Je pense.

@ bientôt

LouReeD

ca ne fonctionne pas.....

Quel est le message d'erreur ?

@ bientôt

LouReeD

Sinon pour éviter d'écrire les formules, le mieux est de ne pas les effacer :

Sub SupTabStruc()
    ' permet de vider un tableau en gardant les formules
    Application.ScreenUpdating = False
    ' on compte le nombre de ligne
    nbligne = Range("Tableau").ListObject.ListRows.Count
    ' si plus d'une ligne
    If nbligne > 1 Then
        ' on boucle sur les lignes en partant de la fin jusqu'à la deuxième
        ' et on les supprime
        For i = Range("Tableau").ListObject.ListRows.Count To 2 Step -1
            Range("Tableau").ListObject.ListRows(i).Delete
        Next i
    End If
    ' on vide les données de la ligne 1
    Range("Tableau").ListObject.ListRows(1).Delete
End Sub

@ bientôt

LouReeD

Rechercher des sujets similaires à "double click date vba tableau structure"