tyrese69_ Posté(e) le 28 juillet 2008 Posté(e) le 28 juillet 2008 Bonjour à tous,J'ai un tableau que je génère automatiquement, mais le style initial du tableau donne une hauteur de ligne lambda, puis en le remplissant j'ajuste les hauteurs selon, titre sous-titre et autres lignes.En fin de remplissage mes textes sont plus grands que ce que je souhaite !Ils débordent de ma longueur de ligne. Pour avoir les bonnes valeur il faut que je clique sur le tableau et que je lise une valeur, alors tout rentre dans l'ordre ?? Mais la hauteur reste à celle précédente (avec le débordement) Je dois mal régénérer l'afichage ! Par contre, dans le menu contextuel il y "uniformisé les hauteurs de ligne". Cette fonction est elle accessible en VBA ? Bonne fin de journée ! Daniel OLIVES
sechanbask Posté(e) le 2 août 2008 Posté(e) le 2 août 2008 afin de nettoyer des plans, j'ai tenté d'accèder aux propriétés des tableaux mais en vain... Bon courage... si tu trouves pense à moi ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
tyrese69_ Posté(e) le 4 août 2008 Auteur Posté(e) le 4 août 2008 Hi,Voici les petites routines de base qui m'ont permis de démarrer avec les tables ! Option Explicit 'Code de groupe Description ' 0 Nom d 'entité (ACAD_TABLE)' 5 Identificateur d 'entité' 330 ID pointeur logiciel du dictionnaire propriétaire' 100 Marqueur de sous-classe. Il existe trois sous-classes de marqueurs' dans l'ordre suivant : AcDbEntity, AcDbBlockReference, AcDbTable' 92 nombre d 'octets dans les graphiques de l'entité externe' 310 Données des graphiques de l'entité externe (lignes multiples' ; 256 caractères maximum par ligne)' 2 Nom de bloc ; un bloc anonyme commence par la valeur *T.'10,20,30 Point d 'insertion' 342 ID de pointeur matériel de l'objet TABLESTYLE' 343 ID de pointeur matériel de l'enregistrement BLOCK parent'11,21,31 Vecteur de direction horizontale' 90 Drapeau de valeur de table (entier non signé)' 91 Nombre de rangées' 92 Nombre de colonnes' 93 Drapeau pour un remplacement' 94 Drapeau pour un remplacement de couleur de bordure' 95 Drapeau pour un remplacement d'épaisseur de ligne de bordure' 96 Drapeau pour un remplacement de visibilité de bordure' 141 Hauteur de rangée ; cette valeur est répétée, 1 valeur par rangée.' 142 Hauteur de colonne ; cette valeur est répétée, 1 valeur par rangée.' 171 Type de cellule ; cette valeur est répétée, 1 valeur par cellule'1 = Type texte'2 = Type bloc' 172 Valeur de drapeau de cellule ; cette valeur est répétée, 1 valeur par cellule.' 173 Valeur de cellule fusionnée ; cette valeur est répétée, 1 valeur par cellule.' 174 Drapeau booléen indiquant si l'option d'ajustement automatique est définie' pour la cellule ; la valeur est répétée, 1 valeur par cellule.' 175 Largeur de bordure de cellule (applicable aux cellules fusionnées uniquement) ;' cette valeur est répétée, 1 valeur par cellule.' 176 Hauteur de bordure de cellule (applicable aux cellules fusionnées uniquement) ;' cette valeur est répétée, 1 valeur par cellule.' 177 Drapeau de remplacement de cellule ; cette valeur est répétée, 1 valeur par' cellule.' 178 Valeur de drapeau pour une arête virtuelle' 145 Valeur de rotation (réel ; applicable à une cellule de type bloc et à une' cellule de type texte)' 344 ID de pointeur matériel de l'objet FIELD Applicable à une cellule de type texte' uniquement. Si le texte de la cellule contient un ou plusieurs champs, seul' l'ID de l'objet FIELD est enregistré. La chaîne de texte (codes de groupe 1' et 3) est ignorée.' 1 Chaîne de texte dans une cellule. Si la chaîne compte moins de 250 caractères,' tous les caractères apparaissent dans le code 1 ; si la chaîne compte plus de' 250 caractères, elle est divisée en tranches de 250 caractères. Les tranches' sont contenues dans un ou plusieurs codes de code 3. Si des codes de code 3' sont utilisés, le dernier groupe est un code 1 et contient moins de 250' caractères. Cette valeur s'applique à des cellules de type texte uniquement' et est répétée ; 1 valeur par cellule.' 3 Chaîne de texte d'une cellule, en tranches de 250 caractères ; facultatif.' Cette valeur s'applique à des cellules de type texte uniquement et est' répétée ; 1 valeur par cellule.' 340 ID de pointeur matériel de l'enregistrement de table de bloc. Cette valeur' s'applique à des cellules de type bloc uniquement et est répétée ;' 1 valeur par cellule.' 144 Echelle de bloc (réel). Cette valeur s'applique à des cellules de type bloc' uniquement et est répétée ; 1 valeur par cellule.' 179 Nombre de définitions d'attribut dans l'enregistrement de table de bloc' (applicable à une cellule de type bloc uniquement)' 331 ID de pointeur logiciel de la définition d'attribut dans l'enregistrement de' table de bloc, référencé par le code de groupe 179 (applicable à une cellule' de type bloc uniquement). Cette valeur est répétée une fois par définition' d'attribut.' 300 Valeur de chaîne de texte pour une définition d'attribut, répétée une fois par' définition d'attribut et applicable à une cellule de type bloc uniquement' 7 Nom de style de texte (chaîne) ; remplacement appliqué au niveau de la cellule' 140 Valeur de hauteur de texte ; remplacement appliqué au niveau de la cellule' 170 Valeur d 'alignement de cellule ; remplacement appliqué au niveau de la cellule' 64 Valeur de couleur du contenu de la cellule ; remplacement appliqué au niveau' de la cellule' 63 Valeur de couleur d'arrière-plan (remplissage) du contenu de la cellule ;' remplacement appliqué au niveau de la cellule' 69 Valeur Couleurs vraies pour la bordure supérieure de la cellule ;' remplacement appliqué au niveau de la cellule' 65 Valeur Couleurs vraies pour la bordure droite de la cellule ;' remplacement appliqué au niveau de la cellule' 66 Valeur Couleurs vraies pour la bordure inférieure de la cellule ;' remplacement appliqué au niveau de la cellule' 68 Valeur Couleurs vraies pour la bordure gauche de la cellule ;' remplacement appliqué au niveau de la cellule' 279 Epaisseur de ligne de la bordure supérieure de la cellule ;' remplacement appliqué au niveau de la cellule' 275 Epaisseur de ligne de la bordure droite de la cellule ;' remplacement appliqué au niveau de la cellule' 276 Epaisseur de ligne de la bordure inférieure de la cellule ;' remplacement appliqué au niveau de la cellule' 278 Epaisseur de ligne de la bordure gauche de la cellule ;' remplacement appliqué au niveau de la cellule' 283 Drapeau booléen indiquant si la couleur de remplissage est activée ;' remplacement appliqué au niveau de la cellule' 289 Drapeau booléen pour la visibilité de la bordure supérieure de la cellule ;' remplacement appliqué au niveau de la cellule' 285 Drapeau booléen pour la visibilité de la bordure droite de la cellule ;' remplacement appliqué au niveau de la cellule' 286 Drapeau booléen pour la visibilité de la bordure inférieure de la cellule ;' remplacement appliqué au niveau de la cellule' 288 Drapeau booléen pour la visibilité de la bordure gauche de la cellule ;' remplacement appliqué au niveau de la cellule' 70 Direction du flux ; remplacement appliqué au niveau de l'entité table' 40 Marge de cellule horizontale ; remplacement appliqué au niveau de l'entité table' 41 Marge de cellule verticale ; remplacement appliqué au niveau de l'entité table' 280 Drapeau indiquant si le titre est supprimé ; remplacement appliqué au niveau de' l'entité table' 281 Drapeau indiquant si la rangée d'en-tête est supprimée ; remplacement appliqué' au niveau de l'entité table' 7 Nom de style de texte (chaîne) ; remplacement appliqué au niveau de l'entité' table. Une entrée possible pour chaque type de cellule.' 140 Hauteur de texte (réel) ; remplacement appliqué au niveau de l'entité table.' Une entrée possible pour chaque type de cellule.' 170 Alignement de cellule (entier) ; remplacement appliqué au niveau de l'entité' table. Une entrée possible pour chaque type de cellule.' 63 Valeur de couleur pour l'arrière-plan de la cellule ou pour la bordure' verticale gauche de la table ; remplacement appliqué au niveau de' l'entité table. Une entrée possible pour chaque type de cellule.' 64 Valeur de couleur pour le contenu de la cellule ou pour la bordure' horizontale supérieure de la table ; remplacement appliqué au niveau' de l'entité table. Une entrée possible pour chaque type de cellule.' 65 Valeur de couleur pour les lignes de bordure horizontale intérieure ;' remplacement appliqué au niveau de l'entité table' 66 Valeur de couleur pour les lignes de bordure horizontale inférieure ;' remplacement appliqué au niveau de l'entité table' 68 Valeur de couleur pour les lignes de bordure verticale intérieure ;' remplacement appliqué au niveau de l'entité table' 69 Valeur de couleur pour les lignes de bordure verticale droite ;' remplacement appliqué au niveau de l'entité table' 283 Drapeau indiquant si la couleur d'arrière-plan est activée (valeur par défaut = 0) ;' remplacement appliqué au niveau de l'entité table.' Une entrée possible pour chaque type de cellule :' 0 = Désactivée' 1 = Activée'274-279 Epaisseur de ligne pour chaque type de bordure de la cellule' (valeur par défaut = kLnWtByBlock) ;' remplacement possible au niveau de l'entité table.' Un groupe possible pour chaque type de cellule.'284-289 Drapeau pour la visibilité de chaque type de bordure de la cellule' (valeur par défaut = 1) ;' remplacement possible au niveau de l'entité table.' Un groupe possible pour chaque type de cellule :' 0 = Invisible' 1 = Visible ' Test sur les tableaux AutoCADSub testtbl() Dim DwgIndex As AcadTableDim TemplateFileName As StringDim Entity As AcadEntityDim CurrentRow As LongFor Each Entity In ThisDrawing.PaperSpace If TypeOf Entity Is AcadTable Then Set DwgIndex = Entity Exit For End IfNext Entity ' This function updates the table block record that the Table object' references to match changes made to the Table object since the most' recent update of the table block record.DwgIndex.RecomputeTableBlock False'rows and cols are zero basedCurrentRow = 4With DwgIndex .HorzCellMargin = 0 .VertCellMargin = 0 .MergeCells CurrentRow, (CurrentRow + 1), 0, 2 .SetRowHeight CurrentRow, 8 .SetRowHeight CurrentRow + 1, 8 .SetCellTextHeight CurrentRow, 0, 6 .SetCellAlignment CurrentRow, 0, acMiddleCenter .SetCellTextStyle CurrentRow, 0, "titles" .SetText CurrentRow, 0, "HEADER"End With End Sub' Sub Example_Table() ' This example adds a table in model space Dim MyModelSpace As IAcadModelSpace2 Set MyModelSpace = ThisDrawing.ModelSpace Dim Pt(2) As Double Dim MyTable As AcadTable Set MyTable = MyModelSpace.AddTable(Pt, 5, 5, 10, 30) ZoomExtents End Sub' Sub Example_RegenerateTableSuppressed() Dim MyModelSpace As IAcadModelSpace2 Dim MyTable As IAcadTable2 Dim Pt(2) As Double Set MyModelSpace = ThisDrawing.ModelSpace Set MyTable = MyModelSpace.AddTable(Pt, 100, 5, 5, 10) 'Temporarily disable the recomputing of table block MyTable.RegenerateTableSuppressed = True Dim i As Integer, J As Integer For i = 0 To 99 For J = 0 To 4 Call MyTable.SetText(i, J, "my string " & i & ", " & J) Next J Next i 'Now force the recomputing of table block 'so that we can see the update table results MyTable.RegenerateTableSuppressed = False 'You can also call RecomputeTableBlock(true) instead 'to force the regeneration of table 'MyTable.RecomputeTableBlock(True) End Sub' Sub Test()' Fields and User input into TableDim pickObj As AcadMTextDim tblObj As AcadTableDim pickPt As VariantDim tblPt As VariantWith ThisDrawing.Utility.GetEntity pickObj, pickPt, vbCrLf & "Select text: ".GetEntity tblObj, tblPt, vbCrLf & "Select table: "End With Dim vec0(0 To 2) As Doublevec0(0) = 0#: vec0(1) = 0#: vec0(2) = 1#Dim gotRow As Long, gotCol As LongIf tblObj.HitTest(tblPt, vec0, gotRow, gotCol) Then tblObj.SetText gotRow, gotCol, "%<\AcObjProp Object(" & _ CStr(pickObj.ObjectID) & ").TextString \f ""%bl2"">%"End IfEnd Sub' Public Sub testbloc() ' Sort tableDim e As AcadEntityDim b As Variant 'AcadBlockDim eDictionary As ObjectDim sentityObj As AcadSortentsTable Set eDictionary = _ ThisDrawing.ModelSpace.GetExtensionDictionarySet sentityObj = eDictionary.GetObject("ACAD_SORTENTS")Set b = ThisDrawing.ModelSpace sentityObj.GetFullDrawOrder b, TrueDim x As Long'For Each e In sentityObj.BlockFor x = LBound(b) To UBound(b)MsgBox b(x).ObjectName'Next eNext x End Sub' Sub insertbloc() Dim retval As LongDim blkObject As AcadBlockDim tabObject As AcadTableDim blkName As StringDim blkPt As Variant Set blkObject = ThisDrawing.Blocks(blkName)retval = blkObject.ObjectIDThisDrawing.Utility.GetEntity tabObject, blkPt, "Select Table: "Call tabObject.SetBlockTableRecordId(4, 1, retval, True) End Sub' Public Sub GetTextInTable() ' %<\AcExpr (297494.78935545) \f "%lu2%pr2%th44">% Dim oTable As AcadTableDim Point As Variant ThisDrawing.Utility.GetEntity oTable, Point, "Select a table" With oTable'this displays the header row,columnDebug.Print .GetText(0, 0)End WithEnd Sub' Sub TestTable()RemoveTableStyle "My Table Style"MakeTableStyle "My Table Style"End Sub' ''* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *'* 03 - SR Suppression style tableau utilisateur *'* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'Public Sub RemoveTableStyle(StyleName As String) Dim oDict As AcadDictionaryDim oTblSty As AcadTableStyle 'grab the tablestyle dictionary objectSet oDict = ThisDrawing.Dictionaries("Acad_TableStyle")For Each oTblSty In oDict 'Debug.Print oTblSty.Name Select Case oTblSty.name Case Is = StyleName oTblSty.Delete End SelectNext End Sub' '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *'* 04 - Création style tableau utilisateur *'* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'Public Sub MakeTableStyle(StyleName As String) 'future add variables to assign to this Style Dim oDict As AcadDictionaryDim aColor As New AcadAcCmColorDim oTblSty As AcadTableStyleDim sKeyName As StringDim sClassName As String 'grab the tablestyle dictionary objectSet oDict = ThisDrawing.Database.Dictionaries.item("Acad_TableStyle")sKeyName = "NewStyle"sClassName = "AcDbTableStyle"'create the TableStyle object in the dictionarySet oTblSty = oDict.AddObject(sKeyName, sClassName)With oTblSty .name = StyleName .Description = StyleName .HorzCellMargin = 0.06 .VertCellMargin = 0.04 .TitleSuppressed = False .SetTextHeight acDataRow, 4# .SetTextHeight acHeaderRow, 5.8 .SetTextHeight acTitleRow, 6.8 .SetGridVisibility 1, 3, True '' .SetAlignment acDataRow, acMiddleCenterEnd With End Sub'Par contre ce qui est difficile,c'est de retrouver un tableau inseré ! (s'il y a en plusieurs)Il faut lui attacher un xdata ou bien relire le titre pour vérifier si c'est bien le bon !Daniel OLIVES
sechanbask Posté(e) le 16 août 2008 Posté(e) le 16 août 2008 merci beaucoup je vais sans doute regarder ça de plus près pour le nettoyeur.... merci pour ton post !bonne soirée ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant