cracos30
Messages postés81Date d'inscriptionvendredi 17 avril 2009StatutMembreDernière intervention12 avril 2013
-
24 juil. 2009 à 11:00
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
24 juil. 2009 à 12:53
Bonjour,
Ha ben tiens, vlà l'fils à Pénible!
Alors voilà c'est l'histoire d'un mec, qui veut détecter une bordure, par exemple le bord d'une feuille Excel. Pour cela il fait un brouillon :
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Public Sub PIQLIMIT()
' ActiveWindow.DisplayGridlines = False
PixelColor = GetPixel(GetDC(0), 600, 600)
'Call ReleaseDC(0, PixelColor)
For PASAPA = 600 To 1 Step -0.05
PICAGE = GetPixel(GetDC(0), PASAPA, 600)
'Call ReleaseDC(0, PICAGE)
If PixelColor <> PICAGE Then
ORIGX = PASAPA
Exit For
End If
Next
end sub
Sur la feuille il met une grande forme rouge. Quand il lance le prog, avec un point d'arrêt sur "ORIGX = PASAPA", il trouve 16777215 pour PixelColor 16777151 pour PICAGE avec PASAPAS 592,45 ???
Changement de couleur forme : Noir
Pareil ???
Ces couleurs font du gris et du noir pour la colorisation d'une cellule,
de plus s'il trace une courbe avec 16777215, elle est blanche! ( ou transparente ?), enfin bref pas correspondante. (essais getwindowdc idem)
Question : Doit il se suicider de suite ?
Merci d'avance pour lui.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 24 juil. 2009 à 11:58
salut,
(tournure de topic amusante, mais uniquement parce que j'avais lu que tu allais reposter. d'autres lecteurs pourraient ne pas te répondre juste à cause de çà. bref)
résumé :
ici ce n'est qu'un exemple réduit (brouillon), en VBA
résumé ou pas, où sont PASAPA , PICAGE et ORIGX ?
de quel type?
For PASAPA = 600 To 1 Step -0.05 PASAPA devrait être DOUBLE donc, mais GETPIXEL attend un LONG, pas de nombre à virgule!
voilà la première piste :
revoir les types, déclarer si ce n'est pas fait, et utiliser un pas adapté
ps : getdc(0) ne changera pas dans la boucle, conserve le en variable avant d'entrer dans la boucle
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 24 juil. 2009 à 12:02
.... getdc(0) ne renvoie pas le DC de ton formulaire de toute façon,
tu n'observes pas la partie rouge
et ni DC ni handle en VBA, il faut tricher
(handle par titre avec findwindows par exemple, getdc de ce handle)
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 24 juil. 2009 à 12:48
Bonjour,
Euh, oui, d'accord avec PCPT, si je n'avais pas lu ton dernier post, il me semble que je ne répondrais pas à celui-ci...
D'ailleurs, je vais te faire une réponse sous forme de question, parce que je ne vois pas où tu veux aller vraiment...
[...] détecter une bordure, par exemple le bord d'une feuille Excel[...]
Une bordure ou un bord de feuille ?
> Pour une bordure, je ne vois pas l'intérêt d'avoir recours à des API ?... Pourquoi ne pas utiliser Selection.Borders(xlEdgeBottom).LineStyle ? ou Range à la place de Selection (ou autre type de référence...)... enfin, je reste dubitatif...
> Un bord de feuille : Cela ne veut rien dire de précis, ça ?... La dernière cellule qui a une bordure ??
Amicalement,
Us.
Vous n’avez pas trouvé la réponse que vous recherchez ?
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 24 juil. 2009 à 12:53
On est bien dans la rubrique VBA... Suite aux réponses de PCPT et Renfield, j'ai l'impression d'être largé... (pardonner moi, si mes propos sont hors sujet...)