message specifique a l'ouverture d'un fichier

Le
j
Bonjour à tous

Voilà ce que je souhaite faire : avoir un message spécifique lors de
l'ouverture du fichier.
Je m'explique avec un exemple simple, restera à l'adapter une fois bien
compris.

J'ai un fichier avec plusieurs données en :

Colonne A : Code
Colonne B : Nom
Colonne C : Date d'expiration

Je souhaiterai que lorsque j'ouvre le fichier plusieurs messages s'affiche
avec le Code, le No
Un si la date d'expiration est a 60 j
Un autre si la date d'expiration est a 30j
et un autre sir la date d'expiration est dépassée

La référence étant la date du jour

Merci de votre aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #23190051
Bonjour,
Ceci peut-être......

Dans le Thisworkbook
'---------
Private Sub Workbook_Open()
Call jj
End Sub
'----------------
Dans un module standard
'--------------
Sub jj()
With Sheets("feuil1")
derlg = .Cells(Rows.Count, "C").End(3).Row
For i = 2 To derlg
If Date - .Cells(i, 3) = -60 Then MsgBox "Expiration dans 60 Jours pour" & vbLf & Cells(i, 1) & vbLf &
Cells(i, 2) & vbLf & Cells(i, 3)
If Date - .Cells(i, 3) = -30 Then MsgBox "Expiration dans 30 Jours pour" & vbLf & Cells(i, 1) & vbLf &
Cells(i, 2) & vbLf & Cells(i, 3)
If Date > .Cells(i, 3) Then MsgBox "Date dépassée de " & Date - .Cells(i, 3) & " jour(s) pour" & vbLf &
Cells(i, 1) & vbLf & Cells(i, 2) & vbLf & Cells(i, 3)
Next
End With
End Sub
'----------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201103/cijiOVl45g.xls

--
Salutations
JJ


""
Bonjour à tous

Voilà ce que je souhaite faire : avoir un message spécifique lors de
l'ouverture du fichier.
Je m'explique avec un exemple simple, restera à l'adapter une fois bien
compris.

J'ai un fichier avec plusieurs données en :

Colonne A : Code
Colonne B : Nom
Colonne C : Date d'expiration

Je souhaiterai que lorsque j'ouvre le fichier plusieurs messages s'affiche
avec le Code, le No
Un si la date d'expiration est a 60 j
Un autre si la date d'expiration est a 30j
et un autre sir la date d'expiration est dépassée

La référence étant la date du jour

Merci de votre aide



michdenis
Le #23190331
Bonjour,

Au lieu de message, ce qui peut devenir fastidieux, pourquoi ne pas
afficher ces données dans une feuille dédiée à ce type de résultat en
ouverture de fichier.

Pour ce faire :

Dans le thisWorkbook de ton classeur :
'-----------------------------------------------
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Call test

'La feuille où seront copiées les données
Worksheets("Feuil2").Select
Application.ScreenUpdating = False
End Sub
'-----------------------------------------------

Dans un module standard :
'----------------------------------------------
Sub test()
Dim D As Date, Ligne As Long, Sh As Worksheet
Dim DerLig As Long, Rg As Range

'La feuille où seront affichés les données
Set Sh = Worksheets("Feuil2")
Sh.Cells.Clear

'la feuille où sont les données actuellement
With Worksheets("Feuil1")
DerLig = .Range("A:C").Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set Rg = .Range("A1:C" & DerLig)
End With
With Rg
With .Columns(3)
.AutoFilter field:=1, Criteria1:=">=" & (Date - 30) * 1
Sh.Range("A1") = "Items datant de moins de 30 jours"
Sh.Range("A1").Font.Bold = True
.SpecialCells(xlVisible).EntireRow.Copy Sh.Range("A2")
.AutoFilter field:=1, Criteria1:="<" & (Date - 30) * 1, _
Operator:=xlAnd, Criteria2:=">=" & (Date - 60) * 1
Ligne = Sh.Range("A65536").End(xlUp).Row + 2
Sh.Range("A" & Ligne) = "Items datant de plus de 30 jours et de moins de 60 jours"
Sh.Range("A" & Ligne).Font.Bold = True
.SpecialCells(xlVisible).EntireRow.Copy Sh.Range("A" & Ligne + 1)
.AutoFilter field:=1, Criteria1:="<" & (Date - 60) * 1
Ligne = Feuil2.Range("A65536").End(xlUp).Row + 2
Sh.Range("A" & Ligne) = "Items datant de plus de 60 jours."
Sh.Range("A" & Ligne).Font.Bold = True
.SpecialCells(xlVisible).EntireRow.Copy Sh.Range("A" & Ligne + 1)
.AutoFilter
End With
End With
End Sub
'----------------------------------------------



MichD
--------------------------------------------
"" a écrit dans le message de groupe de discussion : 4d776a73$0$17828$

Bonjour à tous

Voilà ce que je souhaite faire : avoir un message spécifique lors de
l'ouverture du fichier.
Je m'explique avec un exemple simple, restera à l'adapter une fois bien
compris.

J'ai un fichier avec plusieurs données en :

Colonne A : Code
Colonne B : Nom
Colonne C : Date d'expiration

Je souhaiterai que lorsque j'ouvre le fichier plusieurs messages s'affiche
avec le Code, le No
Un si la date d'expiration est a 60 j
Un autre si la date d'expiration est a 30j
et un autre sir la date d'expiration est dépassée

La référence étant la date du jour

Merci de votre aide
Jacky
Le #23190411
Re...
Quelques . (point) se sont égarés ;o)
'-----------------
Sub jj()
With Sheets("feuil1")
derlg = .Cells(Rows.Count, "C").End(3).Row
For i = 2 To derlg
If Date - .Cells(i, 3) = -60 Then MsgBox "Expiration dans 60 Jours pour" & vbLf & .Cells(i, 1) & vbLf &
.Cells(i, 2) & vbLf & .Cells(i, 3)
If Date - .Cells(i, 3) = -30 Then MsgBox "Expiration dans 30 Jours pour" & vbLf & .Cells(i, 1) & vbLf &
.Cells(i, 2) & vbLf & .Cells(i, 3)
If Date > .Cells(i, 3) Then MsgBox "Date dépassée de " & Date - .Cells(i, 3) & " jour(s) pour" & vbLf &
.Cells(i, 1) & vbLf & .Cells(i, 2) & vbLf & .Cells(i, 3)
Next
End With
End Sub
'-----------------
Au cas ou la feuille active n'est pas la feuille ou sont placé les informations


--
Salutations
JJ


"Jacky"
Bonjour,
Ceci peut-être......

Dans le Thisworkbook
'---------
Private Sub Workbook_Open()
Call jj
End Sub
'----------------
Dans un module standard
'--------------
Sub jj()
With Sheets("feuil1")
derlg = .Cells(Rows.Count, "C").End(3).Row
For i = 2 To derlg
If Date - .Cells(i, 3) = -60 Then MsgBox "Expiration dans 60 Jours pour" & vbLf & Cells(i, 1) & vbLf &
Cells(i, 2) & vbLf & Cells(i, 3)
If Date - .Cells(i, 3) = -30 Then MsgBox "Expiration dans 30 Jours pour" & vbLf & Cells(i, 1) & vbLf &
Cells(i, 2) & vbLf & Cells(i, 3)
If Date > .Cells(i, 3) Then MsgBox "Date dépassée de " & Date - .Cells(i, 3) & " jour(s) pour" & vbLf &
Cells(i, 1) & vbLf & Cells(i, 2) & vbLf & Cells(i, 3)
Next
End With
End Sub
'----------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201103/cijiOVl45g.xls

--
Salutations
JJ


""
Bonjour à tous

Voilà ce que je souhaite faire : avoir un message spécifique lors de
l'ouverture du fichier.
Je m'explique avec un exemple simple, restera à l'adapter une fois bien
compris.

J'ai un fichier avec plusieurs données en :

Colonne A : Code
Colonne B : Nom
Colonne C : Date d'expiration

Je souhaiterai que lorsque j'ouvre le fichier plusieurs messages s'affiche
avec le Code, le No
Un si la date d'expiration est a 60 j
Un autre si la date d'expiration est a 30j
et un autre sir la date d'expiration est dépassée

La référence étant la date du jour

Merci de votre aide







j
Le #23190991
Merci
C'est pas cela, mais ne peut on pas regrouper les massages dans un seul
MsgBox par catégorie
Car il est vrai qu'avec environ une centaine de cas cela devient fastidieux.

Si vous avez une idée


"Jacky" il83a2$odr$
Re...
Quelques . (point) se sont égarés ;o)
'-----------------
Sub jj()
With Sheets("feuil1")
derlg = .Cells(Rows.Count, "C").End(3).Row
For i = 2 To derlg
If Date - .Cells(i, 3) = -60 Then MsgBox "Expiration dans 60 Jours pour"
& vbLf & .Cells(i, 1) & vbLf & .Cells(i, 2) & vbLf & .Cells(i, 3)
If Date - .Cells(i, 3) = -30 Then MsgBox "Expiration dans 30 Jours pour"
& vbLf & .Cells(i, 1) & vbLf & .Cells(i, 2) & vbLf & .Cells(i, 3)
If Date > .Cells(i, 3) Then MsgBox "Date dépassée de " & Date -
.Cells(i, 3) & " jour(s) pour" & vbLf & .Cells(i, 1) & vbLf & .Cells(i, 2)
& vbLf & .Cells(i, 3)
Next
End With
End Sub
'-----------------
Au cas ou la feuille active n'est pas la feuille ou sont placé les
informations


--
Salutations
JJ


"Jacky" il7t72$6q8$
Bonjour,
Ceci peut-être......

Dans le Thisworkbook
'---------
Private Sub Workbook_Open()
Call jj
End Sub
'----------------
Dans un module standard
'--------------
Sub jj()
With Sheets("feuil1")
derlg = .Cells(Rows.Count, "C").End(3).Row
For i = 2 To derlg
If Date - .Cells(i, 3) = -60 Then MsgBox "Expiration dans 60 Jours
pour" & vbLf & Cells(i, 1) & vbLf & Cells(i, 2) & vbLf & Cells(i, 3)
If Date - .Cells(i, 3) = -30 Then MsgBox "Expiration dans 30 Jours
pour" & vbLf & Cells(i, 1) & vbLf & Cells(i, 2) & vbLf & Cells(i, 3)
If Date > .Cells(i, 3) Then MsgBox "Date dépassée de " & Date -
.Cells(i, 3) & " jour(s) pour" & vbLf & Cells(i, 1) & vbLf & Cells(i, 2)
& vbLf & Cells(i, 3)
Next
End With
End Sub
'----------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201103/cijiOVl45g.xls

--
Salutations
JJ


"" 4d776a73$0$17828$
Bonjour à tous

Voilà ce que je souhaite faire : avoir un message spécifique lors de
l'ouverture du fichier.
Je m'explique avec un exemple simple, restera à l'adapter une fois bien
compris.

J'ai un fichier avec plusieurs données en :

Colonne A : Code
Colonne B : Nom
Colonne C : Date d'expiration

Je souhaiterai que lorsque j'ouvre le fichier plusieurs messages
s'affiche
avec le Code, le No
Un si la date d'expiration est a 60 j
Un autre si la date d'expiration est a 30j
et un autre sir la date d'expiration est dépassée

La référence étant la date du jour

Merci de votre aide











Jacky
Le #23192051
Re..
Car il est vrai qu'avec environ une centaine de cas cela devient fastidieux.



Alors la solution de Denis sera bien plus appropriée.

--
Salutations
JJ


""
Merci
C'est pas cela, mais ne peut on pas regrouper les massages dans un seul MsgBox par catégorie
Car il est vrai qu'avec environ une centaine de cas cela devient fastidieux.

Si vous avez une idée

j
Le #23192061
et si on regroupait les fiches en ne donnant pas le détail dans le msgbox
mais simplement un nombre de fiches concernées par la condition ??

sous la forme Attention 10 fiches sont hors delais de plus de 30 jours ...
etc ..
ce qui ferait monter que 3 msgbox

Bon c'est une idée !!

Merci d'avance

