Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

insérer une date à la première cellule non vide

10 réponses
Avatar
Sunburn
Bonjour,
je souhaite insérer la date du jour, dans ma plage "date", mais sur la
première ligne, sur la première ligne non vide.
Comment puis-je faire, ou adapter mon code actuel ?
Merci.
Yann
----
Private Sub Workbook_BeforePrint(Cancel As Boolean)
[Date].Cells(1) = Format(Now, "dd/mm/yyyy")
End Sub
-----

10 réponses

Avatar
JPMonnier
Bonjour,
Private Sub Workbook_BeforePrint(Cancel As Boolean)
For Each n In [a1:a100]
If n = "" Then
n.Value = Date
Exit Sub
End If
Next
End Sub
--
Cordialement

"Sunburn" a écrit dans le message de
news:
Bonjour,
je souhaite insérer la date du jour, dans ma plage "date", mais sur la
première ligne, sur la première ligne non vide.
Comment puis-je faire, ou adapter mon code actuel ?
Merci.
Yann
----
Private Sub Workbook_BeforePrint(Cancel As Boolean)
[Date].Cells(1) = Format(Now, "dd/mm/yyyy")
End Sub
-----


Avatar
Sunburn
Ok, par contre, il faudrait spécifier la page qui est "DA", ou alors mettre
juste la plage "date" qui fait N5 à N34 de la page "DA".
Merci

"JPMonnier" a écrit :

Bonjour,
Private Sub Workbook_BeforePrint(Cancel As Boolean)
For Each n In [a1:a100]
If n = "" Then
n.Value = Date
Exit Sub
End If
Next
End Sub
--
Cordialement

"Sunburn" a écrit dans le message de
news:
> Bonjour,
> je souhaite insérer la date du jour, dans ma plage "date", mais sur la
> première ligne, sur la première ligne non vide.
> Comment puis-je faire, ou adapter mon code actuel ?
> Merci.
> Yann
> ----
> Private Sub Workbook_BeforePrint(Cancel As Boolean)
> [Date].Cells(1) = Format(Now, "dd/mm/yyyy")
> End Sub
> -----




Avatar
JPMonnier
For Each n In Sheets("DA").[N5:N34]
If n = "" Then
n.Value = Date
Exit Sub
End If
Next
End Sub
Ps : Si tu nommes des plages, évites d'utiliser des noms qui peuvent
correspondre à des fonctions VBA ou Excel
--
Cordialement

"Sunburn" a écrit dans le message de
news:
Ok, par contre, il faudrait spécifier la page qui est "DA", ou alors
mettre
juste la plage "date" qui fait N5 à N34 de la page "DA".
Merci

"JPMonnier" a écrit :

Bonjour,
Private Sub Workbook_BeforePrint(Cancel As Boolean)
For Each n In [a1:a100]
If n = "" Then
n.Value = Date
Exit Sub
End If
Next
End Sub
--
Cordialement

"Sunburn" a écrit dans le message de
news:
> Bonjour,
> je souhaite insérer la date du jour, dans ma plage "date", mais sur la
> première ligne, sur la première ligne non vide.
> Comment puis-je faire, ou adapter mon code actuel ?
> Merci.
> Yann
> ----
> Private Sub Workbook_BeforePrint(Cancel As Boolean)
> [Date].Cells(1) = Format(Now, "dd/mm/yyyy")
> End Sub
> -----






Avatar
Sunburn
Je te remercie, c'est impecable.
Yann

"JPMonnier" a écrit :

For Each n In Sheets("DA").[N5:N34]
If n = "" Then
n.Value = Date
Exit Sub
End If
Next
End Sub
Ps : Si tu nommes des plages, évites d'utiliser des noms qui peuvent
correspondre à des fonctions VBA ou Excel
--
Cordialement

