Microsoft 365 renseigner cellule de la même ligne en deux etapes

gilles37

XLDnaute Occasionnel
Bonjour à tous,🙋‍♂️


Je bloque sur cela .

les personnes d’astreintes doivent remplir un userform d’astreinte dont leur nom s’affiche automatiquement ( ca c’est bon c’est fait en VBA )avec début et fin de poste qui renseigne un tableau

Je n’arrive pas à ce que la fin d’astreinte remplisse la cellule de la colonne » fin « de la même ligne suite à la cellule de la colonne début déclaré (ca c'est fait aussi)

Ex : ligne 1 colonne B serait "début" (renseigné au début du poste) ca pas de problème

Ligne 1 colonne « C » serait " fin "(renseigné en fin de poste) Là problème:oops:

une idée 🤔

merci a vous

Et on descendrait de ligne en ligne pour les suivants
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil , gilles37, mapomme, job75

Je plussoie aux conseils précédemment soumis.

=>gilles37
J'ai interprété la chose comme ceci
(NB: Le code ci-dessous est juste illustratif -> à tester sur une feuille vierge)
Macro à exécuter plusieurs fois pour voir les changements sur la feuille.
VB:
Sub Brouillard()
Dim col&
Rows(1).Clear
col = Application.RandBetween(3, 17)
Cells(1, col) = "Début"
Cells(1, Columns.Count).End(xlToLeft).Offset(, 1) = "Fin"
End Sub

Interprétation bis
VB:
Sub Brouillard_BIS()
Cells(Rows.Count, 3).End(xlUp)(2) = "Début: " & Now
Cells(Rows.Count, 4).End(xlUp)(2) = "Fin: " & Now + TimeSerial(0, 0, 30)
End Sub
Là on change de ligne à chaque fois.
 
Dernière édition:

gilles37

XLDnaute Occasionnel
Bonjour 👋

Oups, j ai ete trop vite et oubli de joindre le fichier.
Je souhaite que l userforme5 s ouvre afin que la personne puisse choisir ente debut ou fin d astreinte. En fonction, l userform correspondant s ouvre.
La personne declare son debut d astreinte et valide. Cela rempli une partie du tableau. En fin d astreinte il saisie sa fin dans l autre userform ET cela doit renseigner la suite de la ligne afin d avoir debut et fin.
Ce qui serait top, c est que le salarié ne peut declare sa fin si il n a pas fait de debut.
Merci a vous🙏
 

Pièces jointes

  • astreinte2022.xlsm
    133.8 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour gilles37, le forum,

Votre fichier est inutilement compliqué et très en désordre.

Voyez le fichier joint et le code de l'unique UserForm :
VB:
Option Explicit
Const form$ = "dd/mm/yyyy hh:mm" 'format modifiable
Dim nom$, F As Worksheet, lig& 'mémorise les variables

Private Sub CommandButton1_Click()
F.Cells(lig, 1) = nom
F.Cells(lig, 2) = CDate(Label4)
If Label5 <> "" Then F.Cells(lig, 3) = CDate(Label5)
Unload Me 'ferme l'UserForm
End Sub

Private Sub UserForm_Initialize()
nom = Application.UserName
Label1 = nom
Set F = Feuil1 'CodeName à adapter
F.Protect "toto", UserInterfaceOnly:=True
For lig = 3 To F.[A1].CurrentRegion.Rows.Count
    If F.Cells(lig, 1) = nom And F.Cells(lig, 2) <> "" And F.Cells(lig, 3) = "" Then
        Label4 = Format(F.Cells(lig, 2), form)
        Label5 = Format(Now, form)
        Exit Sub
    End If
Next
Label4 = Format(Now, form)
Label5 = ""
End Sub
Comme vous j'utilise Application.UserName pour repérer l'utilisateur.

Sachez cependant qu'un utilisateur malveillant peut facilement modifier ce nom pour saboter les données d'un autre utilisateur.

A+
 

Pièces jointes

  • Astreintes 2022(1).xlsm
    22.8 KB · Affichages: 7

job75

XLDnaute Barbatruc
Sachez cependant qu'un utilisateur malveillant peut facilement modifier ce nom pour saboter les données d'un autre utilisateur.
Pour éviter qu'un utilisateur connaisse les noms des autres utilisateurs il suffit de masquer avec la propriété Visible à xlSheetVeryHidden la feuille "BDD".

Puis de protégée le VBAProject avec mot de passe, ici toto, seul l'administrateur qui connaît ce mot de passe pourra consulter la feuille "BDD", fichier (2).
 

Pièces jointes

  • Astreintes 2022(2).xlsm
    26.3 KB · Affichages: 4

gilles37

XLDnaute Occasionnel
Bonjour Job75

merci.
Je connaissais pour masquer les feuilles
Je vais rajouter un msgbox pour informer que la saisie a été prise en compte. Ca c'est simple:)

Comment fais tu pour que les bordures de cellule se fassent au fur et a mesure ?
 

gilles37

XLDnaute Occasionnel
Bonjour le Forum,

Avec le commandbutton1, je souhaite qu'il valide, ca c'est ok grâce a Job75, mais aussi que le fichier s'enregistre et se ferme ci dessous code en bleu, mais cela ne fonctionne pas 😩😩

Private Sub CommandButton1_Click()

F.Cells(lig, 1) = Nom
F.Cells(lig, 2) = CDate(Label4)
If Label5 <> "" Then F.Cells(lig, 3) = CDate(Label5)
Unload Me 'ferme l'UserForm

Workbook ("Astreintes 2022(1)(1)"). close true

End Sub

merci pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander