IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

sauvegarde d'une selection de partie image dans un fichier jpeg


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2018
    Messages : 73
    Par défaut sauvegarde d'une selection de partie image dans un fichier jpeg
    re Bonjour
    PUIS JE ABUSER DE VOTRE GENTILLESSE ,

    Maintenant que mon probleme de selection de zone image dans un userforme est reglé (gros merci a Tête de Chat ), je n'arrive pas a la sauvegarder en jpg
    Je me heute a des methodes non gérer, incompatibilité de type etc ..... j'ai fait plusieurs essais pour revenir a ma solution initiale dans le code ci-dessous

    Update : qui en fait etait une erreur colossale puisque je n ai plus gdpicture


    donc si vous avez des solutions a me suggerer ...... je suis preneur

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    Public Sub PageFreqimg_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        ' Lorsque l'utilisateur relâche le clic, enregistrez les coordonnées de fin
        If SelectionEnCours = 2 _
            Then
                SelectionEnCours = 0
            X2 = X
            Y2 = Y
        End If
             ' Copie et sauvegarde de la zone sélectionnée en tant qu'image JPEG
        Dim FicCible As String
        FicCible = RepExport & "\" & ActionOCR & ".jpg"
        CopierEtSauvegarderSelection FicCible    '<w=================== appel 
        '............................................  reste du code
     
    Public Sub CopierEtSauvegarderSelection(FicCible As String)
        ' Vérifiez si les coordonnées de début et de fin de la sélection sont valides
        If X1 = 0 Or Y1 = 0 Or X2 = 0 Or Y2 = 0 Then
            MsgBox "Please select an area to copy first.", vbExclamation
            Exit Sub
        End If
     
        ' Créez un objet GdPicture
        Dim gdPicture As Object
        Set gdPicture = CreateObject("GdPicture.GdPicture.10") '<============== le probleme est là, j ai meme essayé de passer par un userformtemporaire  :arf::arf:
     
        ' Chargez l'image source
        Dim imagePath As String
        imagePath = PageFreqimg.Picture
        If gdPicture.LoadFromFile(imagePath) = 0 Then
            MsgBox "Unable to load the image.", vbExclamation
            Exit Sub
        End If
     
        ' Calculez les coordonnées de la zone sélectionnée
        Dim width As Long
        Dim height As Long
        width = X2 - X1
        height = Y2 - Y1
     
        ' Copiez la zone sélectionnée
        gdPicture.Crop X1, Y1, width, height
     
        ' Enregistrez la zone sélectionnée en tant qu'image JPEG
        If gdPicture.SaveAsJPEG(FicCible, 75) = 0 Then
            MsgBox "Error while saving the image.", vbExclamation
        Else
            MsgBox "The selection has been copied and saved as a JPEG image.", vbInformation
        End If
     
        ' Libérez les ressources de GdPicture
        gdPicture.CloseImage
        Set gdPicture = Nothing
    End Sub
    Avez vous une solution pour moi

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 249
    Par défaut
    Hello,
    as-tu gdpicture installé sur ta machine ? Si oui quelle version , est-il gratuit, dans ce cas où peut-on l'obtenir ? j'ai bien vu un gdpicture.Net ​qui ressemble à ce que tu utilises mais c'est un logiciel payant.
    Ami calmant, J.P

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2018
    Messages : 73
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    as-tu gdpicture installé sur ta machine ? Si oui quelle version , est-il gratuit, dans ce cas où peut-on l'obtenir ? j'ai bien vu un gdpicture.Net ​qui ressemble à ce que tu utilises mais c'est un logiciel payant.
    Ami calmant, J.P
    en fait je ne l'ai plus gdpicture.
    c'est une erreur de ma part d'y faire appel, il faut que je trouve une autre solution

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 249
    Par défaut
    si tu nous mets en pièce jointe un classeur avec ton code ton formulaire et sans données confidentielles (ex: Feuilles Excel vides) on pourra peut-être t'aider à trouver une solution

  5. #5
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2018
    Messages : 73
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    si tu nous mets en pièce jointe un classeur avec ton code ton formulaire et sans données confidentielles (ex: Feuilles Excel vides) on pourra peut-être t'aider à trouver une solution
    pas de prob
    J'ai un userform dans lequel j'affiche le resultat d'un scan dont voici une partie
    En fait c'est l'impression d'une feuille excel dont on doit récuperer des infos dispersées dans les feuilles avec des formats non standard (cellules fusionnées, retour a la ligne, coupure de mots, etc) pour les passer a travers tesseract-OCR pour pouvoir les réinjecter vers une nouvelle feuille excel et bien sur les sources excel ont disparue (merci le papier)
    Nom : Capture1.JPG
