Bonjour à toutes et à tous.
Petite précisions je suis loin d'être un 'carck" en programmation
Pour récuperer des données dont les sources électroniques ont été perdues et les réintroduire dans une feuille excel, je ne dispose que des impressions papier
Je suis en train de me développer une petite app macro pour un usage perso (environnement office 365, win 10/64).
je lance un userform en format portrait qui s’affiche dans mon ecran de gauche.
ce userform comprend plusieurs bouton et une zone image avec 2 barres de défilement Verticale et horizontal
La zone image est plus petite que la dimension de ma uerisation, et je veux garder cette dimension pour avoir une bonne visibilité du contenu de la page que je vais selectionner par partie et passer a l'OCR
la numerisation, l'affichage c'est OK mais
je n'arrive pas utiliser le defilement verticale et horizontal.
D avance MERCI de votre aide !
voici mon code et le process
je lance un userform en format portrait qui s’affiche dans mon ecran de gauche
ce userform comprend plusieurs bouton
une zone image avec 2 barres de défilement Verticale et horizontal
Je déclenche un scan (a partir d’un bouton du userform) pour numériser une page que je sauvegarde dans un fichier de .png. puis j’affiche l’image das la zone ’image
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Sub AfficherUserFormSurDeuxiemeEcran() Dim UserForm As Object Dim userFormWidth As Long Dim userFormHeight As Long Dim userFormTop As Long Dim userFormLeft As Long Set UserForm = New PageForm ' Positionner le UserForm sur l'écran du site If Maison_Chris = True _ Then userFormLeft = TabEcrans(1).EcranLarge - 900 userFormTop = 0 Else userFormLeft = 0 - TabEcrans(2).EcranLarge + 300 userFormTop = 0 End If ' Afficher le UserForm With UserForm .StartUpPosition = 0 ' Position manuelle .Left = userFormLeft .Top = userFormTop .Show End With End Sub
et c’est là que tout se complique, impossible de faire déplacer l’image dans la zone image
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Private Sub ChargerEtAfficherImage() ' Chargez les dimensions de l'image depuis le fichier spécifié LoadImageDimensions FicScanTrav ' Mise à jour des dimensions de la zone d'affichage et des barres de défilement MiseAJourDimensions ' Affichez l'image dans la zone d'image PageFreqimg.Picture = LoadPicture(FicScanTrav) ' Ajustez la taille de la PictureBox sans déformation If ImageWidth > PageFreqimg.Width Then PageFreqimg.Width = ImageWidth End If If ImageHeight > PageFreqimg.Height Then PageFreqimg.Height = ImageHeight End If ' Définissez la position initiale de la barre de défilement BarHorizontal.value = BarHorizontal.Max BarVertical.value = BarVertical.Max End Sub Private Sub LoadImageDimensions(ByVal imagePath As String) ' Chargez les dimensions de l'image depuis le fichier spécifié Dim img As Object Set img = CreateObject("WIA.ImageFile") img.LoadFile imagePath ImageWidth = img.Width ImageHeight = img.Height End Sub
je precise que dans mon module d'initialisation de l'app j'ai toutes les variables constantes et et déclaration
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub BarHorizontal_Change() Dim ScrollValue As Single ScrollValue = BarHorizontal.value / (BarHorizontal.Max - BarHorizontal.Min) PageFreqimg.Left = -ScrollValue * (ImageWidth - PageFreqimg.Width) End Sub Private Sub BarVertical_Change() Dim ScrollValue As Single ScrollValue = BarVertical.value / (BarVertical.Max - BarVertical.Min) PageFreqimg.Height = -ScrollValue * (ImageHeight - PageFreqimg.Height) End Sub
merci a toutes et a tous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Option Explicit ' consigne de compilation compatibilite win64 Declare PtrSafe Function GetMonitorInfo Lib "user32.dll" Alias "GetMonitorInfoA" ( _ ByVal hMonitor As Long, ByRef lpmi As MONITORINFOEX) As Long Declare PtrSafe Function MonitorFromPoint Lib "user32.dll" ( _ ByVal X As Long, ByVal Y As Long, ByVal dwFlags As Long) As Long Declare PtrSafe Function MonitorFromRect Lib "user32.dll" ( _ ByRef lprc As rect, ByVal dwFlags As Long) As Long Declare PtrSafe Function MonitorFromWindow Lib "user32.dll" ( _ ByVal hwnd As Long, ByVal dwFlags As Long) As Long Declare PtrSafe Function EnumDisplayMonitors Lib "user32.dll" ( _ ByVal hdc As Long, ByRef lprcClip As Any, ByVal lpfnEnum As LongPtr, ByVal dwData As Long) As Long Declare PtrSafe Function GetWindowRect Lib "user32" ( _ ByVal hwnd As Long, lpRect As rect) As Long
Partager