"Sunburn" a écrit dans le message de
news:
> Ok, par contre, il faudrait spécifier la page qui est "DA", ou alors
> mettre
> juste la plage "date" qui fait N5 à N34 de la page "DA".
> Merci
>
> "JPMonnier" a écrit :
>
>> Bonjour,
>> Private Sub Workbook_BeforePrint(Cancel As Boolean)
>> For Each n In [a1:a100]
>> If n = "" Then
>> n.Value = Date
>> Exit Sub
>> End If
>> Next
>> End Sub
>> --
>> Cordialement
>>
>> "Sunburn" a écrit dans le message de
>> news:
>> > Bonjour,
>> > je souhaite insérer la date du jour, dans ma plage "date", mais sur la
>> > première ligne, sur la première ligne non vide.
>> > Comment puis-je faire, ou adapter mon code actuel ?
>> > Merci.
>> > Yann
>> > ----
>> > Private Sub Workbook_BeforePrint(Cancel As Boolean)
>> > [Date].Cells(1) = Format(Now, "dd/mm/yyyy")
>> > End Sub
>> > -----
>>
>>




Avatar
lSteph
Bonjour,
Dans la mesure où cela peut aussi bien être une autre feuille qui soit
imprimée je mettrais plutôt ça ailleurs que dans
le Workbook_BeforePrint, sinon ta feuille sera datée à chaque
uimpression d'une feuille du classeur.

Sub DatetImprimeDa()
Dim r As Long, c As Range, tst As Boolean
tst = False
With Worksheets("Da")
For r = 5 To 34
For Each c In .Rows(r).Cells

If Not IsEmpty(c) _
Then tst = True: Exit For

Next c
If tst Then
.Range("n" & r) = Format(Now, "dd/mm/yyyy")
.PrintOut
Exit For
End If
Next r
If Not tst Then MsgBox "rien à imprimer"
End With
End Sub

'lSteph




On 13 oct, 13:33, Sunburn wrote:
Bonjour,
je souhaite insérer la date du jour, dans ma plage "date", mais sur la
première ligne, sur la première ligne non vide.
Comment puis-je faire, ou adapter mon code actuel ?
Merci.
Yann
----
Private Sub Workbook_BeforePrint(Cancel As Boolean)
[Date].Cells(1) = Format(Now, "dd/mm/yyyy")
End Sub
-----


Avatar
lSteph
Bonsoir,

Alors désolé le mien est parti avant que je voies celui-ci!
;-)
Toutefois je vois pas où est testée la première ligne NON-vide
là je vois la première cellule vide de N5:N34.

Comme quoi des fois on croit comprendre un truc et c'est autre chose.

@+

--
lSteph

On 13 oct, 18:05, Sunburn wrote:
Je te remercie, c'est impecable.
Yann

"JPMonnier" a écrit :

> For Each n In Sheets("DA").[N5:N34]
>     If n = "" Then
>          n.Value = Date
>          Exit Sub
>     End If
> Next
> End Sub
> Ps : Si tu nommes des plages, évites d'utiliser des noms qui peuvent
> correspondre à des fonctions VBA ou Excel
> --
> Cordialement
>
> "Sunburn" a écrit dans le message de
>news:
> > Ok, par contre, il faudrait spécifier la page qui est "DA", ou alor s
> > mettre
> > juste la plage "date" qui fait N5 à N34 de la page "DA".
> > Merci

> > "JPMonnier" a écrit :

> >> Bonjour,
> >> Private Sub Workbook_BeforePrint(Cancel As Boolean)
> >> For Each n In [a1:a100]
> >>   If n = "" Then
> >>     n.Value = Date
> >>     Exit Sub
> >>   End If
> >> Next
> >> End Sub
> >> --
> >> Cordialement
> >>
> >> "Sunburn" a écrit dans le mess age de
> >>news:
> >> > Bonjour,
> >> > je souhaite insérer la date du jour, dans ma plage "date", mais sur la
> >> > première ligne, sur la première ligne non vide.
> >> > Comment puis-je faire, ou adapter mon code actuel ?
> >> > Merci.
> >> > Yann
> >> > ----
> >> > Private Sub Workbook_BeforePrint(Cancel As Boolean)
> >> > [Date].Cells(1) = Format(Now, "dd/mm/yyyy")
> >> > End Sub
> >> > -----


Avatar
JPMonnier
Salut LSteph
Tu as raison, la 1ère ligne n'est pas testée, mais l'énoncé était un peu
ambigu !!

--
Cordialement

"lSteph" a écrit dans le message de
news:
Bonsoir,

Alors désolé le mien est parti avant que je voies celui-ci!
;-)
Toutefois je vois pas où est testée la première ligne NON-vide
là je vois la première cellule vide de N5:N34.

Comme quoi des fois on croit comprendre un truc et c'est autre chose.

@+

--
lSteph

On 13 oct, 18:05, Sunburn wrote:
Je te remercie, c'est impecable.
Yann

"JPMonnier" a écrit :

> For Each n In Sheets("DA").[N5:N34]
> If n = "" Then
> n.Value = Date
> Exit Sub
> End If
> Next
> End Sub
> Ps : Si tu nommes des plages, évites d'utiliser des noms qui peuvent
> correspondre à des fonctions VBA ou Excel
> --
> Cordialement
>
> "Sunburn" a écrit dans le message de
>news:
> > Ok, par contre, il faudrait spécifier la page qui est "DA", ou alors
> > mettre
> > juste la plage "date" qui fait N5 à N34 de la page "DA".
> > Merci

> > "JPMonnier" a écrit :

> >> Bonjour,
> >> Private Sub Workbook_BeforePrint(Cancel As Boolean)
> >> For Each n In [a1:a100]
> >> If n = "" Then
> >> n.Value = Date
> >> Exit Sub
> >> End If
> >> Next
> >> End Sub
> >> --
> >> Cordialement
> >>
> >> "Sunburn" a écrit dans le message
> >> de
> >>news:
> >> > Bonjour,
> >> > je souhaite insérer la date du jour, dans ma plage "date", mais sur
> >> > la
> >> > première ligne, sur la première ligne non vide.
> >> > Comment puis-je faire, ou adapter mon code actuel ?
> >> > Merci.
> >> > Yann
> >> > ----
> >> > Private Sub Workbook_BeforePrint(Cancel As Boolean)
> >> > [Date].Cells(1) = Format(Now, "dd/mm/yyyy")
> >> > End Sub
> >> > -----


Avatar
Sunburn
Bonjour Isteph,
en fait, ce que je recherche, c'est d'avoir un suivi des dates d'impression,
je m'explique (car je n'étais peut être pas assez précis):
je souhaite avoir la date réelle d'impression de chacune des pages qui
sortent sur l'imprimante.
Donc, dans chaque page, j'ai une cellule qui est :
---
=SI($A$4="NA";"N/A";RECHERCHE(2;1/NON(date="");date))
---
qui reprend en fait la dernière cellule non vide de ma plage "date".

Donc, est-ce que ma solution actuelle est optimale, ou bien ton code
pourrait simplifier le traitement ?



"lSteph" a écrit :

Bonjour,
Dans la mesure où cela peut aussi bien être une autre feuille qui soit
imprimée je mettrais plutôt ça ailleurs que dans
le Workbook_BeforePrint, sinon ta feuille sera datée à chaque
uimpression d'une feuille du classeur.

Sub DatetImprimeDa()
Dim r As Long, c As Range, tst As Boolean
tst = False
With Worksheets("Da")
For r = 5 To 34
For Each c In .Rows(r).Cells

If Not IsEmpty(c) _
Then tst = True: Exit For

Next c
If tst Then
..Range("n" & r) = Format(Now, "dd/mm/yyyy")
..PrintOut
Exit For
End If
Next r
If Not tst Then MsgBox "rien à imprimer"
End With
End Sub

'lSteph


Avatar
LSteph
Bonjour,

Vraisemblablement non, car j'avais cru comprendre que tu voulais mettre
une date dans ta plage date sur la première ligne non vide de la feuille
nommée "Da".

Or si

1-ce que propose JP convient. Donc c'est que j'avais mal compris.

2-Ajouté à cela que je lis encore autre chose maintenant et ne saisis
pas du tout pourquoi cette formule qui envisagerait complètement autre
chose.
3-Du coup je ne comprend absolument plus rien à ce que tu demande.

Donc résolument non, je ne crois pas pouvoir dire, ni que ta solution
soit optimale puisque je n'en sais rien et pour sûr non plus que mon
code convienne!


@+

--
lSteph