Affichages : 66
Taille : 196,6 Ko

    la selection de zone semble bien se passer, je recupere bien X1 Y1 et dans la procedure sur fin de souris X2 Y2
    Maintenant il faut que je sauvegarde cette partie d'image dans un fichier au format Jpg pour l'envoyer a tesseract_OCR a travers le shell qui va me le sauvegarder en txt
    que je retravail apres pour faire du nettoyage en partie automatique (suppression des doubles, triple espace, retour chariot, . decimal versus virgule etc etc) , en partie manuelle validation visuelle ....

    j ai donc une gestion d'évenement mousedown pour le dbut de zone et mousseup pour la fin de zone voici le code
    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
     
    Public Sub PageFreqimg_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        ' Lorsque l'utilisateur relâche le clic, enregistrez les coordonnées de fin
        If SelectionEnCours = 2 _
            Then
                SelectionEnCours = 0
            X2 = X
            Y2 = Y
        End If
     
    ' ==================================================== C est ici que je n arrive pas a sauvegarder je faisais par erreur un appel a GdPicture mais je ne l'ai plus 'de dispo et j ai essayé avec clipboard et je n'arrive pas a le mettre au point
    ' il faut donc que je trouve une solution le plus possible "native de windows et excel" pour integrer dans le code de   CopierEtSauvegarderSelection  qui va aller enregistrer ici = FicCible
     
             ' Copie et sauvegarde de la zone sélectionnée en tant qu'image JPEG
        Dim FicCible As String
        FicCible = RepExport & "\" & ActionOCR & ".jpg"
        CopierEtSauvegarderSelection FicCible
        ' Repasser le formulaire en mode modal
        Me.Show vbModal
        '
     '  Reste du code  vers l'OCR est l'appel du userform de validation manuelle
    End Sub
    J espere avoir été clair

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 249
    Par défaut
    Question bête : pourquoi passer par du VBA alors que l'opération peut être faite avec un logiciel de dessin (séléction partie image et sauvegarde) ou des logiciels qui utilisent tesserac
    Sinon voir ici : how-to-crop-an-image-using-wia-in-vba

  7. #7
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2018
    Messages : 73
    Par défaut il n y a pas de question bete, il n'y a que des idiot qui ne veulent pas répondre
    En fait ou ije pourrais par exemple utiliser snippingtool et enregister la capture la ou je veux ou encore afficher dans paint et enregistrer un nouveau paint, je l ai testé et cela marche
    aussi la possibilité d'utiliser d'autre outils de scan et OCR, mais pour le moment pas mal dessus sur des tableurs.
    Aussi j essaie d'automatisé au maximum de maniere le plus intégrée possible , avec le mons de risque d'erreur et d etre le plus portable possible sur des ordinateurs differents sans avoir besoin d'installer d'autres logiciels autre que tesseract

    il ya un tres gros "bouquin" d'impression de feuilles excel de plus de 300 pages a récupérer, (amis où sont les sauvegardes )

    Je vais regarder ce que tu me proposes et d'avance merci

  8. #8
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2018
    Messages : 73
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Question bête : pourquoi passer par du VBA alors que l'opération peut être faite avec un logiciel de dessin (séléction partie image et sauvegarde) ou des logiciels qui utilisent tesserac
    Sinon voir ici : how-to-crop-an-image-using-wia-in-vba
    Merci de ton aide et de ta suggestion mais ce sera moins élégant et en fait j abandonne cette solution je n arrive pas a la mettre en place que je charge directement mon image ou que je passe par un fichier temporaire j'ai soit "n est pas gere" soit "incompatible"

    ce putain de code n a jamais reussi a fonctionne a l exception de la gestion erreur
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Sub CopierEtSauvegarderSelection()
    'TOUTESES VARIABLE SONT DEFINI EN PUBLIC et les bibliotheques sont presentes
        On Error GoTo Error_Handler
     
        ' Créer les objets WIA nécessaires
        Dim oIF As New WIA.ImageFile
        Dim oIP As New WIA.ImageProcess
        Dim img As WIA.ImageFile
     
        ' Définir le chemin du fichier temporaire
        Dim TempFilePath As String
        TempFilePath = Environ("TEMP") & "\" & "TempImage.jpg"
     
        ' Copier la sélection dans un fichier temporaire
        PageForm.PageFreqimg.Picture.SaveAs TempFilePath
     
        ' Charger l'image temporaire avec la bibliothèque WIA
        oIF.LoadFile TempFilePath
     
        ' Appliquer le recadrage sur l'image
        oIP.Filters.Add oIP.FilterInfos("Crop").FilterID
        With oIP.Filters(1)
            .Properties("Left") = X1 ' Coordonnée X1 de début
            .Properties("Top") = Y1 ' Coordonnée Y1 de début
            .Properties("Right") = X2 ' Coordonnée X2 de fin
            .Properties("Bottom") = Y2 ' Coordonnée Y2 de fin
        End With
        Set oIF = oIP.Apply(oIF)
     
        ' Sauvegarder l'image recadrée dans le fichier spécifié par FicCible
        oIF.SaveFile FicCible
     
        ' Supprimer le fichier temporaire
        Kill TempFilePath
     
    Error_Handler_Exit:
        On Error Resume Next
        If Not oIP Is Nothing Then Set oIP = Nothing
        If Not oIF Is Nothing Then Set oIF = Nothing
        Exit Sub
     
    Error_Handler:
        MsgBox "L'erreur suivante s'est produite : " & vbCrLf & vbCrLf & _
               "Numéro d'erreur : " & Err.Number & vbCrLf & _
               "Source de l'erreur : CopierEtSauvegarderSelection" & vbCrLf & _
               "Description de l'erreur : " & Err.Description & _
               Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Numéro de ligne : " & Erl) _
               , vbOKOnly + vbCritical, "Une erreur s'est produite!"
        Resume Error_Handler_Exit
    End Sub

  9. #9
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 249
    Par défaut
    Hello,
    tu n'as pas voulu utilisé cette partie de code :
    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
      #Const WIA_EarlyBind = False    'True => Early Binding / False => Late Binding
        #If WIA_EarlyBind = True Then
            Dim oIF               As WIA.ImageFile
            Dim oIP               As WIA.ImageProcess
     
     
            Set oIF = New WIA.ImageFile
            Set oIP = New WIA.ImageProcess
        #Else
            Dim oIF               As Object
            Dim oIP               As Object
     
     
            Set oIF = CreateObject("WIA.ImageFile")
            Set oIP = CreateObject("WIA.ImageProcess")
        #End If
    tu as pris l'option Early Binding. Pas de chance pour que celle-ci fonctionne il faut que le WIA soit coché dans Outils/Références :
    Nom : WIA.png
