Insertion tableau excel sur un plan Catia V5

Voir le sujet précédent Voir le sujet suivant Aller en bas

Insertion tableau excel sur un plan Catia V5

Message par mohshadow le Mar 5 Avr 2011 - 22:05

Bonjour à tous,
Une petite question pour les accrocs à la CAO. Nous souhaitons intégrer un fichier excel de 100 lignes dans CATIA V5. A l'aide d'un simple copier/coller, seules 72 lignes sont prises en compte....
(L'intégration via fichier .csv ne semble pas envisageable car il s'agit de traiter une base de données dont la source est de l'alphabet cyrillique.... :/)
Si quelqu'un à une éventuelle idée sur une option de CV5....
Merci.

mohshadow
timide
timide

Messages : 14
Date d'inscription : 05/04/2011

Revenir en haut Aller en bas

Re: Insertion tableau excel sur un plan Catia V5

Message par marc54 le Mer 6 Avr 2011 - 20:19

Bonjour,

Effectivement, CATIA tronque le tableau. Chez moi il coupait à 60 lignes ...
J'ai l'impression que ce sont les dimensions de l'objet copié qui pose problème. Ainsi en diminuant les hauteurs de lignes dans le tableau excel, j'arrive à copier près de 80 lignes. Mais c'est moche, et cela ne règle pas le problème si on a plusieurs centaines de lignes à copier.
A priori il n'y a pas d'option pour ça. Par macro ce devrait être faisable.
avatar
marc54
actif
actif

Messages : 43
Date d'inscription : 27/10/2010
Localisation : Nancy

http://www.3DSys.fr

Revenir en haut Aller en bas

Re: Insertion tableau excel sur un plan Catia V5

Message par mohshadow le Ven 15 Avr 2011 - 22:30

Merci Marc de ta réponse, je confirme que les 100 lignes passent bien si je baisse la hauteur de ligne (j'aurai appris quelque chose ^^). J'ai fait parvenir cette réponse, mais le sujet à finalement été traité via une macro VB.

mohshadow
timide
timide

Messages : 14
Date d'inscription : 05/04/2011

Revenir en haut Aller en bas

Re: Insertion tableau excel sur un plan Catia V5

Message par marc54 le Sam 16 Avr 2011 - 8:13

je suis en train de faire un programme de transfert CATIA<>EXCEL pour ce genre de choses, je le mettrai sur mon site bientôt.
avatar
marc54
actif
actif

Messages : 43
Date d'inscription : 27/10/2010
Localisation : Nancy

http://www.3DSys.fr

Revenir en haut Aller en bas

Re: Insertion tableau excel sur un plan Catia V5

Message par Guss_ le Mer 20 Avr 2011 - 0:51

J'ai fais une marco permettant de gérer un tableau catia et de l'éditer en tableau excel.
Dans mon cas c'est exclusivement pour de la nomenclature, je vais vous mettre le code de ma macro (je pense que pour l'utilisation avec une source de données externe il faut faire quelques modifs car là c'est totalement autonome)

Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

Re: Insertion tableau excel sur un plan Catia V5

Message par Guss_ le Mer 20 Avr 2011 - 1:04

Code:

Sub CATMain()
'--- initialisation objet nomenclateur
    Dim drawingDocument1 As DrawingDocument
    Dim drawingSheets1 As DrawingSheets
    Dim drawingSheet1 As DrawingSheet
    Dim drawingViews1 As DrawingViews
    Dim drawingView1 As DrawingView
    Dim drawingTables1 As DrawingTables
    Dim nomenclature As DrawingTable
    Set drawingDocument1 = CATIA.ActiveDocument
    Set drawingSheets1 = drawingDocument1.Sheets
    Set drawingSheet1 = drawingSheets1.Item("Calque.1")
    Set drawingViews1 = drawingSheet1.Views
    Set drawingView1 = drawingViews1.Item("Main View")
    Set drawingTables1 = drawingView1.Tables
'---- test si un taleau existe si non on le créé
    On Error Resume Next
    Set nomenclature = drawingTables1.Item(1)
    If Err.Number <> 0 Then
        Set nomenclature = drawingTables1.Add(0, 0, 1, 5, 5, 200 / 5)
        With nomenclature
            .SetCellString 1, 1, "N°Plan"
            .SetCellString 1, 2, "Ind."
            .SetCellString 1, 3, "Nb"
            .SetCellString 1, 4, "Désignation"
            .SetCellString 1, 5, "Observations"
            .SetColumnSize 1, 28
            .SetColumnSize 2, 10
            .SetColumnSize 3, 10
            .SetColumnSize 4, 90
            .SetColumnSize 5, 62
            For C = 1 To 5
                With .GetCellObject(1, C)
                    .SetFontSize 0, 0, 2.3
                End With
            Next
        End With
    End If
'---- initialisation variables de traiement
    Dim colonnes As Long
    Dim lignes As Long
    colonnes = nomenclature.NumberOfColumns
    lignes = nomenclature.NumberOfRows
'---- initialisation excel
    Dim Excel As Object
    On Error Resume Next
    Set Excel = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
        Set Excel = CreateObject("Excel.Application")
        Excel.Visible = True
    End If
    On Error GoTo 0
    Excel.Visible = True
    Excel.Workbooks.Add
    Set wbks = Excel.ActiveWorkbook
    Set wbk = wbks.Sheets(1)
'------- passage catia -> excel
    For l = 1 To lignes
        For C = 1 To colonnes
            wbk.Cells(l, C) = nomenclature.GetCellString(l, C)
            wbk.Cells(l, C).borders.LineStyle = 1
            wbk.Cells(l, C).borders.Weight = 2
        Next
    Next
'------ mis en page excel
    wbk.Columns(1).ColumnWidth = 14.29
    wbk.Columns(2).ColumnWidth = 2.57
    wbk.Columns(3).ColumnWidth = 4.43
    wbk.Columns(4).ColumnWidth = 44.71
    wbk.Columns(5).ColumnWidth = 28.71
'---- initialisation bouton de mise à jour excel
    Dim Obj As Object
    Dim Code As String
'---- create button
    Set Obj = wbk.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
    Link:=False, DisplayAsIcon:=False, Left:=550, Top:=0, Width:=100, Height:=35)
    Obj.Name = "Bouton_MAJ"
'---- buttonn text
    wbk.Bouton_MAJ.Caption = "Mise à jour de la nomenclature"
    wbk.Bouton_MAJ.WordWrap = True
    wbk.Bouton_MAJ.TakeFocusOnClick = False
'---- macro text
    Code = Code & "Private Sub Bouton_MAJ_Click()" & vbCrLf
    Code = Code & " " & vbCrLf
    Code = Code & "'---- initialisation catia" & vbCrLf
    Code = Code & "    Dim Catia As Object" & vbCrLf
    Code = Code & "    On Error Resume Next" & vbCrLf
    Code = Code & "    Set Catia = GetObject(, ""CATIA.Application"")" & vbCrLf
    Code = Code & "    If Err.Number <> 0 Then" & vbCrLf
    Code = Code & "        MsgBox (""pas de session catia trouvée"")" & vbCrLf
    Code = Code & "    Else" & vbCrLf
    Code = Code & "        On Error GoTo 0" & vbCrLf
    Code = Code & "        Set drawingDocument1 = Catia.ActiveDocument" & vbCrLf
    Code = Code & "        Set drawingSheets1 = drawingDocument1.Sheets" & vbCrLf
    Code = Code & "        Set drawingSheet1 = drawingSheets1.Item(""Calque.1"")" & vbCrLf
    Code = Code & "        Set drawingViews1 = drawingSheet1.Views" & vbCrLf
    Code = Code & "        Set drawingView1 = drawingViews1.Item(""Main View"")" & vbCrLf
    Code = Code & "        Set drawingTables1 = drawingView1.Tables" & vbCrLf
    Code = Code & "        Set nomenclature = drawingTables1.Item(1)" & vbCrLf
    Code = Code & "'---- determine nombre de ligne de la nomenclature" & vbCrLf
    Code = Code & "        Dim l, lignes As Long" & vbCrLf
    Code = Code & "        l = 1" & vbCrLf
    Code = Code & "        While Cells(l, 1) <> ""N°Plan""" & vbCrLf
    Code = Code & "            l = l + 1" & vbCrLf
    Code = Code & "            if l>150 then" & vbCrLf
    Code = Code & "                MsgBox (""case 'N°Plan' non trouvée"")" & vbCrLf
    Code = Code & "                Exit Sub" & vbCrLf
    Code = Code & "            end if" & vbCrLf
    Code = Code & "        Wend" & vbCrLf
    Code = Code & "'---- lit taille de la nomenclature existante" & vbCrLf
    Code = Code & "        lignes = nomenclature.NumberOfRows" & vbCrLf
    Code = Code & "'---- redimentionna la nomenclature Catia" & vbCrLf
    Code = Code & "        If lignes < l Then" & vbCrLf
    Code = Code & "            lignes = l - lignes" & vbCrLf
    Code = Code & "            For t = 1 To lignes" & vbCrLf
    Code = Code & "                nomenclature.AddRow 0" & vbCrLf
    Code = Code & "                nomenclature.Y = nomenclature.Y + 5" & vbCrLf
    Code = Code & "            Next" & vbCrLf
    Code = Code & "        Else" & vbCrLf
    Code = Code & "            lignes = lignes - l" & vbCrLf
    Code = Code & "            For t = 1 To lignes" & vbCrLf
    Code = Code & "                nomenclature.RemoveRow 0" & vbCrLf
    Code = Code & "                nomenclature.Y = nomenclature.Y - 5" & vbCrLf
    Code = Code & "            Next" & vbCrLf
    Code = Code & "        End If" & vbCrLf
    Code = Code & "'---- passage excel -> Catia" & vbCrLf
    Code = Code & "        For ligne = 1 To l" & vbCrLf
    Code = Code & "            For colonne = 1 To 5" & vbCrLf
    Code = Code & "                nomenclature.SetCellString ligne, colonne, Cells(ligne, colonne)" & vbCrLf
    Code = Code & "            Next" & vbCrLf
    Code = Code & "        Next" & vbCrLf
    Code = Code & "        Dim sFilePath As String" & vbCrLf
    Code = Code & "        Dim sFileName As String" & vbCrLf
    Code = Code & "        Dim sModule As String" & vbCrLf
    Code = Code & "        Dim sProcedure As String" & vbCrLf
    Code = Code & "        Dim sFilePathAndName As String" & vbCrLf
    Code = Code & "        Dim CatSysServ As Variant" & vbCrLf
    Code = Code & "        Dim Params() As Variant" & vbCrLf
    Code = Code & "        Dim vRetVal As Variant" & vbCrLf
    Code = Code & "        Dim catScriptLibraryType As Integer" & vbCrLf
    Code = Code & "'---- Everything here is Case-Sensitive" & vbCrLf
    Code = Code & "        sFilePath = ""G:\BUREAU_ETUDES\Catia\Macro\test""" & vbCrLf
    Code = Code & "        sFileName = ""test.catvba""" & vbCrLf
    Code = Code & "        catScriptLibraryType = 2" & vbCrLf
    Code = Code & "        sModule = ""nomenclature""" & vbCrLf
    Code = Code & "        sProcedure = ""mise_a_jour_table"" 'CatMain is only allowable Choice" & vbCrLf
    Code = Code & "'---- Concate File Path and Name" & vbCrLf
    Code = Code & "        sFilePathAndName = sFilePath & ""\"" & sFileName" & vbCrLf
    Code = Code & "        Set CatSysServ = CATIA.SystemService" & vbCrLf
    Code = Code & "        vRetVal = CatSysServ.ExecuteScript(sFilePathAndName, catScriptLibraryType, sModule, sProcedure, Params)" & vbCrLf
    Code = Code & "'---- vRetVal only gets a value *if* the called macro *is* as Function," & vbCrLf
    Code = Code & "'---- otherwise it's 'Empty'." & vbCrLf
    Code = Code & "        thisworkbook.Close SaveChanges:=False" & vbCrLf
    Code = Code & "    End If" & vbCrLf
    Code = Code & "End Sub" & vbCrLf
'---- add macro at the end of the sheet module
    With wbks.VBProject.VBComponents(wbk.Name).CodeModule
        .insertlines .CountOfLines + 1, Code
    End With
    nomenclature.ComputeMode = CatTableComputeOFF

End Sub

Sub mise_a_jour_table()
'--- initialisation objet nomenclateur
    Dim drawingDocument1 As DrawingDocument
    Dim drawingSheets1 As DrawingSheets
    Dim drawingSheet1 As DrawingSheet
    Dim drawingViews1 As DrawingViews
    Dim drawingView1 As DrawingView
    Dim drawingTables1 As DrawingTables
    Dim nomenclature As DrawingTable
    Set drawingDocument1 = CATIA.ActiveDocument
    Set drawingSheets1 = drawingDocument1.Sheets
    Set drawingSheet1 = drawingSheets1.Item("Calque.1")
    Set drawingViews1 = drawingSheet1.Views
    Set drawingView1 = drawingViews1.Item("Main View")
    Set drawingTables1 = drawingView1.Tables
    Set nomenclature = drawingTables1.Item(1)
    nomenclature.ComputeMode = CatTableComputeOFF
    Dim l, r As Integer
    l = nomenclature.NumberOfRows
    For r = 1 To l
'--- mise en page du tableau catia
        nomenclature.SetCellAlignment r, 1, CatTableMiddleCenter
        nomenclature.SetCellAlignment r, 2, CatTableMiddleCenter
        nomenclature.SetCellAlignment r, 3, CatTableMiddleCenter
        nomenclature.SetCellAlignment r, 4, CatTableMiddleLeft
        nomenclature.SetCellAlignment r, 5, CatTableMiddleLeft
    Next
    nomenclature.ComputeMode = CatTableComputeON
   
End Sub

J'énonce le principe pour que vous ne soyez par perdu

Dans un drawing
- Si aucun tableau CATIA n'existe, un tableau est créé, sinon on utilise celui existant
- on lance EXCEL s'il n'est pas déjà lancé
- on créé un nouveau document EXCEL
- on copie le tableau dans le nouveau document Excel
- on créé un bouton et une macro excel permettant :
- de copier le contenu du document EXCEL vers le tableau CATIA
- mettre à jour le tableau excel
- on fermer le document EXCEL

Pour plus d'infos me demander.

Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

Re: Insertion tableau excel sur un plan Catia V5

Message par bamboou9 le Mar 27 Mai 2014 - 1:49

Hello,
je n'ai pas essayé la macro, mais je me demandais s'il était possible d'écrire directement des valeurs dans un tableau catia par macro (au lieu de passer par un excel).

merci

bamboou9
actif
actif

Messages : 31
Date d'inscription : 29/03/2014
Localisation : reims

Revenir en haut Aller en bas

Re: Insertion tableau excel sur un plan Catia V5

Message par men ay le Jeu 23 Avr 2015 - 1:49

hello,
lorsque on modifier la nomenclature sur catia, le tab ecel sera modifier automatiquement? Question Question

men ay
timide
timide

Messages : 1
Date d'inscription : 18/04/2015
Localisation : j

Revenir en haut Aller en bas

Re: Insertion tableau excel sur un plan Catia V5

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum