Afin d'afficher un tableau comme je le souhaite sur une mise en plan, je dois mettre en forme le fichier excel où se trouve ce dernier. Cela passe par masquer et dans certains cas afficher des colonnes/lignes et j'aimerais le faire automatiquement donc par macro mais je n'y arrive pas.
J'ai enregistrer une macro sous excel pour voir la tête que cela peut avoir : Sub Cacher_ligne_colonne() ' 'Macro pour cacher les ligne et les colonne que je souhaite Columns("B:E").Select Selection.EntireColumn.Hidden = True Columns("I:K").Select Selection.EntireColumn.Hidden = True Rows("35:36").Select Range("A36").Activate Selection.EntireRow.Hidden = True Rows("2:8").Select Range("A8").Activate Selection.EntireRow.Hidden = True End Sub
Mais je suppose que sous SW ce n'est pas pareil, peut-être faut-il simplement rajouter des xlSW quelque part ? Et en enregistrant la manipulation sous SW il enregistre que les mouvement de la fenêtre pas l'action de "masquage" :
Dim swApp As Object
Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = _ Application.SldWorks
Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("Famille de pièces", "DESIGNTABLE", 0, 0, 0, False, 0, Nothing, 0) Part.InsertFamilyTableEdit Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Part.ClearSelection2 True Part.CloseFamilyTable End Sub
Je pense que tu dois déjà ouvrir ta table avec cette méthode : http://help.solidworks.com/2016/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModelDoc2~InsertFamilyTableEdit.html
Ensuite tu créer une macro Excel et tu l'appelles depuis SW.
Merci pour ta réponse, effectivement j'ouvre déjà ma famille de pièce. J'ai un code déjà bien développer pour choisir des configuration au travers d'un formulaire SW donc j'utilise déjà ce genre de syntaxe.
Étant assez novice en programmation Vba, je ne savais pas qu'il était possible d'appeler des "macro* Excel depuis SW. L'idée serait de faire une macro écrite dans Excel mais appeler depuis SW ou elle s'exécuterait tout le temps ? Aurais-tu un exemple de code appelant une fonction Excel depuis SW stp ?
je reviens vers ce sujet car j'ai fait quelque recherches mais je suis de nouveau bloqué. J'ai écrit un code fonctionnant dans Excel afin d'afficher toutes les lignes et colonnes d'un tableau :
Dim ShowAllLines As Integer
Dim ShowAllColumns As Integer
ShowAllLines = Columns(1).Find("", after:=[A1]).Row
Range("A1:A" & ShowAllLines).Select
Selection.EntireRow.Hidden = False
ShowAllColumns = Rows(1).Find("", after:=[A1]).Column
Range("A1:" & Chr(64 + ShowAllColumns) & "1").Select
Selection.EntireColumn.Hidden = False
Ceci marche très bien depuis le module Vba d'Excel mais dès que je passe sur SW j'ai une erreur dès la première ligne :
Dim ShowAllLines As Integer
Dim ShowAllColumns As Integer
ShowAllLines = xlWS.Columns(1).Find("", after:=[A1]).Row
xlWS.Range("A1:A" & ShowAllLines).Select
Selection.EntireRow.Hidden = False
ShowAllColumns = xlWS.Rows(1).Find("", after:=[A1]).Column
xlWS.Range("A1:" & Chr(64 + ShowAllColumns) & "1").Select
Selection.EntireColumn.Hidden = False
Je suppose que c'est dans la syntaxe de la fonction "Find" que cela bloque mais je n'ai pas trouvé d'aide déjà existante, c'est pourquoi je me permets de poster ici.
J'ai du raccourcir mon code car le reste était en construction donc très probablement incompréhensible pour vous et j'ai changé le non de 2-3 variables.
Je ne comprends pas bien ce que tu veux dire car pour moi je récupère déjà la feuille et le classeur actifs vu que j'écris dedans. En fait grâce à ma macro, j'ouvre le fichier 3D, j'ouvre la famille associée, j'écris le choix de l'utilisateur dans une cellule, je ferme la famille, je mets à jour la famille, je reconstruis et là ma configuration est activée.
Et dans cela j'aimerais masquer/afficher des colonnes suivant le choix de l'utilisateur.