Bonjour,

Je me tourne vers le forum en dernier recour, j'essaye d'afficher un svg au moyen du code suivant (extrait d'un tuto ici meme):

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
58
59
60
61
62
63
64
65
66
67
68
Option Explicit
 
'---------------------------------------------------------------------------------------------------------
' Importation du fichier SVG des départements et création des formes libres
'---------------------------------------------------------------------------------------------------------
' Utilisation des valeurs de la feuille Departements
'---------------------------------------------------------------------------------------------------------
Function CreateShapes()
Dim oSheet As Excel.Worksheet ' Feuille de travail
Dim lLine As Long ' Compteur de lignes
Dim lCoord As String ' Coordonnées du département
Dim lCoordArray As Variant ' Coordonnées du département en tableau
Dim lCptCoord As Long ' Compteur pour parcourir les coordonnées
Dim lNbShape As Long ' Nombre de formes créées
Dim lShapeRange() ' Tableaux des noms de formes créées pour fonction Group
Dim loFreeformBuilder As Excel.FreeformBuilder 'Constructeur de forme libre
 
' Feuille de données
Set oSheet = Sheets("Departements")
' Parcours la feuille des données
For lLine = 1 To 96
    ' Coordonnées
    lCoord = oSheet.Cells(lLine, 1)
    ' Mise en forme des coordonnées
    lCoord = Replace(lCoord, ",", " ")
    ' Crée un tableau à partir de la chaîne de caractères
    lCoordArray = Split(lCoord, " ")
    ' Initialise le compteur
    lCptCoord = LBound(lCoordArray)
    Do
        Select Case lCoordArray(lCptCoord)
            Case "M" ' Point de départ
                ' Crée un constructeur de "forme libre" pour le département courant sur la feuille oSheet
                Set loFreeformBuilder = oSheet.Shapes.BuildFreeform(msoEditingCorner, Val(lCoordArray(lCptCoord + 1)) * 10, Val(lCoordArray(lCptCoord + 2)) * 10)
                lCptCoord = lCptCoord + 3
            Case "L" ' Segment
                loFreeformBuilder.AddNodes msoSegmentLine, msoEditingAuto, Val(lCoordArray(lCptCoord + 1)) * 10, Val(lCoordArray(lCptCoord + 2)) * 10
                lCptCoord = lCptCoord + 3
            Case "C" ' Courbe
                loFreeformBuilder.AddNodes msoSegmentCurve, msoEditingCorner, Val(lCoordArray(lCptCoord + 1)) * 10, Val(lCoordArray(lCptCoord + 2)) * 10, Val(lCoordArray(lCptCoord + 3)) * 10, Val(lCoordArray(lCptCoord + 4)) * 10, Val(lCoordArray(lCptCoord + 5)) * 10, Val(lCoordArray(lCptCoord + 6)) * 10
                lCptCoord = lCptCoord + 7
            Case "z" ' Fin de la forme
                ' Converti le Constructeur en Forme
                With loFreeformBuilder.ConvertToShape
                    ' Identifiant du département
                    .Name = oSheet.Cells(lLine, 2)
                    ' Incrémente le nombre de formes créées
                    lNbShape = lNbShape + 1
                    ' Redimensionne le tableau de formes créées
                    ReDim Preserve lShapeRange(1 To lNbShape)
                    ' Ajoute le nom de la forme au tableau pour groupement
                    lShapeRange(lNbShape) = .Name
                End With
                ' Libère l'objet constructeur
                Set loFreeformBuilder = Nothing
                ' Sort de la boucle de traitement des coordonnées
                Exit Do
        End Select
    Loop
Next
' Groupe les départements dans une forme
With oSheet.Shapes.Range(lShapeRange).Group
    .Name = "CarteFrance"
    .ScaleHeight 0.05, msoFalse
    .ScaleWidth 0.05, msoFalse
    .LockAspectRatio = msoTrue
End With
End Function
Selement le code ci dessus va chercher des coordonées de la forme :
M 536.28822,491.78463 L 536.28822,493.94088 L 538.25697,495.31588 L [...]

la lecture de mon svg par excel me donne la forme suivante :
M357.18 2827.51L357.42 2827.15L357.66 2826.31L358.14 2826.55[...]

Ma question que dois je modifier (notament au niveau du lCoord = Replace(lCoord, ",", " ")) dans le code pour qu'il charge ma carte ?

Merci
Nico