"Jacky" il8ukf$61i$
Re..
Car il est vrai qu'avec environ une centaine de cas cela devient
fastidieux.



Alors la solution de Denis sera bien plus appropriée.

--
Salutations
JJ


"" 4d77bbe8$0$17751$
Merci
C'est pas cela, mais ne peut on pas regrouper les massages dans un seul
MsgBox par catégorie
Car il est vrai qu'avec environ une centaine de cas cela devient
fastidieux.

Si vous avez une idée





Jacky
Le #23192221
Re...
Ceci......??
'-----------------
Sub jj()
With Sheets("feuil1")
derlg = .Cells(Rows.Count, "C").End(3).Row
For i = 2 To derlg
If Date - .Cells(i, 3) = -60 Then msg60 = msg60 & " " & .Cells(i, 1) & " " & .Cells(i, 2) & vbLf
If Date - .Cells(i, 3) = -30 Then msg30 = msg30 & " " & .Cells(i, 1) & " " & .Cells(i, 2) & vbLf
If Date > .Cells(i, 3) Then msgp = msgp & .Cells(i, 1) & " " & .Cells(i, 2) & vbLf
Next
'par groupe
MsgBox "Expiration dans 60 Jours pour" & vbLf & vbLf & msg60 & vbLf
MsgBox "Expiration dans 30 Jours pour" & vbLf & vbLf & msg30 & vbLf
MsgBox "Date dépassée ce jour" & vbLf & vbLf & msgp
'l'ensemble s'il n'y en a pas trop
MsgBox "Expiration dans 60 Jours pour" & vbLf & msg60 & vbLf & _
"Expiration dans 30 Jours pour" & vbLf & msg30 & vbLf & _
"Date dépassée ce jour" & vbLf & msgp
End With
End Sub
'--------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj201103/cijQfBWtbP.xls

--
Salutations
JJ


""
et si on regroupait les fiches en ne donnant pas le détail dans le msgbox mais simplement un nombre de
fiches concernées par la condition ??

sous la forme Attention 10 fiches sont hors delais de plus de 30 jours ... etc ..
ce qui ferait monter que 3 msgbox

Bon c'est une idée !!

Merci d'avance

"Jacky"
Re..
Car il est vrai qu'avec environ une centaine de cas cela devient fastidieux.



Alors la solution de Denis sera bien plus appropriée.

--
Salutations
JJ


""
Merci
C'est pas cela, mais ne peut on pas regrouper les massages dans un seul MsgBox par catégorie
Car il est vrai qu'avec environ une centaine de cas cela devient fastidieux.

Si vous avez une idée









michdenis
Le #23192311
Si tu y tiens, tu pourrais appeler cette procédure à partir
de l'événement Workbook_Open dans le Thisworkbook

Tu adaptes le nom de la feuille au besoin:
'------------------------------------------
Sub test()
Dim D As Date, Ligne As Long
Dim DerLig As Long, Rg As Range

'la feuille où sont les données actuellement
With Worksheets("Feuil1")
DerLig = .Range("A:C").Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set Rg = .Range("A1:C" & DerLig)
End With
Application.ScreenUpdating = False
With Rg
With .Columns(3)
.AutoFilter field:=1, Criteria1:=">=" & (Date - 30) * 1
Message = "Items datant de 30 jours et moins :"
Message = Message & vbCrLf _
& vbTab & Application.Subtotal(3, .Cells) - 1 & _
" données correspond à ce critère." & vbCrLf & vbCrLf

.AutoFilter field:=1, Criteria1:="<" & (Date - 30) * 1, _
Operator:=xlAnd, Criteria2:=">=" & (Date - 60) * 1
Message = Message & "Items datant de plus de 30 jours et de 60 jours et moins :"
Message = Message & vbCrLf _
& vbTab & Application.Subtotal(3, .Cells) - 1 & _
" données correspond à ce critère." & vbCrLf & vbCrLf

.AutoFilter field:=1, Criteria1:="<" & (Date - 60) * 1
Message = Message & "Items datant de plus de 60 jours"
Message = Message & vbCrLf _
& vbTab & Application.Subtotal(3, .Cells) - 1 & _
" données correspond à ce critère." & vbCrLf & vbCrLf
.AutoFilter
Application.ScreenUpdating = True
MsgBox Message, vbInformation + vbOKOnly, "Attention"
End With
End With

End Sub
'------------------------------------------




MichD
--------------------------------------------
"" a écrit dans le message de groupe de discussion : 4d7803f5$0$20770$

et si on regroupait les fiches en ne donnant pas le détail dans le msgbox
mais simplement un nombre de fiches concernées par la condition ??

sous la forme Attention 10 fiches sont hors delais de plus de 30 jours ...
etc ..
ce qui ferait monter que 3 msgbox

Bon c'est une idée !!

Merci d'avance

"Jacky" il8ukf$61i$
Re..
Car il est vrai qu'avec environ une centaine de cas cela devient
fastidieux.



Alors la solution de Denis sera bien plus appropriée.

--
Salutations
JJ


"" 4d77bbe8$0$17751$
Merci
C'est pas cela, mais ne peut on pas regrouper les massages dans un seul
MsgBox par catégorie
Car il est vrai qu'avec environ une centaine de cas cela devient
fastidieux.

Si vous avez une idée





j
Le #23192401
Trop genial
MERCIIIIIIIIIIIIIIIIIIIIIIIII

ça me va je vais adapter tout cela, j'ai la solution grâce a vous

Milles merci


"michdenis" il947s$j4b$
Si tu y tiens, tu pourrais appeler cette procédure à partir
de l'événement Workbook_Open dans le Thisworkbook

Tu adaptes le nom de la feuille au besoin:
'------------------------------------------
Sub test()
Dim D As Date, Ligne As Long
Dim DerLig As Long, Rg As Range

'la feuille où sont les données actuellement
With Worksheets("Feuil1")
DerLig = .Range("A:C").Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set Rg = .Range("A1:C" & DerLig)
End With
Application.ScreenUpdating = False
With Rg
With .Columns(3)
.AutoFilter field:=1, Criteria1:=">=" & (Date - 30) * 1
Message = "Items datant de 30 jours et moins :"
Message = Message & vbCrLf _
& vbTab & Application.Subtotal(3, .Cells) - 1 & _
" données correspond à ce critère." & vbCrLf & vbCrLf

.AutoFilter field:=1, Criteria1:="<" & (Date - 30) * 1, _
Operator:=xlAnd, Criteria2:=">=" & (Date - 60) * 1
Message = Message & "Items datant de plus de 30 jours et de 60
jours et moins :"
Message = Message & vbCrLf _
& vbTab & Application.Subtotal(3, .Cells) - 1 & _
" données correspond à ce critère." & vbCrLf & vbCrLf

.AutoFilter field:=1, Criteria1:="<" & (Date - 60) * 1
Message = Message & "Items datant de plus de 60 jours"
Message = Message & vbCrLf _
& vbTab & Application.Subtotal(3, .Cells) - 1 & _
" données correspond à ce critère." & vbCrLf & vbCrLf
.AutoFilter
Application.ScreenUpdating = True
MsgBox Message, vbInformation + vbOKOnly, "Attention"
End With
End With

End Sub
'------------------------------------------




MichD
--------------------------------------------
"" a écrit dans le message de groupe de discussion :
4d7803f5$0$20770$

et si on regroupait les fiches en ne donnant pas le détail dans le msgbox
mais simplement un nombre de fiches concernées par la condition ??

sous la forme Attention 10 fiches sont hors delais de plus de 30 jours ...
etc ..
ce qui ferait monter que 3 msgbox

Bon c'est une idée !!

Merci d'avance

"Jacky" il8ukf$61i$
Re..
Car il est vrai qu'avec environ une centaine de cas cela devient
fastidieux.



Alors la solution de Denis sera bien plus appropriée.

--
Salutations
JJ


"" 4d77bbe8$0$17751$
Merci
C'est pas cela, mais ne peut on pas regrouper les massages dans un seul
MsgBox par catégorie
Car il est vrai qu'avec environ une centaine de cas cela devient
fastidieux.

Si vous avez une idée








Publicité
Poster une réponse
Anonyme