Bonjour
Je suis novice sur excel. Je dois créer un fiche de pointage pour mon association.
J'ai réalisé une feuille de pointage (Voir photo)
Je souhaiterais insérer heure dans la cellule avec le bouton en fonction du jour sélectionné.
Et que ces cases ne soit pas modifiables
Je sais pas si c'est possible.
Bonjour Florian, et bienvenu sur XLD,
Une image c'est joli, mais pour donner une solution .....
Vous n'auriez pas un petit fichier test, par hasard ?
Alors au pif, à vous d'adapter à votre fichier avec cette macro :
VB:
Sub InsereHeure()
Colonne = Val(Right(Application.Caller, 1)) ' Le N° du bouton correspond à la colonne où insérer
On Error GoTo Fin ' Si date non trouvée alors message erreur
Ligne = Application.Match([F2], [A:A], 0) ' La date est sur quelle ligne
Cells(Ligne, Colonne) = Time ' Insérer le temps
Exit Sub
Fin:
MsgBox "Date non trouvée."
End Sub
Bonjour Florian, et bienvenu sur XLD,
Une image c'est joli, mais pour donner une solution .....
Vous n'auriez pas un petit fichier test, par hasard ?
Alors au pif, à vous d'adapter à votre fichier avec cette macro :
VB:
Sub InsereHeure()
Colonne = Val(Right(Application.Caller, 1)) ' Le N° du bouton correspond à la colonne où insérer
On Error GoTo Fin ' Si date non trouvée alors message erreur
Ligne = Application.Match([F2], [A:A], 0) ' La date est sur quelle ligne
Cells(Ligne, Colonne) = Time ' Insérer le temps
Exit Sub
Fin:
MsgBox "Date non trouvée."
End Sub
je vous remercie pour votre reponse mais je n'ai pas reussi à le mettre.
je vous envoie ci-joint un classeur test.
je souhaitai creer un boouton pour mettre l'heure en fonction de la date et de bloquer les cellules suite a la rentrée de l'heure. avec possibilité de modifier cette cellule avec un mot passe.
je sais pas si je suis assez claire.
Je ne comprend pas votre approche :
1- Il n'y a pas de code
2- Les boutons n'ont pas le bon nom
3- Avec votre méthode le jour courant est toujours en première ligne, ce qui me semble bizarre car si vous changer la date les données ne changeant pas, elles deviendront fausses car affectées au jour où elles ont été écrites.
A mes yeux le planning ne devrait pas bouger et ce sont les écritures qui devraient changer de lignes.
exactement comme vous le demandiez :
Sub InsereHeure()
MotDePasse = "1234" ' Mot de passe à modifier
ActiveSheet.Unprotect Password:=MotDePasse
Colonne = Val(Right(Application.Caller, 1)) ' Le N° du bouton correspond à la colonne où insérer
On Error GoTo Fin ' Si date non trouvée alors message erreur
Ligne = Application.Match([G7], [B:B], 0) ' La date est sur quelle ligne
Cells(Ligne, Colonne) = Time ' Insérer le temps
ActiveSheet.Protect Password:=MotDePasse
Exit Sub
Fin:
MsgBox "Date non trouvée ou feuille protégée."
ActiveSheet.Protect Password:=MotDePasse
End Sub
Bonjour Florian,
La prochaine fois mettez dès le post #1 le fichier et l'ensemble des specs ( comme la protection par ex ), cela évite le rework.
Je ne comprend pas votre approche :
1- Il n'y a pas de code
2- Les boutons n'ont pas le bon nom
3- Avec votre méthode le jour courant est toujours en première ligne, ce qui me semble bizarre car si vous changer la date les données ne changeant pas, elles deviendront fausses car affectées au jour où elles ont été écrites.
A mes yeux le planning ne devrait pas bouger et ce sont les écritures qui devraient changer de lignes.
exactement comme vous le demandiez :
Bref, en PJ votre fichier avec :
VB:
Sub InsereHeure()
MotDePasse = "1234" ' Mot de passe à modifier
ActiveSheet.Unprotect Password:=MotDePasse
Colonne = Val(Right(Application.Caller, 1)) ' Le N° du bouton correspond à la colonne où insérer
On Error GoTo Fin ' Si date non trouvée alors message erreur
Ligne = Application.Match([G7], [B:B], 0) ' La date est sur quelle ligne
Cells(Ligne, Colonne) = Time ' Insérer le temps
ActiveSheet.Protect Password:=MotDePasse
Exit Sub
Fin:
MsgBox "Date non trouvée ou feuille protégée."
ActiveSheet.Protect Password:=MotDePasse
End Sub
Désolé de te déranger encore.
Mais Est-ce que tu crois qu'on peut bloquer les cellules de remplissage (Colonne C,D,F,G) en fonction de la date (Cellule G7) avec mot de passe.
Pour éviter que la personne ne puisse modifier l'heure inscrite sur la cellule. Sauf si il l'a le mot de passe.
Par exemple:
Le 02/06/2023, si on clique sur le bouton "entrée", l'heure s'affiche sur la colonne C. Et je voudrais qu'elle se bloque des qu'il y a la valeur dans la cellule.
Tu penses que c'est possible?
Je te remercie
Avec votre méthode le jour courant est toujours en première ligne, ce qui me semble bizarre car si vous changer la date les données ne changeant pas, elles deviendront fausses car affectées au jour où elles ont été écrites.
Tel qu'il est fait votre outil ne peut pas marcher. Voici pourquoi :
1- Je rentre des horaires à un jour donné :
2- Je change de date :
Résultat :
1- Les horaires restent en place donc affectés au mauvais jour ( 15 janvier au lieu du 6. )
2- Les horaires affectés au 6 janvier sont perdus.
Bonjour
En faite j'essaye de créer une feuille de pointage par mois pour mon association qui comporte une dizaine de salariés.
Avec possibilité de remplir chaque jour avec les heures grâce aux boutons ( En bleu) et que celle-ci ne soit pas modifiables sauf avec mot de passe.
Comme je vous ai expliqué je suis novice dans excel et le langage vba.
Le cellule date mois année était pour nous faciliter à avoir le mois de travail en visuel et de le modifier chaque mois
Donc peut-être que ma feuille et mes codes ne sont pas bons.
Cette feuille sera imprimée tous les mois pour vérifier les heures effectuées et remis a zéro tous les mois. Un peu comme une pointeuse sauf pas possible pour nous de prendre une pointeuse. Donc on essaye de faire avec un tableau Excel. Et que les personnes puissent regarder le tableau et voir le nombre heure effectuées sur le mois.
Je vous remercie déjà pour les remarques et l'aide que vous m'avez apporté.