Etendre une macro

Bonjour,

Habituellement je trouve toujours une solution en parcourant le forum mais là je sèche.

J'ai créé la macro suivante qui fonctionne à merveille :

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

If Not Application.Intersect(Target, Range("a3")) Is Nothing Then

Dim c As Long

c = 1

With Sheets("Feuil2")

Do Until IsEmpty(.Cells(c, "A"))

c = c + 1

Loop

.Cells(c, "A") = Now:

End With

End If

End Sub

Je souhaiterai maintenant qu'elle puisse s'appliquer à chaque colonne. La ligne 3 étant des noms, j'obtiendrai une liste précise de la présence de chacun en cliquant simplement sur leur nom.

Merci beaucoup de votre aide

Bonsoir,

il va falloir être plus précis, car vous parlez de feuille2, et chaque colonne.

Chaque colonne de la feuille 2 uniquement ?

Savez vous qu'il y a plus de 16000 colonnes par feuille ?

Un petit fichier pour illustrer votre demande est souvent plus précis qu'un long texte (bien que votre demande soit plutôt concise)

@ bientôt

LouReeD

Pardon voilà, plus de précisions :

On m'a demandé de tenir un registre de manière à savoir qui était présent dans les locaux à une date donnée.

Quand je saisis la date recherchée, les noms des présents se mettent en rouge.

Avec la macro que j'ai mise, lorsque je double clique sur le nom de la 1ère personne du tableau, cela recherche la 1ère case vide dans la colonne et y inscrit le jour et l'heure. Ce que je cherche à faire à présent est d'étendre cette macro pour que cela fonctionne sur toutes les colonnes. Je ne sais pas combien de colonne prévoir car je ne sais pas combien de personnes sont susceptibles d'être présentes. Je voudrai juste qu'en cliquant sur le nom cela remplisse la colonne. Peut-être faut-il transposer mon tableau et gérer en lignes ? J'ai aussi testé mais je rencontre le même problème. Quand je double clique sur n'importe quel nom (présentation en colonne ou en ligne) ça me mets toujours la date dans la 1ère case libre de la 1ère colonne et non dans la colonne active. Voilà le fichier ça sera effectivement plus simple à comprendre

4registre.xlsm (17.90 Ko)

Bonjour,

Avec vous une liste nominative des présents potentiels, ou vous arrive-t-il d'en créer en permanence ?

A+

Non pas de liste même si certains sont récurrents, il y a des nouveaux potentiels chaque jour.

Pour l'instant c'est gérable manuellement ou avec une simple macro (double clique dans la case appropriée mets la date et l'heure) mais je voulais me simplifier la tâche future. En effet, je ne connais pas l'ampleur que pourra prendre ce registre, les colonnes qui ne se rempliront pas du tout à la même vitesse...

Moi je ferai seulement 2 colonnes, une avec les dates et l'autre avec les noms..

Attendons de voir la proposition de LouRed.

A+

Bonjour galopin01, cela fait longtemps que nous n'avons pas échangé !

Entre nous vous me mettez la pression, là !

Sinon voici un fichier :

9registre-lrd.xlsm (26.12 Ko)

Il "corrige" votre problème en gardant votre structure de tableau.

Il a juste fallu remplacer le "A" dans votre code par Target.Column, afin de pointer sur la colonne de la cellule double-cliquée.

Ensuite j'ai ajouté l'instruction Cancel = True afin de ne pas entré en mode de saisie dans la cellule suite à ce double-clic;

J'ai également modifié la valeur de départ de "c" car c'est à partir de la ligne 5 qu'il faut entreprendre la recherche de la première cellule vide.

J'ai modifié les formule de la ligne 3 afin de les simplifier, ceci est faisable car au lieu d'écrire "Now" dans les cellules, j'écris "Date", ce qui met la date sans l'heure, cette dernière n'étant pas utile au vue de vos recherches.

J'ai ajouté un test afin de vérifier que la cellule double-cliquée contient bien une valeur afin d'éviter de mettre des dates dans une colonne où il n'y a pas de nom !

Maintenant je rejoins galopin01 dans le sens où ce type de structure ne convient pas à votre projet.

Il faudrait tout simplement comme il l'a dit, une colonne nom et une colonne date, ceci dans un tableau structuré, puis lors de vos recherche de présence faire un filtre sur la colonne date avec la date voulue.

Il est vrai que ce système réclame un peu plus de saisie de donnée mais il sera mieux structuré. Regardez l'exemple en feuille 2 :

Pour une saisie plus rapide il vous est même possible en colonne A première cellule vide sous le tableau de faire la combinaison de touches [Alt]+[Flèche vers le bas], cela vous ouvre une liste de choix avec le nom des personnes déjà inscrites, ou bien vous entrez un nouveau nom , puis la touche [Entrée], la ligne est intégrée au tableau automatiquement, vous faites [Flèche vers la droite] et vous inscrivez la date. Le tour est joué et ceci sans code VBA.

@ bientôt

LouReeD

oh génial ! C'est exactement ce que je voulais ! J'avais pourtant tenter le target.column mais j'avais dû mal l'orthographier

Merci beaucoup d'avoir pris le temps !

J'ai quand même garder le now: car il me faut de la précision et la version 1 est plus simple pour mon usage

Ok pour votre précision.

Avez vous regardez la feuille 2 ?

@ bientôt

LouReeD

Oui j'ai vu la feuille 2 mais je préfère la feuille 1 pour mon utilisation. Merci beaucoup et bonne soirée

Bonne fin de journée.

@ bientôt

LouReeD

Rechercher des sujets similaires à "etendre macro"