Sunburn a écrit :
Bonjour Isteph,
en fait, ce que je recherche, c'est d'avoir un suivi des dates d'impression,
je m'explique (car je n'étais peut être pas assez précis):
je souhaite avoir la date réelle d'impression de chacune des pages qui
sortent sur l'imprimante.
Donc, dans chaque page, j'ai une cellule qui est :
---
=SI($A$4="NA";"N/A";RECHERCHE(2;1/NON(date="");date))
---
qui reprend en fait la dernière cellule non vide de ma plage "date".

Donc, est-ce que ma solution actuelle est optimale, ou bien ton code
pourrait simplifier le traitement ?



"lSteph" a écrit :

Bonjour,
Dans la mesure où cela peut aussi bien être une autre feuille qui soit
imprimée je mettrais plutôt ça ailleurs que dans
le Workbook_BeforePrint, sinon ta feuille sera datée à chaque
uimpression d'une feuille du classeur.

Sub DatetImprimeDa()
Dim r As Long, c As Range, tst As Boolean
tst = False
With Worksheets("Da")
For r = 5 To 34
For Each c In .Rows(r).Cells

If Not IsEmpty(c) _
Then tst = True: Exit For

Next c
If tst Then
..Range("n" & r) = Format(Now, "dd/mm/yyyy")
..PrintOut
Exit For
End If
Next r
If Not tst Then MsgBox "rien à imprimer"
End With
End Sub

'lSteph




Avatar
Sunburn
Re,
il est vrai que je suis peut être un peu "fouilli" dans mes demandes.
Merci de ton aide, il faut que je structure un peu plus mes questions, mais
il est vrai que c'est plus facile à imaginer qu'à expliquer ... ,car je
pensais être compréhensif, :'(
Merci encore.
Yann

"LSteph" a écrit :

Bonjour,

Vraisemblablement non, car j'avais cru comprendre que tu voulais mettre
une date dans ta plage date sur la première ligne non vide de la feuille
nommée "Da".

Or si

1-ce que propose JP convient. Donc c'est que j'avais mal compris.

2-Ajouté à cela que je lis encore autre chose maintenant et ne saisis
pas du tout pourquoi cette formule qui envisagerait complètement autre
chose.
3-Du coup je ne comprend absolument plus rien à ce que tu demande.

Donc résolument non, je ne crois pas pouvoir dire, ni que ta solution
soit optimale puisque je n'en sais rien et pour sûr non plus que mon
code convienne!


@+

--
lSteph

Sunburn a écrit :
> Bonjour Isteph,
> en fait, ce que je recherche, c'est d'avoir un suivi des dates d'impression,
> je m'explique (car je n'étais peut être pas assez précis):
> je souhaite avoir la date réelle d'impression de chacune des pages qui
> sortent sur l'imprimante.
> Donc, dans chaque page, j'ai une cellule qui est :
> ---
> =SI($A$4="NA";"N/A";RECHERCHE(2;1/NON(date="");date))
> ---
> qui reprend en fait la dernière cellule non vide de ma plage "date".
>
> Donc, est-ce que ma solution actuelle est optimale, ou bien ton code
> pourrait simplifier le traitement ?
>
>
>
> "lSteph" a écrit :
>
>> Bonjour,
>> Dans la mesure où cela peut aussi bien être une autre feuille qui soit
>> imprimée je mettrais plutôt ça ailleurs que dans
>> le Workbook_BeforePrint, sinon ta feuille sera datée à chaque
>> uimpression d'une feuille du classeur.
>>
>> Sub DatetImprimeDa()
>> Dim r As Long, c As Range, tst As Boolean
>> tst = False
>> With Worksheets("Da")
>> For r = 5 To 34
>> For Each c In .Rows(r).Cells
>>
>> If Not IsEmpty(c) _
>> Then tst = True: Exit For
>>
>> Next c
>> If tst Then
>> ..Range("n" & r) = Format(Now, "dd/mm/yyyy")
>> ..PrintOut
>> Exit For
>> End If
>> Next r
>> If Not tst Then MsgBox "rien à imprimer"
>> End With
>> End Sub
>>
>> 'lSteph