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.NET Discussion :

Soucis d'image liée [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 52
    Par défaut Soucis d'image liée
    Bonjour,
    mon application en cours crée une succession de codes-barres dans des images au format bmp et chacun d'eux est sauvegardé sur le répertoire de l'application. Tout de suite après la création, j'insère ces images dans une feuille Excel. Tout va bien jusque là. Après avoir sauvegardé le classeur et fermé l'application, je supprime les images. C'est là que vient le problème: dans le classeur, à la place de chaque image, j'ai le message suivant: "Impossible d'afficher l'image liée. Le fichier a peut-être été déplacé, renommer ou supprimé..."
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Decal = 3
    For j = 1 To NbCat
        jdec = j + Decal
        Contenu = CatAIDA(j)
     
        Call CodeBarreBMP(j, Contenu)
     
        wsExcel = wbExcel.Worksheets("AIDA")
        wsExcel.Activate()
        wsExcel.Cells(1, jdec).select
     
        With wsExcel.Pictures.Insert(My.Application.Info.DirectoryPath + "\Image" & j & ".bmp")
            With .ShapeRange
                .LockAspectRatio = True
                .Width = 70
                .Height = 160
            End With
            .Left = wsExcel.Cells(1, jdec).Left
            .Top = wsExcel.Cells(1, jdec).Top
            .Placement = 1
            .PrintObject = True
        End With
     
    Next
     
    appExcel.Visible = True
    wbExcel.Save()
    wbExcel.Close() 'Fermeture du classeur Excel
    appExcel.Quit() 'Fermeture de l'application Excel
    appExcel = Nothing
    wbExcel = Nothing
     
    For Each ObjPro As Process In Process.GetProcessesByName("EXCEL")
        ObjPro.Kill()
    Next
     
    For j = 1 To NbCat
        My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath + "\Image" & j & ".bmp")
    Next
    Quand je supprime les trois dernières lignes, les images s'affichent correctement dans le classeur. Quelqu'un peut-il m'aider à comprendre comment fonctionne ce lien vers les images et comment contourner le problème pour pouvoir faire le ménage parmi les images sans dégrader le classeur excel?
    D'avance merci de votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    avec le insert, ça conserve le lien.

    Il faudrait plutôt utiliser Shapes.AddPicture qui permet d'indiquer si on veut conserver la liaison ou pas dans ces paramètres.
    https://learn.microsoft.com/fr-fr/do...view=excel-pia

  3. #3
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 52
    Par défaut Soucis shapes.addpicture
    Bonjour,
    merci pour votre réponse.
    J'ai essayé cette méthode shapes.addpictures et voici le code utilisé
    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
    For j = 1 To NbCat
        jdec = j + Decal
        Contenu = CatAIDA(j)
     
        Call CodeBarreBMP(j, Contenu)
     
        wsExcel = wbExcel.Worksheets("AIDA")
        wsExcel.Activate()
        wsExcel.Cells(1, jdec).select
     
        Dim T As Single
        Dim L As Single
        T = wsExcel.Cells(1, jdec).Top
        L = wsExcel.Cells(1, jdec).left
        wsExcel.Shapes.AddPicture(My.Application.Info.DirectoryPath + "\Image1.bmp", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, L, T, 160, 70)
     
    Next
    Malheureusement, j'ai créé trois erreurs de syntaxe pour cette ligne Shapes.addpicture:
    - deux erreurs "BC30456 'Core' n'est pas un membre de 'Microsoft.Office' " ces 2 erreurs font référence aux paramètres 2 et 3 je suppose,
    - et une erreur "BC30652 'Une référence à l'assembly 'Interop.Microsoft.Office.Core, Version=2.8.0.0, Culture=neutral, PublicKeyToken=null' contenant le type 'MsoTriState' est requise. Ajoutez-en une à votre projet."

    Or, je précise que dans l'onglet Projet -> Propriétés du Projet, au titre des références, j'ai bien "Microsoft.Office.Core" qui est coché.

    et les déclarations d'import en tête de projet sont les suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit On
    Imports System.Windows.Forms.VisualStyles
    Imports Microsoft.Office.Interop.Excel
    Imports Windows.Win32.System
    Imports Excel = Microsoft.Office.Interop.Excel
    (Les déclarations de Windows.forms.visualStyles et Windows.win32.system sont grisées comme non utiles)
    Je n'ai pas fait d'import de Microsoft.Office.Core dans la mesure où j'utilise les noms complets dans le code.
    Pour mémoire, j'utilise la version VisualStudio 2022 avec Windows11

    Aussi, merci de votre aide pour corriger cela car je ne m'en sors pas avec ces espaces de noms!

  4. #4
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 52
    Par défaut
    bonjour,
    après avoir bidouillé les références et les dépendances du projet, les différentes erreurs se sont corrigées: j'ai inclus Microsoft Office dans l'onglet COM des dépendances de l'explorateur de Projet et ça a suffit à corriger les références manquantes. Du coup, l'exécution s'est bien déroulée et le problème initial est résolu vu que les images sont bien collées dans excel et pas seulement un lien.
    Merci à vous

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

Discussions similaires

  1. Soucis d'image de fond.
    Par Faern dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 29/04/2010, 14h05
  2. BALISE MAP souci avec image-lien
    Par darkart dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 15/04/2010, 03h23
  3. Petit soucis, taille image
    Par olivier L dans le forum Images
    Réponses: 4
    Dernier message: 03/03/2010, 11h57
  4. soucis de date lié au parametrage
    Par tof5962 dans le forum VB.NET
    Réponses: 3
    Dernier message: 25/03/2008, 14h13
  5. Réponses: 1
    Dernier message: 20/12/2006, 22h14

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