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
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
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
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
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
 
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
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
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
merci a toutes et a tous