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 :

VSTO EXCEL, VB.NET


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Par défaut VSTO EXCEL, VB.NET
    Bonjour,

    Je débute le VSTO Excel depuis le language VB.NET. Je dipose d'un fichier excel qui se compose comme suit :
    3 Feuilles excel. Celle qui m'intéresse s'appelle "liste" et j'aimerais récupérer le lien derrière une image situé dans la cellule E13 de cette feuilles excel "liste".

    Voici mon code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim workbook As Excel.Workbook = Globals.ThisWorkbook.Application.ActiveWorkbook
    Dim worksheet As Worksheet = CType(workbook.Worksheets(2), Worksheet)
    Dim cell As Range = worksheet.Range("E13")
    Lorsque je fais fais cell.Hyperlinks.count, j'obtiens 0. Et pourtant dans mon fichier excel j'ai bien une image avec un lien hypertexte associé à cette image.

    Dans l'espoir de pouvoir obtenir un peu d'aide, je vous remercie par avance.

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut range.hyperlinks.conut egale zero
    bonjour Frogman21

    cell.Hyperlinks.count donne zero simplement parce Range.Hyperlinks.Count compte les Hyperliens associes a une ou plage Range pas à un Picture.

    Les images posees sur une feuille se trouvent dans ce cas dans Worksheet.Shapes y compris eventuellement les Boutons et toutes sortes de controles.
    Il faut retrouver ton picture d'abord ,ensuite l'hyperlien associe.
    Exemple code dans un Workbook ExcelVSTO
    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
    55
    56
    57
     
    ' dans l'exemple il y sur la feuille 1
    ' -un bouton 
    ' -un image avec un 1er hyperlien
    '- un range quelconque avec un 2eme hyperlien
    Public Class Feuil1
        Private Sub Feuil1_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
     
        End Sub
     
        Private Sub Feuil1_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown
     
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim wkSheet2 As Excel.Worksheet = Application.Worksheets(2)
            Dim wkSheet3 As Excel.Worksheet = Application.Worksheets(3)
            Dim workRange As Excel.Range = Nothing
     
     
            'Affiche dans  wkSheet3 le total des Hyperliens de 
            'la Feuille 1 ce qui donne 2 
            wkSheet3.Cells(1, 1) = "Tot HyperLiens Feuille1:" & Me.Hyperlinks.Count
            'Le detail des Hyperliens 
            For col As Integer = 1 To Me.Hyperlinks.Count
                wkSheet3.Cells(1, col + 1) = "Hyperlien N° : " & col & " Adress Cellule :" & Me.Hyperlinks.Item(col).SubAddress
            Next
     
     
            'les images,shapes dessines,les boutons (control ActiveX) sont 
            'references dans la collection Shapes de la feuille par type
            'Pour retrouver un hyperlien associe à une image il faut
            'retrouver un type image d'abord.
     
            'Affiche dans wkSheet3 le total des images et index
            wkSheet3.Cells(2, 1) = "Tot Images & Controles Feuille1:" & Me.Shapes.Count
     
            'Retrouve l'image (unique ici) dans   wkSheet 
            Dim monHyperlien As Excel.Hyperlink = Nothing
            For col As Integer = 1 To Me.Shapes.Count
                Dim shp As Excel.Shape = Me.Shapes.Item(col)
                'si c'est une image
                If shp.Type = Microsoft.Office.Core.MsoShapeType.msoPicture Then
                    wkSheet3.Cells(3, col + 1) = "Hyperlien Image N° : " & col.ToString & " Adress Cellule :" & shp.Hyperlink.SubAddress
                    'recupere le lien
                    MessageBox.Show("adresse Excel du lien :" & shp.Hyperlink.SubAddress)
                    monHyperlien = shp.Hyperlink
                End If
            Next
            'Simule le "click" sur Hyperlien image 
            monHyperlien.Follow(NewWindow:=True)
     
            'Adjust for better display
            workRange = wkSheet3.Range(wkSheet3.Cells(1, 1), wkSheet3.Cells(10, 10))
            workRange.EntireColumn.AutoFit()
        End Sub
    End Class
    bon code....

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/04/2009, 09h37
  2. installer VSTO pour vb.net
    Par Pol63 dans le forum Visual Studio
    Réponses: 2
    Dernier message: 14/05/2007, 13h19
  3. installer VSTO pour vb.net
    Par Pol63 dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/05/2007, 13h27
  4. [VB.NET] font.colorindex pour excel avec .NET
    Par beegees dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/07/2006, 16h17
  5. [C#] [Excel] Pourquoi .NET > VB6 ???
    Par lololefada dans le forum C#
    Réponses: 16
    Dernier message: 21/05/2004, 11h31

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