Bonjour.
Pour des raisons internes nous devons coller un morceau de tableau excel dans nos mises en plan.
Tout se passe correctement mais lors de l'ouvrture des fichiers nous avons ce message de sécurité. (voir PJ)
Y a t il un moyen de contourner ce message afin qu'il n'apparaisse plus car il bloque nos tache de conversion automatique via l'EPDM ou MYCADTOOL.
Par avance merci de vos lumières.
A. Mendes
alerte_secu_excel.png
Bonjour;
Ce type de message correspond pas mal aux alertes de macro Excel. N'y en aurrait-il pas dans votre tableau à copier ?
Comme faites vous le collage ? par les objet OLE ou via un simple copier-coller ?
La question subsidiaires est : avez vous des mises en formes conditionelles dans votre Excel ?
N'est-il pas envisageable d'utiliser une Table Génerale à la place de ce document rapporté ?
Si cela vous interesse j'ai une Macro (Solidworks) pour importer des cellules excel dans des MEP sous forme d'une nouvelle Table.
Cordialement.
import_from_excel.swp
1 « J'aime »
Bonjour @Mclane
Mon collage est fait par un simple copier coller qui me génère automatiquement un objet OLE.
Oui mise en forme conditionnelle dans le tableau.
Pour la mise en place d'une table générale pourquoi pas seulement si cela est fait par macro. Donc je suis éventuellement preneur.
Merci de te pencher sur le sujet.
A. Mendes
A.Mendes;
Je viens de mettre ma macro à disposition sur le poste precedant.
Voici le code ....
' Prerequis: Une Mise en plan Solidworks est ouverte, Un excel est ouvert et la zone à importer est selectionnée.
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
ImportTable swDraw
End Sub
Sub ImportTable(drawingSheet As SldWorks.DrawingDoc)
Dim swTable As SldWorks.TableAnnotation
Dim swAnn As SldWorks.Annotation
Dim nNumCol As Long
Dim nNumRow As Long
Dim sRowStr As String
Dim i As Long
Dim j As Long
Dim objExcelObject As Excel.Application
Dim objBook1 As Excel.Workbook
Dim objSheet1 As Excel.Worksheet
Dim iRows As Integer
Dim iCols As Integer
Dim sBase As String
MsgBox ("Ouvrez un fichier Excel,et selectionnez les cellules à importer." & Chr(10) & "...." & Chr(10) & "Cliquez sur 'OK' pour debuter l'importation.")
Set objExcelObject = GetObject(, "Excel.Application")
If objExcelObject Is Nothing Then
MsgBox "Un fichier Excel doit être ouvert." & Chr(10) & "Fin de la macro."
Else
iRows = objExcelObject.Selection.Rows.Count
iCols = objExcelObject.Selection.Columns.Count
sBase = objExcelObject.Selection.Cells(1, 1).Address
Dim sWidth As Double
Dim sHeight As Double
drawingSheet.GetCurrentSheet().GetSize sWidth, sHeight
Set swTable = drawingSheet.InsertTableAnnotation2(False, 0, sHeight, swBOMConfigurationAnchor_TopLeft, "", iRows, iCols)
For i = 0 To iRows - 1
Dim cell As Range
For j = 0 To iCols - 1
Set cell = objExcelObject.Selection.Range("A1").Offset(i, j)
If i = 0 Then
' Definition des largeurs de colonnes
swTable.SetColumnWidth j, cell.ColumnWidth * 7.5 / 4000, swTableRowColChange_TableSizeCanChange
End If
' Definition du format des cellules
Dim tf As TextFormat
Set tf = swTable.GetTextFormat
tf.Bold = cell.Font.Bold
tf.Strikeout = cell.Font.Strikethrough
tf.Italic = cell.Font.Italic
If cell.Font.Underline > 0 Then tf.Underline = True
tf.CharHeightInPts = cell.Font.Size
' Definition du format du texte
swTable.SetCellTextFormat i, j, False, tf
' Alignement des cellules
swTable.CellTextHorizontalJustification(i, j) = Switch(cell.HorizontalAlignment = XlHAlign.xlHAlignRight, swTextJustificationRight, cell.HorizontalAlignment = XlHAlign.xlHAlignCenter, swTextJustificationCenter, True, swTextJustificationLeft)
swTable.CellTextVerticalJustification(i, j) = Switch(cell.VerticalAlignment = XlVAlign.xlVAlignBottom, swTextAlignmentBottom, cell.VerticalAlignment = XlVAlign.xlVAlignCenter, swTextAlignmentMiddle, True, swTextAlignmentTop)
swTable.Text(i, j) = cell
Next j
' Definition des Hauteur de colonnes
swTable.SetRowHeight i, cell.RowHeight / 0.75 / 4000, swTableRowColChange_TableSizeCanChange
Next i
End If
Set objSheet1 = Nothing
Set objBook1 = Nothing
Set objExcelObject = Nothing
End Sub
2 « J'aime »
@Mclane
Merci beaucoup. Je vais tenter de me pencher sur le sujet des que possible mais en ce moment je croule sous le taf.
Si en attendant tu trouve par malheur une solution pour le message je suis toujours preneur.