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

Code pour selectionner/formater les valeurs identiques dans un etat ? METHODE CIRCLE AIDEZ MOI SVP

1 réponse
Avatar
valere1966
Bonjour

Et =E0 nouveau merci =E0 Michel D...
Dans mes precedents messages, je voulais mettre en evidence (en rouge)
les valeurs communes dans mon etat, =E0 savoir un etat qui liste les
tirages du loto, et dans lequel je souhaitais afficher les numeros qui
ressortent d'un tirage sur l'autre, en rouge.
La mission est accomplie grace =E0 l'aide precieuse de 3Stone et Michel
D.
Grace =E0 leur code, j'ai meme chang=E9 backcolor en fontcolor pour
obtenir un etat dans lequel les numeros concernes apparaissent en
rouge (et les autres restent en noir).

Maintenant, je souhaiterais faire la meme chose avec la methode
Circle, c'est =E0 dire entourer les donnees concernees d'un ovale (au
lieu des les afficher en rouge).
J'utilise la methode circle dans d'autres etats, mais je n'arrive pas
=E0 l'appliquer dans le cas present.
En effet, j'ai incorpore le code de 3Stone et Michel D afin de pouvoir
utiliser la chaine qui selectionne les numeros qui ressortent.Ceux ci
apparaissent bien en rouge (j'ai change backcolor en fontcolor pour
plus d'esthetisme) mais la methode Circle ne s'applique pas et je
n'arrive pas =E0 trouver l'erreur :

Private Sub D=E9tail_Print(Cancel As Integer, PrintCount As Integer)

' Dessiner une ellipse autour des contr=F4les qui rencontrent le crit=E8re
sp=E9cifi=E9.
Dim rouge as string
Dim noir as string
Dim ctl As Control

Dim entCercle As Integer
Dim sngAspect As Single, sngYOffset As Single
Dim entHauteur As Integer, entLargeur As Integer
Dim sngXCoord As Single, sngYCoord As Single
Dim entI As Integer

' Pour produire l'ellipse d=E9sir=E9e, affecter sngAspect et sngOffset
' en fonction de la taille et de la position des zones de texte
' dans le sous-=E9tat.
sngAspect =3D 0.25
sngYOffset =3D 3

' D=E9terminer la hauteur et la largeur de l'ellipse.
entHauteur =3D Me![N1].Height * 1.2
entLargeur =3D Me![N1].Width * 1.5
sngYCoord =3D (Me![N1].Top + Me![txtCombinaisons].Height) \ 2 +
sngYOffset


Me!N1.ForeColor =3D IIf(InStr(1, sloto, " " & N1 & " ") > 0, Rouge,
Noir)
Me!N2.ForeColor =3D IIf(InStr(1, sloto, " " & N2 & " ") > 0, Rouge,
Noir)
Me!N3.ForeColor =3D IIf(InStr(1, sloto, " " & N3 & " ") > 0, Rouge,
Noir)
Me!N4.ForeColor =3D IIf(InStr(1, sloto, " " & N4 & " ") > 0, Rouge,
Noir)
Me!N5.ForeColor =3D IIf(InStr(1, sloto, " " & N5 & " ") > 0, Rouge,
Noir)

'm=E9moriser...
sloto =3D " " & N1 & " " & N2 & " " & N3 & " " & N4 & " " & N5 & "
"

' Recherche les contr=F4les qui peuvent =EAtre cercl=E9s.
C EST ICI QUE CA COINCE
COMMENT FAIRE EN SORTE QUE SEULS LES NUMEROS CONCERNES SOIENT ENTOURES
D UN OVALE ?

For entI =3D 1 To 5
Set ctl =3D Me("N" & entI)

If Not IsNull(ctl) Then
entCercle =3D (ctl =3D sloto >=3D 0)


' D=E9terminer les coordonn=E9es de ctl et dessiner les
ellipses.
If entCercle Then
sngXCoord =3D ctl.Left + (ctl.Width \ 2)
Me.Circle (sngXCoord, sngYCoord), entLargeur \
2, , , , sngAspect
End If
End If
Next entI


'Affiche une ligne sur deux en couleur (gris clair)
'afin d'am=E9liorer la lisibilit=E9...

If Me.D=E9tail.BackColor =3D vbWhite Then
Me.D=E9tail.BackColor =3D RGB(230, 230, 230)
Else
Me.D=E9tail.BackColor =3D vbWhite
End If


Alors comment faire ?
Faut il carrement ecrire une procedure qui utilise la methode circle,
et si oui, comment, en utilisant quel critere pour que les donnees
concernees soient entourees dans les cinq colonnes ?
Dans mes autres etats le critere est simple comme par exemple me!
Numero > 10
mais ici le critere c'est "les numeros qui ressortent d'un tirage sur
l'autre" ...
De plus d'ordinaire, pas besoin de changer la couleur des numeros pour
pouvoir appliquer la methode circle ...

J'AIMERAIS SAVOIR COMMENT UTILISER LA METHODE CIRCLE SIMPLEMENT DANS
LE CAS PRESENT SANS SE SOUCIER DE LA COULEUR
MAIS AUSSI FAIRE FONCTIONNER LE CODE CI DESSUS POUR POUVOIR AFFICHER
LES DONNEES EN ROUGE ET LES ENTOURER C'EST A DIRE REALISER LES DEUX
ACTIONS EN UNE.

OU FAUT IL UTILISER LA METHODE DE 3STONE ET MICHEL D, C'EST A DIRE
METTRE LES NUMEROS DANS UN AUTRE FORMAT (EN ROUGE) POUR POUVOIR
APPLIQUER LA METHODE CIRCLE ?

Ou faut il utiliser la methode de 3Stone et Michel D, c'est =E0 dire
mettre les numeros dans un autre format (en rouge) pour pouvoir
appliquer la methode Circle ?

Je m'en remets =E0 nouveau =E0 vous et vous demande votre aide en esperant
ne pas en abuser.

Cordialement

1 réponse

Avatar
Michel__D
Bonjour,

Je t'ai répondu sur ton post du 28/10/2008 à 00:43

Je redonne ma réponse.

Pour ta demande initiale tu aurais pu utiliser cette façon de faire :

Couleur = Blanc
If InStr(1, sLoto, " " & N1 & " ") > 0 Then Couleur = Rouge
Me!N1.BackColor = Couleur
Couleur = Blanc
If InStr(1, sLoto, " " & N2 & " ") > 0 Then Couleur = Rouge
Me!N2.BackColor = Couleur
...

au lieu de :

Me!N1.BackColor=IIf(InStr(1,sLoto," " & N1 & " ")>0,Rouge,Blanc)
Me!N2.BackColor=IIf(InStr(1,sLoto," " & N2 & " ")>0,Rouge,Blanc)


Et donc cela ne devrait pas être trop difficile d'adapter cette façon de
procéder pour ta nouvelle demande.


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)
Dim Couleur As Long
' définir couleur de fond
Couleur = Blanc
If InStr(1, sLoto, " " & N1 & " ") > 0 Then
DessineCercle N1, 133
Couleur = Rouge
End If
Me!N1.BackColor = Couleur
Couleur = Blanc
If InStr(1, sLoto, " " & N2 & " ") > 0 Then
DessineCercle N2, 133
Couleur = Rouge
End If
Me!N2.BackColor = Couleur

