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

Code pour selectionner/formater les valeurs identiques dans un etat ?

4 réponses
Avatar
valere1966
Bonjour

J'ai un etat - base sur une requete selection classique - qui affiche
les numeros du loto dans lequel j'aimerais mettre en valeur les
numeros qui ressortent d'un tirage sur l'autre.
Je m'explique :

N=B01 N=B02 N=B03 N=B04 N=B05

19 24 27 33 41
22 24 32 41 48 le numero 24 et le numero 41 doivent etre formates
10 20 22 39 46 le numero 22
10 11 37 41 48 le numero 10
18 20 28 40 49
4 32 35 39 44
7 15 31 43 48
11 12 14 28 48 le numero 48

Pour cela, le code doit commencer =E0 partir du deuxieme enregistrement,
puisqu'il faut que la comparaison se fasse en permanence =E0 partir du
dernier enregistrement;
Dans mon etat, il n'y a pour l'instant que 4 lignes concernees

j'imagine qu'il faut faire une boucle en utilisant l'objet recordset,
mais je n'arrive pas =E0 la mettre en pratique : c'est le critere qui
pose probleme.
En effet, il ne s'agit pas de trouver des doublons, mais uniquement
les numeros qui sont en commun dans le dernier enregistrement et
l'enregistrement precedent, et les formater (en les affichant par
exemple en rouge) uniquement dans le "dernier" enregistrement .
De plus les numeros "communs' ne sont pas forcement dans la meme
colonne, ce qui complique bien evidemment la t=E2che.
Comment realiser ce challenge et ecrire un code suffisamment
intelligent pour resoudre cette operation ?

Je remercie quiconque pourra me donner la solution =E0 ce probleme sur
lequel je planche sans succes depuis des jours, car j'ai beau
chercher, je suis bloque ...

Merci d'avance pour toute aide de votre part

Cordialement

4 réponses

Avatar
3stone
Salut,

J'ai un etat - base sur une requete selection classique - qui affiche
les numeros du loto dans lequel j'aimerais mettre en valeur les
numeros qui ressortent d'un tirage sur l'autre.
Je m'explique :

N°1 N°2 N°3 N°4 N°5

19 24 27 33 41
22 24 32 41 48 le numero 24 et le numero 41 doivent etre formates
10 20 22 39 46 le numero 22
10 11 37 41 48 le numero 10
18 20 28 40 49
4 32 35 39 44
7 15 31 43 48
11 12 14 28 48 le numero 48

Pour cela, le code doit commencer à partir du deuxieme enregistrement,
puisqu'il faut que la comparaison se fasse en permanence à partir du
dernier enregistrement;
Dans mon etat, il n'y a pour l'instant que 4 lignes concernees

j'imagine qu'il faut faire une boucle en utilisant l'objet recordset,
mais je n'arrive pas à la mettre en pratique : c'est le critere qui
pose probleme.
En effet, il ne s'agit pas de trouver des doublons, mais uniquement
les numeros qui sont en commun dans le dernier enregistrement et
l'enregistrement precedent, et les formater (en les affichant par
exemple en rouge) uniquement dans le "dernier" enregistrement .
De plus les numeros "communs' ne sont pas forcement dans la meme
colonne, ce qui complique bien evidemment la tâche.
Comment realiser ce challenge et ecrire un code suffisamment
intelligent pour resoudre cette operation ?
____

Disons que tes champ numéro se nomment N1 à N5
(évite des caractères barbares comme le "°" )
le code peut être quelque chose comme ceci:


Option Compare Database
Option Explicit

Dim x1 As Integer, x2 As Integer, x3 As Integer, x4 As Integer, x5 As Integer
Const Rouge As Long = 255
Const Blanc As Long = 16777215

Private Sub Détail_Print(Cancel As Integer, PrintCount As Integer)
'définir couleur de fond
Me!N1.BackColor = IIf(x1 = N1, Rouge, Blanc)
Me!N2.BackColor = IIf(x2 = N2, Rouge, Blanc)
Me!N3.BackColor = IIf(x3 = N3, Rouge, Blanc)
Me!N4.BackColor = IIf(x4 = N4, Rouge, Blanc)
Me!N5.BackColor = IIf(x5 = N5, Rouge, Blanc)

'mémoriser...
x1 = N1: x2 = N2: x3 = N3: x4 = N3: x5 = N5

End Sub

Private Sub Report_Open(Cancel As Integer)
x1 = 0: x2 = 0: x3 = 0: x4 = 0: x5 = 0
End Sub


Remarque:
Il faut penser à définir la couleur de fond comme blanc, et non
"transparent" comme défini par défaut ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Michel__D
Bonjour,

3stone a écrit :
Salut,

J'ai un etat - base sur une requete selection classique - qui affiche
les numeros du loto dans lequel j'aimerais mettre en valeur les
numeros qui ressortent d'un tirage sur l'autre.
Je m'explique :

N°1 N°2 N°3 N°4 N°5

