Méthode Page.SetFormulas (Visio)

Définit les formules d’une ou plusieurs cellules.

Syntaxe

expression. SetFormulas( _SID_SRCStream()_ , _formulaArray()_ , _Flags_ )

Expression Variable qui représente un objet Page .

Paramètres

Nom Requis/Facultatif Type de données Description
SID_SRCStream() Obligatoire Integer Flux qui identifie les cellules à modifier.
formulaArray() Obligatoire Variant Formules à attribuer aux cellules identifiées.
Flags Obligatoire Integer Indicateurs influençant le comportement de SetFormulas.

Valeur renvoyée

Entier

Remarques

La méthode SetFormulas se comporte comme la propriété Formula si ce n'est que vous pouvez l'utiliser pour définir les formules de plusieurs cellules simultanément.

S'il s'agit d'objets Page, il est possible d'utiliser la méthode SetFormulas pour déterminer les résultats d'un jeu de cellules quelconque dans n'importe quel jeu de formes de la page ou de la forme de base. Vous indiquez à la méthode SetFormulas les cellules à déterminer en transmettant un tableau d'entiers dans SID_FluxSRC(). SID_FluxSRC() est un tableau à une dimension d'entiers de 2 octets.

Pour les objets Page, SID_SRCStream() doit être un tableau unidimensionnel de 4 n entiers de 2 octets pour n>= 1. La méthode SetFormulas interprète le flux comme suit :

{sheetID, sectionIdx, rowIdx, cellIdx }n

IDFeuille est la propriété ID de l'objet Shape dans la page ou la forme de base dont le résultat de cellule doit être modifié.

Si IDFeuille dans une entrée a la valeur visInvalShapeID (-1) ou si l'octet inférieur de IdxSection a la valeur visSectionInval (255), l'entrée est ignorée par la méthode SetResults. La raison est que le même tableau SID_FluxSRC() peut être utilisé pour plusieurs appels de SetFormulas, GetFormulas et de méthodes similaires avec l'appelant n'ayant besoin d'apporter que des modifications mineures au flux entre les appels.

Le paramètre formulaArray() doit être un tableau unidimensionnel de 1 <= m variantes. Chaque Variant doit être une String, une référence à une String ou être Empty. Si formulaArray(i) est vide, la i 'ième cellule est définie sur la formule dans formulaArray(j) , où j est l’index de l’entrée précédente la plus récente qui n’est pas vide. S'il n'existe pas d'entrée précédente non vide, la cellule correspondante n'est pas modifiée. Si moins de formules que de cellules sont spécifiées ( m<n ), la i 'ième cellule, i>m , est définie sur la même formule que celle choisie pour définir la cellule m 'th. Ainsi, pour attribuer plusieurs cellules à la même formule, il vous suffit de transmettre une copie de la formule.

Le paramètre Indicateurs doit être un masque binaire composé des valeurs suivantes.

Constante Valeur Description
visSetBlastGuards &H2 Remplace les valeurs de cellule actuelles même si elles sont protégées.
visSetTestCircular &H4 Teste l'existence de références de cellule circulaires.
visSetUniversalSyntax &H8 Les formules sont en syntaxe universelle.

La valeur renvoyée par la méthode SetFormulasest le nombre d'entrées dans SID_FluxSRC() dont le traitement a réussi. Si les entrées i<n sont correctement traitées, mais qu’une erreur se produit sur l’entrée i + 1ère, la méthode SetFormulas déclenche une exception et retourne i. Dans le cas contraire, n est renvoyé.

Exemple

La macro suivante indique comment utiliser la méthode SetFormulas. Elle implique qu'une page active de Microsoft Office Visio comporte au moins trois formes. Elle utilise la méthode GetFormulas pour obtenir la largeur de la forme 1, la hauteur de la forme 2 et l'angle de la forme 3. Elle utilise ensuite la méthode SetFormulas pour définir la largeur de la forme 1 sur la hauteur de la forme 2 et la hauteur de la forme 2 sur la largeur de la forme 1. L'angle de la forme 3 n'est pas modifié.

Cet exemple utilise la méthode GetFormulas de l'objet Page pour obtenir trois formules de cellule et la méthode SetFormulas du même objet pour définir les formules. Le tableau d'entrée comporte quatre cases par cellule, comme si vous utilisiez des objets Master. Pour les objets Shape ou Style, seules trois cases par cellule suffisent (section, ligne et cellule).

 
Public Sub SetFormulas_Example() 
 
 On Error GoTo HandleError 
 
 Dim aintSheetSectionRowColumn(1 To 3 * 4) As Integer 
 aintSheetSectionRowColumn(1) = ActivePage.Shapes(1).ID 
 aintSheetSectionRowColumn(2) = visSectionObject 
 aintSheetSectionRowColumn(3) = visRowXFormOut 
 aintSheetSectionRowColumn(4) = visXFormWidth 
 
 aintSheetSectionRowColumn(5) = ActivePage.Shapes(2).ID 
 aintSheetSectionRowColumn(6) = visSectionObject 
 aintSheetSectionRowColumn(7) = visRowXFormOut 
 aintSheetSectionRowColumn(8) = visXFormHeight 
 
 aintSheetSectionRowColumn(9) = ActivePage.Shapes(3).ID 
 aintSheetSectionRowColumn(10) = visSectionObject 
 aintSheetSectionRowColumn(11) = visRowXFormOut 
 aintSheetSectionRowColumn(12) = visXFormAngle 
 
 'Return the formulas of the cells. 
 Dim avarFormulaArray() As Variant 
 ActivePage.GetFormulas aintSheetSectionRowColumn, avarFormulaArray 
 
 'Use SetFormulas to: 
 ' - Set the width of shape 1 to height of shape 2. 
 ' - Set height of shape 2 to width of shape 1. 
 ' Note: avarFormulaArray() is indexed from 0 to 2. 
 Dim varTemp As variant 
 varTemp = avarFormulaArray(0) 
 avarFormulaArray(0) = avarFormulaArray(1) 
 avarFormulaArray(1) = varTemp 
 
 'Pass the same array back to SetFormulas that we 
 'just passed to GetFormulas, leaving angle alone. By setting 
 'the sheet ID entry in the third slot of the 
 'aintSheetSectionRowColumn array to visInvalShapeID, 
 'we tell SetFormulas to ignore that slot. 
 aintSheetSectionRowColumn (9) = visInvalShapeID 
 
 'Tell Microsoft Visio to set the formulas of the cells. 
 ActivePage.SetFormulas aintSheetSectionRowColumn, avarFormulaArray, 0 
 
 Exit Sub 
 
HandleError: 
 
 MsgBox "Error" 
 
 Exit Sub 
 
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.