...

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

Private Sub Report_Open(Cancel As Integer)
sLoto = ""
End Sub

Sub DessineCercle(oBjet As Control, Rayon As Single)
Dim iX As Single, iY As Single
iX = oBjet.Left + oBjet.Width - (Rayon / 2) - 15
iY = oBjet.Top + (oBjet.Height / 2) - 9
Me.Circle (iX, iY), Rayon
End Sub


a écrit dans le message de news:
Bonjour

Et à nouveau merci à Michel D...
Dans mes precedents messages, je voulais mettre en evidence (en rouge)
les valeurs communes dans mon etat, à savoir un etat qui liste les
tirages du loto, et dans lequel je souhaitais afficher les numeros qui
ressortent d'un tirage sur l'autre, en rouge.
La mission est accomplie grace à l'aide precieuse de 3Stone et Michel
D.
Grace à leur code, j'ai meme changé backcolor en fontcolor pour
obtenir un etat dans lequel les numeros concernes apparaissent en
rouge (et les autres restent en noir).

Maintenant, je souhaiterais faire la meme chose avec la methode
Circle, c'est à dire entourer les donnees concernees d'un ovale (au
lieu des les afficher en rouge).
J'utilise la methode circle dans d'autres etats, mais je n'arrive pas
à l'appliquer dans le cas present.
En effet, j'ai incorpore le code de 3Stone et Michel D afin de pouvoir
utiliser la chaine qui selectionne les numeros qui ressortent.Ceux ci
apparaissent bien en rouge (j'ai change backcolor en fontcolor pour
plus d'esthetisme) mais la methode Circle ne s'applique pas et je
n'arrive pas à trouver l'erreur :

Private Sub Détail_Print(Cancel As Integer, PrintCount As Integer)

' Dessiner une ellipse autour des contrôles qui rencontrent le critère
spécifié.
Dim rouge as string
Dim noir as string
Dim ctl As Control

Dim entCercle As Integer
Dim sngAspect As Single, sngYOffset As Single
Dim entHauteur As Integer, entLargeur As Integer
Dim sngXCoord As Single, sngYCoord As Single
Dim entI As Integer

' Pour produire l'ellipse désirée, affecter sngAspect et sngOffset
' en fonction de la taille et de la position des zones de texte
' dans le sous-état.
sngAspect = 0.25
sngYOffset = 3

' Déterminer la hauteur et la largeur de l'ellipse.
entHauteur = Me![N1].Height * 1.2
entLargeur = Me![N1].Width * 1.5
sngYCoord = (Me![N1].Top + Me![txtCombinaisons].Height) 2 +
sngYOffset


Me!N1.ForeColor = IIf(InStr(1, sloto, " " & N1 & " ") > 0, Rouge,
Noir)
Me!N2.ForeColor = IIf(InStr(1, sloto, " " & N2 & " ") > 0, Rouge,
Noir)
Me!N3.ForeColor = IIf(InStr(1, sloto, " " & N3 & " ") > 0, Rouge,
Noir)
Me!N4.ForeColor = IIf(InStr(1, sloto, " " & N4 & " ") > 0, Rouge,
Noir)
Me!N5.ForeColor = IIf(InStr(1, sloto, " " & N5 & " ") > 0, Rouge,
Noir)

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

' Recherche les contrôles qui peuvent être cerclés.
C EST ICI QUE CA COINCE
COMMENT FAIRE EN SORTE QUE SEULS LES NUMEROS CONCERNES SOIENT ENTOURES
D UN OVALE ?

For entI = 1 To 5
Set ctl = Me("N" & entI)

If Not IsNull(ctl) Then
entCercle = (ctl = sloto >= 0)


' Déterminer les coordonnées de ctl et dessiner les
ellipses.
If entCercle Then
sngXCoord = ctl.Left + (ctl.Width 2)
Me.Circle (sngXCoord, sngYCoord), entLargeur
2, , , , sngAspect
End If
End If
Next entI


'Affiche une ligne sur deux en couleur (gris clair)
'afin d'améliorer la lisibilité...

If Me.Détail.BackColor = vbWhite Then
Me.Détail.BackColor = RGB(230, 230, 230)
Else
Me.Détail.BackColor = vbWhite
End If


Alors comment faire ?
Faut il carrement ecrire une procedure qui utilise la methode circle,
et si oui, comment, en utilisant quel critere pour que les donnees
concernees soient entourees dans les cinq colonnes ?
Dans mes autres etats le critere est simple comme par exemple me!
Numero > 10
mais ici le critere c'est "les numeros qui ressortent d'un tirage sur
l'autre" ...
De plus d'ordinaire, pas besoin de changer la couleur des numeros pour
pouvoir appliquer la methode circle ...

J'AIMERAIS SAVOIR COMMENT UTILISER LA METHODE CIRCLE SIMPLEMENT DANS
LE CAS PRESENT SANS SE SOUCIER DE LA COULEUR
MAIS AUSSI FAIRE FONCTIONNER LE CODE CI DESSUS POUR POUVOIR AFFICHER
LES DONNEES EN ROUGE ET LES ENTOURER C'EST A DIRE REALISER LES DEUX
ACTIONS EN UNE.

OU FAUT IL UTILISER LA METHODE DE 3STONE ET MICHEL D, C'EST A DIRE
METTRE LES NUMEROS DANS UN AUTRE FORMAT (EN ROUGE) POUR POUVOIR
APPLIQUER LA METHODE CIRCLE ?

Ou faut il utiliser la methode de 3Stone et Michel D, c'est à dire
mettre les numeros dans un autre format (en rouge) pour pouvoir
appliquer la methode Circle ?

Je m'en remets à nouveau à vous et vous demande votre aide en esperant
ne pas en abuser.

Cordialement