OVH Cloud OVH Cloud

Derniere données entrée

8 réponses
Avatar
Jacques
Salut a toutes et tous,

Dans une plage de celulle

Colonnes A,B, C des lignes 22 (Titres en 21) a 52, j'aimerai faire un test
de la dernière donnée entrée dans la colonnes C et m'indiquer dans une
TextBox les valeurs des celules faisant partie de cette lignes sachant que :

En A : J'ai les jours sous forme diminué (Lu pour lundi, Ma pour Mardi
etc...)

En B j'ai le nombre (01,02,03 ...etc)

Et en C des Heures (5,5 ; 6,5 Etc...)

Donc si par exemple la derniere valeurs d'heures est en C10, que cela me
mette dans la TextBox la valeurs de A10 + B10 tout en me mettant le jours
réel (Si Ma Donc Mardi)

Se qui me ferai :

Si Dernière valeur C10 en A10 = Ma et B10 = 02

Donc mon TextBox ou un label peu m'importe :

TextBox 1 ou Label1 = "Dernier jours entré" & valeurs

Et comme il y a des mois avec 28, 29, 30 et 31 jours et que ma plage de
cellule est basée sur des mois a 31 jours, comment faires pour tenir compte
de ce changement de taille de plages

Je ne sais si cela est trés claire, mais je vous remercie d'avance, Ouille

8 réponses

Avatar
CAP2
Salut,

en supposant que tu as créé un textbox de la barre d'outils contrôles et
qu'il s'appelle textbox1.
En supposant toujours que tu as en colonne A tes jours (lu, ma,...) , en
colonne B les numéros et en C les heures.
Tu fais un clic-droit sur l'onglet de ta feuille de calcul, puis "Visualiser
le code".
Puis tu colles ce code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim jour As String
Dim num As Byte

jour = Range("C65000").End(xlUp).Offset(0, -2).Value
num = Range("C65000").End(xlUp).Offset(0, -1).Value

TextBox1 = jour & " " & num

End Sub

Dès que tu vas rentrer un nouveau nombre d'heures, excel va détecter le
dernier de la liste et afficher dans ton textbox la jour et son numéro...

Ca marche ?

CAP2
Avatar
Jacques
CAP2, le forum

Merci, pour ton aide.
L'objet n'était pas dans la bare d'outil, mais dans un UserForm, donc j'ai
adapté ton code.
Ce qui donne :

Private Sub DerniereSaisie()
Dim TheNum As Byte
TheNum = CByte(Month(Date))
Dim jour As String
Dim num As Byte
'Pour afficher le dernier jours entré
jour = Range("C65536").End(xlUp).Offset(0, -2).Value
num = Range("C65536").End(xlUp).Offset(0, -1).Value
lblDeniereSaisie = "Dernier jour saisie le " & jour & " " & num & " " &
Worksheets(TheNum).Name
End Sub

Par-contre je n'arrive pas a dire que si le jour est égale à "Lu", alors
écrire "Lundi"

Merci, Ouille

"CAP2" a écrit dans le message de
news:
Salut,

en supposant que tu as créé un textbox de la barre d'outils contrôles et
qu'il s'appelle textbox1.
En supposant toujours que tu as en colonne A tes jours (lu, ma,...) , en
colonne B les numéros et en C les heures.
Tu fais un clic-droit sur l'onglet de ta feuille de calcul, puis
"Visualiser

le code".
Puis tu colles ce code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim jour As String
Dim num As Byte

jour = Range("C65000").End(xlUp).Offset(0, -2).Value
num = Range("C65000").End(xlUp).Offset(0, -1).Value

TextBox1 = jour & " " & num

End Sub

Dès que tu vas rentrer un nouveau nombre d'heures, excel va détecter le
dernier de la liste et afficher dans ton textbox la jour et son numéro...

Ca marche ?

CAP2




Avatar
Jacques
Re a toutes et tous

C'est bon je pense avoir trouvé :
J'ai rajouté :

If jour = "Lu" Then jour = "Lundi"

Ce qui me donne :

Private Sub DerniereSaisie()
Dim TheNum As Byte
TheNum = CByte(Month(Date))
Dim jour As String
Dim num As Byte

If jour = "Lu" Then jour = "Lundi"
'Pour afficher le dernier jours entré
jour = Range("C52").End(xlUp).Offset(0, -2).Value
num = Range("C52").End(xlUp).Offset(0, -1).Value
If jour = "Lu" Then jour = "Lundi"

lblDeniereSaisie = "Dernier jour saisie le " & jour & " " & num & " " &
Worksheets(TheNum).Name
End Sub

Encore merci, Ouille
"Jacques" a écrit dans le message de
news:416c3544$0$26715$
CAP2, le forum

Merci, pour ton aide.
L'objet n'était pas dans la bare d'outil, mais dans un UserForm, donc j'ai
adapté ton code.
Ce qui donne :

Private Sub DerniereSaisie()
Dim TheNum As Byte
TheNum = CByte(Month(Date))
Dim jour As String
Dim num As Byte
'Pour afficher le dernier jours entré
jour = Range("C65536").End(xlUp).Offset(0, -2).Value
num = Range("C65536").End(xlUp).Offset(0, -1).Value
lblDeniereSaisie = "Dernier jour saisie le " & jour & " " & num & " " &
Worksheets(TheNum).Name
End Sub

Par-contre je n'arrive pas a dire que si le jour est égale à "Lu", alors
écrire "Lundi"

Merci, Ouille

"CAP2" a écrit dans le message de
news:
Salut,

en supposant que tu as créé un textbox de la barre d'outils contrôles et
qu'il s'appelle textbox1.
En supposant toujours que tu as en colonne A tes jours (lu, ma,...) , en
colonne B les numéros et en C les heures.
Tu fais un clic-droit sur l'onglet de ta feuille de calcul, puis
"Visualiser

le code".
Puis tu colles ce code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim jour As String
Dim num As Byte

jour = Range("C65000").End(xlUp).Offset(0, -2).Value
num = Range("C65000").End(xlUp).Offset(0, -1).Value

TextBox1 = jour & " " & num

End Sub

Dès que tu vas rentrer un nouveau nombre d'heures, excel va détecter le
dernier de la liste et afficher dans ton textbox la jour et son
numéro...



Ca marche ?

CAP2








Avatar
Jacques
Re, Re, Arheu

Bon cela fonctionne, y'a t-il moyen de simplifier cette procédure

If jour = "Lu" Then jour = "Lundi"
If jour = "Ma" Then jour = "Mardi"
If jour = "Me" Then jour = "Mercredi"
If jour = "Je" Then jour = "Jeudi"
If jour = "Ve" Then jour = "Vendredi"
If jour = "Sa" Then jour = "Samedi"
If jour = "Di" Then jour = "Dimanche"

Merci, Ouille
"Jacques" a écrit dans le message de
news:416c3b39$0$28783$
Re a toutes et tous

C'est bon je pense avoir trouvé :
J'ai rajouté :

If jour = "Lu" Then jour = "Lundi"

Ce qui me donne :

Private Sub DerniereSaisie()
Dim TheNum As Byte
TheNum = CByte(Month(Date))
Dim jour As String
Dim num As Byte

If jour = "Lu" Then jour = "Lundi"
'Pour afficher le dernier jours entré
jour = Range("C52").End(xlUp).Offset(0, -2).Value
num = Range("C52").End(xlUp).Offset(0, -1).Value
If jour = "Lu" Then jour = "Lundi"

lblDeniereSaisie = "Dernier jour saisie le " & jour & " " & num & " " &
Worksheets(TheNum).Name
End Sub

Encore merci, Ouille
"Jacques" a écrit dans le message de
news:416c3544$0$26715$
CAP2, le forum

Merci, pour ton aide.
L'objet n'était pas dans la bare d'outil, mais dans un UserForm, donc
j'ai


adapté ton code.
Ce qui donne :

Private Sub DerniereSaisie()
Dim TheNum As Byte
TheNum = CByte(Month(Date))
Dim jour As String
Dim num As Byte
'Pour afficher le dernier jours entré
jour = Range("C65536").End(xlUp).Offset(0, -2).Value
num = Range("C65536").End(xlUp).Offset(0, -1).Value
lblDeniereSaisie = "Dernier jour saisie le " & jour & " " & num & " " &
Worksheets(TheNum).Name
End Sub

Par-contre je n'arrive pas a dire que si le jour est égale à "Lu", alors
écrire "Lundi"

Merci, Ouille

"CAP2" a écrit dans le message de
news:
Salut,

en supposant que tu as créé un textbox de la barre d'outils contrôles
et



qu'il s'appelle textbox1.
En supposant toujours que tu as en colonne A tes jours (lu, ma,...) ,
en



colonne B les numéros et en C les heures.
Tu fais un clic-droit sur l'onglet de ta feuille de calcul, puis
"Visualiser

le code".
Puis tu colles ce code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim jour As String
Dim num As Byte

jour = Range("C65000").End(xlUp).Offset(0, -2).Value
num = Range("C65000").End(xlUp).Offset(0, -1).Value

TextBox1 = jour & " " & num

End Sub

Dès que tu vas rentrer un nouveau nombre d'heures, excel va détecter
le



dernier de la liste et afficher dans ton textbox la jour et son
numéro...



Ca marche ?

CAP2












Avatar
AV
Bon cela fonctionne, y'a t-il moyen de simplifier cette procédure


Une :

D = "Sa"
x = Switch(D = "Lu", "Lundi", D = "Ma", "Mardi", D = "Me", "Mercredi", _
D = "Je", "Jeudi", D = "Ve", "Vendredi", D = "Sa", "Samedi", D = "Di",
"Dimanche")
MsgBox x

Une autre :

D = "Je"
tbl1 = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di")
tbl2 = Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi",
"Dimanche")
MsgBox Application.Index(tbl2, Application.Match(D, tbl1, 0))

PS : tu gagnerais à utiliser de vraies dates... mais ceci est une autre
histoire....
AV

Avatar
Jacques
Alain VALLON, le forum

Alain, merci pour ta réponse et voila le code pour mon cas :

Private Sub DerniereSaisie() 'Pour afficher le dernier jours entré
Dim TheNum As Byte
TheNum = CByte(Month(Date))
Dim jour As String
Dim num As Byte, D, tbl1, tbl2
jour = Range("C52").End(xlUp).Offset(0, -2).Value
num = Range("C52").End(xlUp).Offset(0, -1).Value
D = jour
tbl1 = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di")
tbl2 = Array("Lundi ", "Mardi ", "Mercredi ", "Jeudi ", "Vendredi ", "Samedi
", _
"Dimanche ")
lblDeniereSaisie = "Dernier jour saisie le " & Application.Index(tbl2,
Application.Match(D, tbl1, 0)) & num & " " & Worksheets(TheNum).Name '& jour
& " " & num & " " & Worksheets(TheNum).Name
End Sub

Pour répondre a ton P-S :

En faite comme j'avais un tableau avec une Colonne pour les jours De A21 (Y
compris le titre de la colonne) à A52 Avec cette Formule dans les celulles :


=CHOISIR(JOURSEM(DATE($AI$1;$A$20;B22));"Di";"Lu";"Ma";"Me";"Je";"Ve";"Sa")

Et en AI l'année en cours

Et une colonne B pour le numéro du jour

Il est vrai que j'aurais pu mettre les jours en entier, mais j'avais un
manque de place dans mon tableau.

Pour finir, j'aimerai pouvoir inclure un test a l'ouverture de cet UserForm
de manière a tester si le mois d'avant toutes les celulles on étées
remplient sauf les Samedi, Dimanche et Mardi avant d'envoyer les données de
saisie dans le nouveau mois, car pour le moment cela envoie les données
directement dans la feuille du mois en cours.

voici le code a l'ouverture de l'UserForm dont une partie m'a été créer par
deux personnes du net, (Pour accexder a la feuille du mois et pour les
heures dans la liste) merci a eux :

Private Sub UserForm_Initialize()
Dim TheNum As Byte
TheNum = CByte(Month(Date))

USF_SaisieHeures.Caption = "Saisie des heures en " & Worksheets(TheNum).Name
frm_AbsNourice.Caption = Sheets("CoordonnéesBebe").lblNomEtPrenom
FrmAbsEnfant.Caption = Sheets("CoordonnéesBebe").lblPrenom
frmRécapitulatifJours.Caption = "Jour de saisie"
frmRécapitulatifMois.Caption = "Cumul en " & Worksheets(TheNum).Name
With Sheets("CoordonnéesBebe")
If .lblSexe = "G" Then
USF_SaisieHeures.BackColor = &HFFC0C0
frm_SaisieHeures.BackColor = &HFFC0C0
frmRécapitulatif.BackColor = &HFFC0C0
frmRécapitulatifJours.BackColor = &HFFC0C0
frmRécapitulatifMois.BackColor = &HFFC0C0
frmRécapitulatifSaisie.BackColor = &HFFC0C0
frm_Absences.BackColor = &HFFC0C0
frm_AbsNourice.BackColor = &HFFC0C0
FrmAbsEnfant.BackColor = &HFFC0C0
Calendar1.BackColor = &HFFC0C0
End If
If .lblSexe = "F" Then
USF_SaisieHeures.BackColor = &HFFC0FF
frm_SaisieHeures.BackColor = &HFFC0FF
frmRécapitulatif.BackColor = &HFFC0FF
frmRécapitulatifJours.BackColor = &HFFC0FF
frmRécapitulatifMois.BackColor = &HFFC0FF
frmRécapitulatifSaisie.BackColor = &HFFC0FF
frm_Absences.BackColor = &HFFC0FF
frm_AbsNourice.BackColor = &HFFC0FF
FrmAbsEnfant.BackColor = &HFFC0FF
Calendar1.BackColor = &HFFC0FF
End If
End With
With Sheets(TheNum)
txtCumulMois.Value = .Range("Q17")
If .Range("AF17") > 0 Then
cbxMensualisation.Visible = False
Else
cbxForfait.Visible = True
End If
End With
For i = 0 To 23
cbxHeureArrivee.AddItem i & Min
cbxHeureArrivee.AddItem i & Min1
Next i
J = 0
Calendar1 = Now
With ListeDate
.ColumnCount = 3
.ColumnWidths = "60;30;30"
End With
DerniereSaisie
BloqueListes
BloqueCaseAcocher frm_Absences
End Sub

J'espère être assez explicit, merci, Ouille

"AV" a écrit dans le message de
news:
Bon cela fonctionne, y'a t-il moyen de simplifier cette procédure


Une :

D = "Sa"
x = Switch(D = "Lu", "Lundi", D = "Ma", "Mardi", D = "Me", "Mercredi", _
D = "Je", "Jeudi", D = "Ve", "Vendredi", D = "Sa", "Samedi", D = "Di",
"Dimanche")
MsgBox x

Une autre :

D = "Je"
tbl1 = Array("Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di")
tbl2 = Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi",
"Dimanche")
MsgBox Application.Index(tbl2, Application.Match(D, tbl1, 0))

PS : tu gagnerais à utiliser de vraies dates... mais ceci est une autre
histoire....
AV






Avatar
AV
Pour finir, j'aimerai pouvoir inclure un test a l'ouverture de cet UserForm


Mes excuses mais je n'ai pas assez de temps pour m'occuper de cette "suite"

AV

Avatar
Jacques
Alain Vallon, le forum

Pas grave, j'essaye de trouver.
Merci beaucoup, Ouille
"AV" a écrit dans le message de
news:%
Pour finir, j'aimerai pouvoir inclure un test a l'ouverture de cet
UserForm



Mes excuses mais je n'ai pas assez de temps pour m'occuper de cette
"suite"


AV