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

format conditionnel "*- Durée 2h00." pas bon

34 réponses
Avatar
Cinémas Décavision
Bonjour Amis Pros d'A2K,

Dans un format conditionnel comment mettre pour récupérer la fin d'une
chaine
pour que tout ce qui dépasse 2h00 soit en fond rouge...

Egal ou supéérieur à : Voilà ce que j'ai mis "*- Durée 2h00." ce
n'est pas bon...

Naturellement comme en début de chaine, il y a 14h30, 1h45, 19h30, 21h45
Access comprend que TOUT dépasse (est sup. ) 2h00

Là est le problème !!!
à la place de l'étoile * , il me faudrait faire comprendre qu'il ne faut
tenir compte que de la fin aprés le mot durée.

Merci à tous ceux qui m'aiguilleront sur une piste....
Bonne soirée aux News group
Bernard

--
Bernard FANGET Movie Room Manager
Multiplexe Cinema DECAVISION - 7 avenue de Brogny
74000 ANNECY France
Fax : 04 50 52 58 31

pdg@decavision.fr
http://www.decavision.com/

10 réponses

1 2 3 4
Avatar
Eric
Bonjour Bernard

Dans la mise en forme conditionnelle, choisis Exppression au lieu de
valeur et saisis dans la zone de texte:
ExtracChaîne([comm];instrrev([comm];"Durée"))>"Durée 2h00."
Puis la mise en forme que tu veux.

Il te faudra remplacer le champ comm par son vrai nom

Bonjour Amis Pros d'A2K,

Dans un format conditionnel comment mettre pour récupérer la fin d'une
chaine
pour que tout ce qui dépasse 2h00 soit en fond rouge...

Egal ou supéérieur à : Voilà ce que j'ai mis "*- Durée 2h00." ce
n'est pas bon...

Naturellement comme en début de chaine, il y a 14h30, 1h45, 19h30, 21h45
Access comprend que TOUT dépasse (est sup. ) 2h00

Là est le problème !!!
à la place de l'étoile * , il me faudrait faire comprendre qu'il ne faut
tenir compte que de la fin aprés le mot durée.

Merci à tous ceux qui m'aiguilleront sur une piste....
Bonne soirée aux News group
Bernard



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Cinémas Décavision
Bonjour Eric,

Super ... Je ne connaissait hélas pas la formulation.
Beaucoup trop de lacunes pour que je sois seulement moyen...

Merci beaucoup.

à la prochaine question peut-etre ??? Qui sait.

Bonne soirée.
Bernard


--
Bernard FANGET Movie Room Manager
Multiplexe Cinema DECAVISION - 7 avenue de Brogny
74000 ANNECY France
Fax : 04 50 52 58 31


http://www.decavision.com/
Avatar
Cinémas Décavision
Re-Bonjour,
Encore moi

Cela ne fonctionne pas,
J'ai essayé avec nom du Champ : Texte1
Avec la source contrôle : getfacingSched(1)

Mais cela ne fonctionne pas ???

ExtracChaîne([Texte1];instrrev([Texte1];"Durée"))>"Durée 2h00."

ExtracChaîne([getfacingSched(1)];instrrev([getfacingSched(1)];"Durée"))>"Durée
2h00."


Ai-je mal compris ou mal expliqué ...

Pourquoi et comment le bout de la chaine aprés le mot Durée est-il trouvé
par Access ???


Merci Eric si tu peux m'expliquer la base de cette extraction de bout de
chaine...

Merci et à plus.

Bernard
Avatar
Eric
Bonjour Bernard,

La fonction InstrRev() recherche à partir de la fin la position d'un
caractère (ou une suite de craractères) dans un champ, une variable, un
contrôle.
Ici instrrev([comm];"Durée") retournera la position dans comm du mot Durée
ExtracChaîne([comm];instrrev([comm];"Durée")) retourne la suite de
caractères contenus dans le champ comm à partir du D de Durée jusqu'à la
fin de la chaine.
Ainsi si le champ comm contient :
14h30 - Rocky Balboa - Durée 2h30.
ExtracChaîne([comm];instrrev([comm];"Durée")) retourne : Durée 2h30.

Le test ExtracChaîne([comm];instrrev([comm];"Durée"))>"Durée 2h00."
retourne Vrai si Comm contient '14h30 - Rocky Balboa - Durée 2h30.' et
Faux si comm contient '21h30 - Rocky IV - Durée 1h50.' Ce qui permet
d'utiliser la mise en forme conditionnelle.

Un exemple ici : http://cjoint.com/?fulJSOYM6D

Re-Bonjour,
Encore moi

Cela ne fonctionne pas,
J'ai essayé avec nom du Champ : Texte1
Avec la source contrôle : getfacingSched(1)

Mais cela ne fonctionne pas ???