19 24 27 33 41
22 24 32 41 48 le numero 24 et le numero 41 doivent etre formates
10 20 22 39 46 le numero 22
10 11 37 41 48 le numero 10
18 20 28 40 49
4 32 35 39 44
7 15 31 43 48
11 12 14 28 48 le numero 48

Pour cela, le code doit commencer à partir du deuxieme enregistrement,
puisqu'il faut que la comparaison se fasse en permanence à partir du
dernier enregistrement;
Dans mon etat, il n'y a pour l'instant que 4 lignes concernees

j'imagine qu'il faut faire une boucle en utilisant l'objet recordset,
mais je n'arrive pas à la mettre en pratique : c'est le critere qui
pose probleme.
En effet, il ne s'agit pas de trouver des doublons, mais uniquement
les numeros qui sont en commun dans le dernier enregistrement et
l'enregistrement precedent, et les formater (en les affichant par
exemple en rouge) uniquement dans le "dernier" enregistrement .
De plus les numeros "communs' ne sont pas forcement dans la meme
colonne, ce qui complique bien evidemment la tâche.
Comment realiser ce challenge et ecrire un code suffisamment
intelligent pour resoudre cette operation ?
____

Disons que tes champ numéro se nomment N1 à N5
(évite des caractères barbares comme le "°" )
le code peut être quelque chose comme ceci:


Option Compare Database
Option Explicit

Dim x1 As Integer, x2 As Integer, x3 As Integer, x4 As Integer, x5 As Integer
Const Rouge As Long = 255
Const Blanc As Long = 16777215

Private Sub Détail_Print(Cancel As Integer, PrintCount As Integer)
'définir couleur de fond
Me!N1.BackColor = IIf(x1 = N1, Rouge, Blanc)
Me!N2.BackColor = IIf(x2 = N2, Rouge, Blanc)
Me!N3.BackColor = IIf(x3 = N3, Rouge, Blanc)
Me!N4.BackColor = IIf(x4 = N4, Rouge, Blanc)
Me!N5.BackColor = IIf(x5 = N5, Rouge, Blanc)

'mémoriser...
x1 = N1: x2 = N2: x3 = N3: x4 = N3: x5 = N5

End Sub

Private Sub Report_Open(Cancel As Integer)
x1 = 0: x2 = 0: x3 = 0: x4 = 0: x5 = 0
End Sub


Remarque:
Il faut penser à définir la couleur de fond comme blanc, et non
"transparent" comme défini par défaut ;-)



Voici une variante qui prend en compte le changement de colonne

Option Compare Database
Option Explicit

Dim sLoto As String
Const Rouge As Long = 255
Const Blanc As Long = 16777215

Private Sub Détail_Print(Cancel As Integer, PrintCount As Integer)
'définir couleur de fond
Me!N1.BackColor=IIf(InStr(1,sLoto," " & N1 & " ")>0,Rouge,Blanc)
Me!N2.BackColor=IIf(InStr(1,sLoto," " & N2 & " ")>0,Rouge,Blanc)
Me!N3.BackColor=IIf(InStr(1,sLoto," " & N3 & " ")>0,Rouge,Blanc)
Me!N4.BackColor=IIf(InStr(1,sLoto," " & N4 & " ")>0,Rouge,Blanc)
Me!N5.BackColor=IIf(InStr(1,sLoto," " & N5 & " ")>0,Rouge,Blanc)

'mémoriser...
sLoto = " " & N1 & " " & N2 & " " & N3 & " " & N4 & " " & N5 & " "

End Sub

Private Sub Report_Open(Cancel As Integer)
sLoto = ""
End Sub
Avatar
3stone
De : Michel__D
Voici une variante qui prend en compte le changement de colonne
___

Da !

Même pas pensé aux colonnes, moi ;-))

Sûrement parce que les "méthodes" pour gagner à coup sûr
ou pour augmenter les probabilités m'amuse beaucoup...
J'ai donc bien aimé Gabin dans "Le gentleman d'Epsom"
http://fr.wikipedia.org/wiki/Le_Gentleman_d%27Epsom

ben oui... cela ne date pas de hier :o))

A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Michel__D
3stone a écrit :
De : Michel__D
Voici une variante qui prend en compte le changement de colonne
___

Da !

Même pas pensé aux colonnes, moi ;-))




De mon coté j'avais la flemme de chercher une solution et donc
comme tu as pu voir je me suis surtout servi de ton code.


Sûrement parce que les "méthodes" pour gagner à coup sûr
ou pour augmenter les probabilités m'amuse beaucoup...




C'est ce que l'on appelle l'espérance, mais peut-on vivre sans ?


J'ai donc bien aimé Gabin dans "Le gentleman d'Epsom"
http://fr.wikipedia.org/wiki/Le_Gentleman_d%27Epsom




Et donc une interrogation demeure :
L'existence est-elle une succession de hasard heureux ou
malheureux ou est-elle prédestinée ?


ben oui... cela ne date pas de hier :o))



Certaines oeuvres n'ont pas d'age.