! VBA détecter n° semaine et prévenir avant !
Résolu/Fermé
tony020422
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
-
29 mai 2009 à 09:13
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 - 1 juin 2009 à 14:46
tony020422 Messages postés 445 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 19 janvier 2010 - 1 juin 2009 à 14:46
A voir également:
- ! VBA détecter n° semaine et prévenir avant !
- En préparation avant distribution ✓ - Forum Consommation & Internet
- Vba range avec variable ✓ - Forum VB / VBA
- Dans la présentation à télécharger, sarah avait encadré directement le titre de certaines diapositives avant d’automatiser cette mise en forme pour tout le document. sur quelles diapositives avait-elle encadré directement le titre ? ✓ - Forum Bureautique
- Copain d'avant ✓ - Forum Réseaux sociaux
- Erreur 1004 vba ✓ - Forum VB / VBA
11 réponses
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
29 mai 2009 à 10:32
29 mai 2009 à 10:32
bonjour essaye comme ça!
a placer dans un module sino utilise No.semaine ou weeknum suivant la version
Public Function Semaine(date1 As Date) As Integer
Dim Sem As Integer
Sem = Int((date1 - DateSerial(Year(date1), 1, 1) + _
((Weekday(DateSerial(Year(date1), 1, 1)) + 1) _
Mod 7) - 3) / 7) + 1
If Sem = 0 Then
Sem = Semaine(DateSerial(Year(date1) - 1, 12, 31))
ElseIf a = 53 And (Weekday(DateSerial(Year(date1), 12, 31)) - 1) _
Mod 7 <= 3 Then
Sem = 1
End If
Semaine = Sem
End Function
Sub test()
x = Semaine(Date)
End Sub
a placer dans un module sino utilise No.semaine ou weeknum suivant la version
Public Function Semaine(date1 As Date) As Integer
Dim Sem As Integer
Sem = Int((date1 - DateSerial(Year(date1), 1, 1) + _
((Weekday(DateSerial(Year(date1), 1, 1)) + 1) _
Mod 7) - 3) / 7) + 1
If Sem = 0 Then
Sem = Semaine(DateSerial(Year(date1) - 1, 12, 31))
ElseIf a = 53 And (Weekday(DateSerial(Year(date1), 12, 31)) - 1) _
Mod 7 <= 3 Then
Sem = 1
End If
Semaine = Sem
End Function
Sub test()
x = Semaine(Date)
End Sub
tony020422
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
29 mai 2009 à 10:46
29 mai 2009 à 10:46
Bjr !! merci de t'etre penché sur la question.....
donc ton script je le met dans le module 1, sachant que j'ai comme script dans Feuil1:
'macro qui s'exécute à chaque fois qu'il y a un changement sur une des cellules de la feuille
'"Target" représente la cellule qui a changé
Private Sub Worksheet_Change(ByVal Target As Range)
'si c'est la cellule B5 qui a changé
If Target.Column = 5 Then
'si la cellule n'est pas vide
If Target.Text <> vbNullString Then
'afficher le message
MsgBox "n'oubliez pas de facturer pour régulariser la situation 2"
End If
End If
End Sub
permettant de prévenir de fiare qqch qd la cellule de la colonne 5 est remplie....
et ds thisworkbook je met rien?
pr tester ton script, faudrait que lorsque je mette s25 qqch ds la colonne F rien ne se passe mais lorsque je mette s24 il m'affiche ce qu'il faut car on est actuellement en s22!
donc ton script je le met dans le module 1, sachant que j'ai comme script dans Feuil1:
'macro qui s'exécute à chaque fois qu'il y a un changement sur une des cellules de la feuille
'"Target" représente la cellule qui a changé
Private Sub Worksheet_Change(ByVal Target As Range)
'si c'est la cellule B5 qui a changé
If Target.Column = 5 Then
'si la cellule n'est pas vide
If Target.Text <> vbNullString Then
'afficher le message
MsgBox "n'oubliez pas de facturer pour régulariser la situation 2"
End If
End If
End Sub
permettant de prévenir de fiare qqch qd la cellule de la colonne 5 est remplie....
et ds thisworkbook je met rien?
pr tester ton script, faudrait que lorsque je mette s25 qqch ds la colonne F rien ne se passe mais lorsque je mette s24 il m'affiche ce qu'il faut car on est actuellement en s22!
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
29 mai 2009 à 11:23
29 mai 2009 à 11:23
je n'ai pas toutes les infos donc c'est difficile.
dans thisworbook il faudrait faire un test à l'ouverture
Private Sub Workbook_Open()
'je lance la macro de teste
End Sub
ce que je t'ai fournis te donne la semaine actuelle sous forme numérique.
il faut donc que tu teste tes cellules ( mais je ne sais pas lesquelles)
par exemple sur cette structure
je n'ai pas tout tester car je n'ai pas de données.
sub testsemaine()
la semaine=Semaine(date)
dim c as variant
dim s as integer
dim r as variant
for each c in range("f1:F1000") ' ajuster
s=val(mid(c.value,2,len(c.value)-1) 'on supprime le s et on convertit en valeur
if s >lasemaine +2 then
' rien à faire c'est du boulot dans 3 semaine ou plus
else
'c'est à faire ou déjà fait
r= msgbox("Il faut vérifier ou preparer ce travail " & C.address & " en " & c.value)
endif
next
end sub
dans thisworbook il faudrait faire un test à l'ouverture
Private Sub Workbook_Open()
'je lance la macro de teste
End Sub
ce que je t'ai fournis te donne la semaine actuelle sous forme numérique.
il faut donc que tu teste tes cellules ( mais je ne sais pas lesquelles)
par exemple sur cette structure
je n'ai pas tout tester car je n'ai pas de données.
sub testsemaine()
la semaine=Semaine(date)
dim c as variant
dim s as integer
dim r as variant
for each c in range("f1:F1000") ' ajuster
s=val(mid(c.value,2,len(c.value)-1) 'on supprime le s et on convertit en valeur
if s >lasemaine +2 then
' rien à faire c'est du boulot dans 3 semaine ou plus
else
'c'est à faire ou déjà fait
r= msgbox("Il faut vérifier ou preparer ce travail " & C.address & " en " & c.value)
endif
next
end sub
tony020422
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
29 mai 2009 à 11:29
29 mai 2009 à 11:29
ok j'ai bien coompris merci le bidouilleuR c'est super sympa!!!! ce que tu me proposes va vraiment me sauver!!
C'est vraimennt kool, tu me depatouilles bcp!
Mille merci, bonne journée ensoleillée!!
C'est vraimennt kool, tu me depatouilles bcp!
Mille merci, bonne journée ensoleillée!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
29 mai 2009 à 13:17
29 mai 2009 à 13:17
Pas de problème
si tu souhaites améliorer ça peut se faire..
Bonne journée ... ensoleillée.
A++
si tu souhaites améliorer ça peut se faire..
Bonne journée ... ensoleillée.
A++
tony020422
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
29 mai 2009 à 14:26
29 mai 2009 à 14:26
ca marche super!!
par contre pourrais tu m'expliquer la provenance de tes calculs ? car je ne sais pas du tout à quoi cela correspond !
par contre pourrais tu m'expliquer la provenance de tes calculs ? car je ne sais pas du tout à quoi cela correspond !
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
29 mai 2009 à 14:46
29 mai 2009 à 14:46
heu!
j'ai gratté du clavier...
j'ai eu besoin à une époque .. de calculer les semaines et les jours féries ^^ .
donc pour le calcul de la semaine j'ai utilisé principalement "dateserial" ( vba)
car pour excel une date est est nombre particulier.
weekday et le reste mid , mod (modulo) etc sont des fonctions de vba.
je te conseille le site de VBFRANCE et si tu es perspicaces tu y retrouveras certains amis de CCM. ; )
lis le tutorial de vba , je le trouve très bien pour commencer.
A+
je dois partir.
si tu as besoin d'autres explication je te répondrais
j'ai gratté du clavier...
j'ai eu besoin à une époque .. de calculer les semaines et les jours féries ^^ .
donc pour le calcul de la semaine j'ai utilisé principalement "dateserial" ( vba)
car pour excel une date est est nombre particulier.
weekday et le reste mid , mod (modulo) etc sont des fonctions de vba.
je te conseille le site de VBFRANCE et si tu es perspicaces tu y retrouveras certains amis de CCM. ; )
lis le tutorial de vba , je le trouve très bien pour commencer.
A+
je dois partir.
si tu as besoin d'autres explication je te répondrais
tony020422
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
29 mai 2009 à 14:55
29 mai 2009 à 14:55
ok pas de souci merci pr tt!!
bonne journée, @ bientôt !!
bonne journée, @ bientôt !!
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
30 mai 2009 à 10:14
30 mai 2009 à 10:14
j'ai pensé à ton soucis.
Un bon site pour commencer ou pour continuer
https://excel.developpez.com/cours/
A+
Un bon site pour commencer ou pour continuer
https://excel.developpez.com/cours/
A+
tony020422
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
1 juin 2009 à 14:10
1 juin 2009 à 14:10
Bonjour tout le monde,
j'ai eu une idée que je ne sais pas programmer.....
j'aimerais que lorsque je mette dans la colonne I intitulée "date de fin de travaux" un numéro de semaine (planification) comme par exemple "s25" un pop up apparaisse lorsque l'on sera effectgivement en semaine 25 pr me prévenir de penser a facturer.....
J'espère que vous comprenez ce que j'aimerais faire ;-)
Merci par avance pr le coup de main !!
j'ai eu une idée que je ne sais pas programmer.....
j'aimerais que lorsque je mette dans la colonne I intitulée "date de fin de travaux" un numéro de semaine (planification) comme par exemple "s25" un pop up apparaisse lorsque l'on sera effectgivement en semaine 25 pr me prévenir de penser a facturer.....
J'espère que vous comprenez ce que j'aimerais faire ;-)
Merci par avance pr le coup de main !!
tony020422
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
1 juin 2009 à 14:46
1 juin 2009 à 14:46
Solution trouvée !!!
peu académique certes mais ca marche....... !!
peu académique certes mais ca marche....... !!