ExtracChaîne([Texte1];instrrev([Texte1];"Durée"))>"Durée 2h00."

ExtracChaîne([getfacingSched(1)];instrrev([getfacingSched(1)];"Durée"))>"Durée
2h00."


Ai-je mal compris ou mal expliqué ...

Pourquoi et comment le bout de la chaine aprés le mot Durée est-il trouvé
par Access ???


Merci Eric si tu peux m'expliquer la base de cette extraction de bout de
chaine...

Merci et à plus.

Bernard




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jac
Bonjour Eric,

si je modifie la première ligne pour obtenir 16h00
14h30 - tralala - durée 16h00.
le formatage conditionnel ne l'affiche pas en rouge...

C'est vrai qu'il ne doit pas y avoir beaucoup de films de cette
durée...

Bonjour Bernard,

La fonction InstrRev() recherche à partir de la fin la position d'un
caractère (ou une suite de craractères) dans un champ, une variable, un
contrôle.
Ici instrrev([comm];"Durée") retournera la position dans comm du mot Durée
ExtracChaîne([comm];instrrev([comm];"Durée")) retourne la suite de caractères
contenus dans le champ comm à partir du D de Durée jusqu'à la fin de la
chaine.
Ainsi si le champ comm contient :
14h30 - Rocky Balboa - Durée 2h30.
ExtracChaîne([comm];instrrev([comm];"Durée")) retourne : Durée 2h30.

Le test ExtracChaîne([comm];instrrev([comm];"Durée"))>"Durée 2h00." retourne
Vrai si Comm contient '14h30 - Rocky Balboa - Durée 2h30.' et Faux si comm
contient '21h30 - Rocky IV - Durée 1h50.' Ce qui permet d'utiliser la mise en
forme conditionnelle.

Un exemple ici : http://cjoint.com/?fulJSOYM6D

Re-Bonjour,
Encore moi

Cela ne fonctionne pas,
J'ai essayé avec nom du Champ : Texte1
Avec la source contrôle : getfacingSched(1)

Mais cela ne fonctionne pas ???

ExtracChaîne([Texte1];instrrev([Texte1];"Durée"))>"Durée 2h00."

ExtracChaîne([getfacingSched(1)];instrrev([getfacingSched(1)];"Durée"))>"Durée
2h00."


Ai-je mal compris ou mal expliqué ...

Pourquoi et comment le bout de la chaine aprés le mot Durée est-il trouvé
par Access ???


Merci Eric si tu peux m'expliquer la base de cette extraction de bout de
chaine...

Merci et à plus.

Bernard






Avatar
Eric
Bonjour Jac,

Oui j'avais pensé à cette situation mais je me suis dit que au delà de
9h59 il ne devait pas y avoir beaucoup de films. Pour tout te dire,
j'avais pensé au film-documentaire de Lanzmann 'Shoah' (durée 9h30).


Bonjour Eric,

si je modifie la première ligne pour obtenir 16h00
14h30 - tralala - durée 16h00.
le formatage conditionnel ne l'affiche pas en rouge...

C'est vrai qu'il ne doit pas y avoir beaucoup de films de cette durée...




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jac
... donc pour la condition, il faurait chercher "durée " pour que les
10h et plus passent au rouge.

Bonjour Jac,

Oui j'avais pensé à cette situation mais je me suis dit que au delà de 9h59
il ne devait pas y avoir beaucoup de films. Pour tout te dire, j'avais pensé
au film-documentaire de Lanzmann 'Shoah' (durée 9h30).


Bonjour Eric,

si je modifie la première ligne pour obtenir 16h00
14h30 - tralala - durée 16h00.
le formatage conditionnel ne l'affiche pas en rouge...

C'est vrai qu'il ne doit pas y avoir beaucoup de films de cette durée...




Avatar
Eric
re,

Oui avec cette fonction par exemple, mais j'ai recherché le dernier
espace seulement:

Public Function zz(UneChaine As Variant) As Date
If IsNull(UneChaine) Then Exit Function
Dim t$
t = Mid(UneChaine, InStrRev(UneChaine, " ") + 1)
t = Replace(Replace(t, "h", ":"), ".", "")
zz = CDate(t)
End Function

et pour Expression mettre:
zz([LeChamp])>#02:00:00#

... donc pour la condition, il faurait chercher "durée " pour que les
10h et plus passent au rouge.




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...
Toutefois ça plantera si la durée est supérieure à 23h59 mais bon, même
la nuit du Cinéma ne dure pas tant ;-)
Attendons de voir la réponse de Bernard.

re,

Oui avec cette fonction par exemple, mais j'ai recherché le dernier
espace seulement:

Public Function zz(UneChaine As Variant) As Date
If IsNull(UneChaine) Then Exit Function
Dim t$
t = Mid(UneChaine, InStrRev(UneChaine, " ") + 1)
t = Replace(Replace(t, "h", ":"), ".", "")
zz = CDate(t)
End Function

et pour Expression mettre:
zz([LeChamp])>#02:00:00#

... donc pour la condition, il faurait chercher "durée " pour que les
10h et plus passent au rouge.






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Cinémas Décavision
Bonjour à tous et en particulier à Eric et Jac.

Merci de cette aide trés pro.

J'explore les pistes que vous m'avez gracieusement fournies....

La fonction :
ExtracChaîne([getfacingSched(1)];instrrev([getfacingSched(1)];"Durée"))>"Durée
2h00."

Elle fonctionne trés bien dans la base d'essai envoyée et je la maitrise
bien, mais il me semble que là ma chaine est plus compliquée...
il me semble qu'elle se crée en plusieurs morceaux : D'abord les horaires,
puis la durée...
Exemple : 14h, 1645, 19h30 et 22h15 + merc, sam et dim 11h - Durée 1h45
ce qui ferait huit petites chaines qui se rajoute les unes aux autres...
C'est là que cela devient délicat !!!!
Ce n'est pas moi qui ai fait l'application, mais un informaticien qui ne
veut plus programmer (déprime totale!).
Donc j'essai de faire évoluer cette base et je vois déjà que vous vous y
connaissez bien en cinéma et trés bien en informatique A2K.


Voilà du code VBA trouvé en rapport avec [getfacingSched(1)]
Si vous y comprenez quelque chose et que cela peut aider ???
MERCI à TOUS. Merci le news group

Option Compare Database
Option Base 0

Const qryFacing = "Q - FilmsSallesNum"
Const maxRoom = 10

Dim scheds, titles, seances

Private Sub Report_Open(Cancel As Integer)

Dim rs As Recordset, str$, Id&, idstr, ids, j&
Dim srs As Recordset, hidx&, hour As Date, sc As Variant

ReDim scheds(maxRoom, maxRoom)
ReDim titles(maxRoom, maxRoom)
ReDim seances(maxRoom, maxRoom)

Set rs = CurrentDb.OpenRecordset(qryFacing, dbOpenSnapshot)
Do Until rs.EOF
ids = Split(Nz(rs![Film_SalleNum]), "&")
For Each idstr In ids
Id = Val(idstr)
If Id > 0 And Id <= maxRoom Then
For j = 0 To UBound(titles, 2)
If titles(Id, j) = rs![Film_Titre] Then Exit For
If titles(Id, j) = "" Then Exit For
Next
If j <= UBound(titles, 2) Then
If Len(scheds(Id, j)) > 0 Then scheds(Id, j) =
scheds(Id, j) & " + "
scheds(Id, j) = rs![Prog_StrProgInfoAbs]
titles(Id, j) = rs![Film_Titre]
End If

' Construit un tableau d'horaires pour le film trouvé
' Dans chacun des éléments est présent l'heure pour laquelle
une entrée a été trouvée
hidx = 0
Set srs = CurrentDb.OpenRecordset("SELECT * FROM [T -
Séances] where (Séances_IDX=" & rs![Prog_CalcSéances] & ")", dbOpenSnapshot)
srs.MoveLast
srs.MoveFirst 'populate
ReDim sc(srs.RecordCount)
Do Until srs.EOF
hour = srs![Séances_Heure]
If ((srs![Séances_J1] And 7) + (srs![Séances_J2] And 7) +
(srs![Séances_J3] And 7) + (srs![Séances_J4] And 7) + (srs![Séances_J5] And
7) + (srs![Séances_J6] And 7) + (srs![Séances_J7] And 7)) > 0 Then
sc(hidx) = hour
hidx = hidx + 1
End If
srs.MoveNext
Loop
seances(Id, j) = sc
srs.Close
End If
Next
rs.MoveNext
Loop

End Sub


Public Function getFacingSched(Id&)

Dim j&

On Error Resume Next
For j = 0 To UBound(titles, 2)
If titles(Id, j) = "" Then Exit Function
If Len(getFacingSched) > 0 Then getFacingSched = getFacingSched &
vbNewLine & "---------------" & vbNewLine
getFacingSched = getFacingSched & scheds(Id, j)
Next

End Function

Public Function getFacingTitle(Id&, hour As Date)

Dim j&, k&, sc As Variant

On Error Resume Next
For j = 0 To UBound(titles, 2)
sc = seances(Id, j)
For k = 0 To UBound(sc)
If sc(k) = hour Then Exit For 'indiquer que l'heure a été
trouvée
Next
If k < UBound(sc) Then
'continuer si heure a été trouvé
If titles(Id, j) = "" Then Exit Function
If Len(getFacingTitle) > 0 Then getFacingTitle = getFacingTitle &
vbNewLine & "---------------" & vbNewLine
getFacingTitle = getFacingTitle & titles(Id, j)
End If
Next

End Function
1 2 3 4