Affichages : 83
Taille : 37,4 Ko

    Sinon en Late Binding tu n'as pas besoin de cocher la référence.

    Sinon il y a des services en ligne qui font le travail, par exemple Amazon Textract
    Amazon Textract est un service de machine learning (ML) qui extrait automatiquement le texte, l'écriture manuscrite et les données des documents numérisés. Il va au-delà de la simple reconnaissance optique de caractères (OCR) pour identifier, comprendre et extraire les données des formulaires et des tableaux. Aujourd'hui, de nombreuses entreprises extraient manuellement les données de documents numérisés tels que fichiers PDF, images, tableaux et formulaires, ou par le biais d'un simple logiciel OCR qui nécessite une configuration manuelle (qui doit souvent être mise à jour lorsque le formulaire change). Pour éliminer ces processus manuels et coûteux, Textract fait appel au ML pour lire et traiter tout type de document, extraire avec précision le texte imprimé ou manuscrit, les tableaux et d'autres données sans aucune intervention manuelle. Vous pouvez rapidement automatiser le traitement des documents et exploiter les informations extraites, qu'il s'agisse d'automatiser le traitement de prêts ou d'extraire des informations de factures et de reçus. Avec Textract, le temps d'extraction des données se compte non pas en heures ou en jours, mais en minutes. En outre, vous pouvez ajouter des vérifications humaines avec Amazon Augmented AI pour surveiller vos modèles et vérifier les données sensibles.
    il y a possibilité d'offre d'essai gratuit (100 pages / mois). La confidentialité des données est normalement garantie
    Un exemple d'extraction "intelligente"
    Ami calmant, J.P

  10. #10
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2018
    Messages : 73
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    tu n'as pas voulu utilisé cette partie de code :
    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
      #Const WIA_EarlyBind = False    'True => Early Binding / False => Late Binding
        #If WIA_EarlyBind = True Then
            Dim oIF               As WIA.ImageFile
            Dim oIP               As WIA.ImageProcess
     
     
            Set oIF = New WIA.ImageFile
            Set oIP = New WIA.ImageProcess
        #Else
            Dim oIF               As Object
            Dim oIP               As Object
     
     
            Set oIF = CreateObject("WIA.ImageFile")
            Set oIP = CreateObject("WIA.ImageProcess")
        #End If
    tu as pris l'option Early Binding. Pas de chance pour que celle-ci fonctionne il faut que le WIA soit coché dans Outils/Références :
    Nom : WIA.png
Affichages : 83
Taille : 37,4 Ko

    Sinon en Late Binding tu n'as pas besoin de cocher la référence.

    Sinon il y a des services en ligne qui font le travail, par exemple Amazon Textract

    il y a possibilité d'offre d'essai gratuit (100 pages / mois). La confidentialité des données est normalement garantie
    Un exemple d'extraction "intelligente"
    Ami calmant, J.P

    OUPS je viens simplement de voir que tu m'avais répondu entre temps j ai gérer a l'arrache mais je vais regarder ta solution
    La bibliotheque WIA etait bien activé dans mes references

Discussions similaires

  1. Sauvegarder une Url au format BLOB dans un fichier image
    Par nikko49 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/01/2016, 03h22
  2. [ImageMagick] Sauvegarder une image dans un fichier
    Par kivan666 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 15/12/2006, 12h28
  3. sauvegarde d'ne image dans un fichier?
    Par waiso dans le forum OpenGL
    Réponses: 3
    Dernier message: 12/05/2006, 08h33
  4. Récupérer la taille d'une image dans un fichier (GIF/JPEG)
    Par SheikYerbouti dans le forum Multimédia
    Réponses: 4
    Dernier message: 12/05/2005, 14h17
  5. [C#]Sauvegarde d'une selection multiple d'une listbox?
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2004, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo