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

VB 6 et antérieur Discussion :

Différence entre "Insert" et "LoadPicture" / problème de taille du fichier excel


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [résolu] Différence entre "Insert" et "LoadPicture" /problème de taille fichier excel
    En référence à cette discussion...

    Bonjour,

    Désolé de ressortir un vieux sujet, mais j'ai un problème lié à l'insertion d'une image dans un fichier excel sur lequel j'espère que vous pourrez m'aider.

    Je développe une application VB6 qui doit éditer des fichiers excel avec des images dedans. Je possède :
    - un modèle excel dans lequel le simages sont des contrôles vides
    - une macro qui va alimenter mon modèle excel.
    Mon application VB6 fait donc appel à ma macro qui se charge de remplir mon modèle excel.


    Voici le code de mon application VB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exapp.Run "Macro_Carto_new.xls!Alim_Image", NUMSHEET_REP_SURFACE, x, Fic_Image_jpg
    avec :
    • Exapp : mon application excel sous VB
    • Macro_Carto_new.xls : mon fichier excel dans lequel est défini ma macro
    • Alim_Image : le nom de ma macro
    • NUMSHEET_REP_SURFACE : le numéro de la feuille de mon modèle dans laquelle je veux insérer l'image
    • x : le numéro de mon image dans mon modèle
    • Fic_Image_jpg : le chemin ver smon image au format "jpg"


    Et pour ma macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub Alim_Image(ByVal feuille As Long, ByVal n As Long, ByVal FicImg As String)
    On Error GoTo fin
        Select Case n
           Case 1:    Application.Sheets(feuille).image1.Picture = LoadPicture(FicImg)
           Case 2:    Application.Sheets(feuille).image2.Picture = LoadPicture(FicImg)
    ...
        End Select
    fin:
    End Sub
    Ma solution fonctionne très bien et l(utilisation d'un modèle me permet d'avoir me simages directement placée là où j'ai positionné mes controles.
    Cependant cette solution conduit à des fichiers excel très volumineux (je suis très vite arrivé dans mon cas sans trop pousser à des fichiers de plus de 150Mo)

    J'ai alors essayé de remplacer le code de ma macro par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Sheets(feuille).Pictures.Insert (FicImg)
    Avec cette deuxième technique j'obtiens un fichier de taille considérablement plus petite. Cependant je dois définir où positionner mes images ce qui est très problématique car ca implique de changer pas mal de choses au sein de l'application telle qu'elle existe actuellement dans l'entreprise (à moins de me servir du positionnement de mes controles pour insérer mes image sau même endroit... à voir)


    Mes questions sont donc les suivantes :
    Quel est la différence entre "LoadPicture" et "Insert"
    peut-on utiliser "LoadPicture" sans faire exploser la taille du fichier ou alors existe -t- il une autre méthode similaire qui fasse cela en utilisant le positionnement de mes controels dans mon fichier modèle ?



    Je vous remercie d'avance pour vos contributions.
    Cordialement.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Up
    Bonjour,

    Je me permets de remonter ma question car je n'ai toujours pas trouvé de solution pour alléger mes rapports ...

    Désolé pour le dérangement occasionné, et merci d'avance pour votre aide.


    Cordialement.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    Je ne saurais t'expliquer en détail les différences entre LoadPicture(chargement de l'image dans un controle) et Insert(insertion directement dans la feuille de calcul)
    Par contre lorsqu'une image est stockée dans le contrôle Image, le format passe automatiquement en .bmp (ce qui peut expliquer les tailles importantes).
    tu peux le vérifier en consultant la propriété Picture de l'objet Image



    Tu peux facilement redéfinir l'emplacement de l'image dans la feuille de calcul lorsque tu utilises la methode Insert:
    (macro Excel à adapter dans ton projet)


    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
    Sub InsertionImage()
        Dim Emplacement As Range
        Dim Img As Object
     
        Sheets(1).Pictures.Insert "C:\PICT1335.jpg"
        Set Emplacement = Range("D3:E8")
     
         'à adapter selon le nombre total de shapes dans feuille
        Set Img = Sheets(1).DrawingObjects(Sheets(1).DrawingObjects.Count)
     
        With Img.ShapeRange
            '.Name = "cible"
            .LockAspectRatio = msoFalse
            .Left = Emplacement.Left
            .Top = Emplacement.Top
            .Height = Emplacement.Height
            .Width = Emplacement.Width
        End With
    End Sub


    bon apres midi
    michel

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Par contre lorsqu'une image est stockée dans le contrôle Image, le format passe automatiquement en .bmp (ce qui peut expliquer les tailles importantes).
    En effet, je pesne que cela explique pourquoi la taille de mes dossiers sont beaucoup plus importants quand je charge les images dans les control.

    Tu peux facilement redéfinir l'emplacement de l'image dans la feuille de calcul lorsque tu utilises la methode Insert:
    (macro Excel à adapter dans ton projet)
    A quelques approximations près c'est en effet la méthode que j'ai utilisée :
    • 1) J'insère l'image dans mon fichier modèle
    • 2) Je la place au coordonnées exactes du controlImage auquel elle correspond
    • 3) Je supprime le controlImage

    Je me sers donc du controlImage juste comme repère de l'emplacement où je veux mettre mon image. Cela fonctionne très bien et visuellement on ne voit pas la différence.

    A titre informatif, je suis passé de :
    • sur un dossier de 130 Mo avec "loadPicture" à un dossier de 20 Mo avec "insert"
    • sur un dossier de 20 Mo avec "loadPicture" à un dossier de 1 Mo avec "insert"

    Je suis très satisfait de ces résultats.
    Merci beaucoup pour ton aide précieuse Michel.

    RESOLU

    Cordialement.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Pour dire Résolu, il y a un bouton en bas de page.

    Merci de l'utiliser.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Problemes avec insert into et les simple quote
    Par Alann dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/07/2014, 17h41
  2. Différence entre %STR et %QUOTE
    Par fafabzh6 dans le forum Macro
    Réponses: 10
    Dernier message: 14/03/2011, 17h43
  3. Append et Insert et la différence entre eux
    Par rec82 dans le forum Bases de données
    Réponses: 5
    Dernier message: 24/11/2008, 08h51
  4. insertion d'élément db avec quotes
    Par hyipicai dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/10/2007, 07h49
  5. Select et insert avec des caracteres speciaux (quote ')
    Par Paco75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/10/2006, 14h59

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