Révision des macros Visual Basic enregistrées

23.08.2021

L'enregistrement de macros est très utile lorsque vous essayez de trouver les méthodes et propriétés Visual Basic que vous souhaitez utiliser. Si vous ne savez pas quelles propriétés et méthodes utiliser, activez l'enregistrement de la macro et exécutez la procédure manuellement. L'enregistrement de macros compile vos actions en code Visual Basic. Il existe toutefois certaines restrictions à l'enregistrement des macros. Les éléments suivants ne peuvent pas être enregistrés :

Branches conditionnelles

Affectations variables

Structures en boucle

Formulaires personnalisés

Traitement des erreurs

Personnaliser l'interface utilisateur de FlexPro

Pour améliorer vos macros, vous pouvez modifier le code qui a été enregistré dans votre module.

Suppression de la propriété de sélection

Les macros créées par l'enregistrement de macros dépendent souvent de la sélection que vous faites. Au début de la plupart des macros enregistrées, vous verrez "Sélection". Les macros enregistrées utilisent la propriété Selection pour renvoyer l'objet Selection. Dans l'exemple suivant, une ligne est ajoutée à un ensemble de données en saisissant la valeur 0 dans le champ gris de l'éditeur situé sous la dernière ligne de l'ensemble de données.

Sous Macro1()

    ActiveDatabase.ActiveObject.Selection.ActiveValue = 0#

    ActiveDatabase.ActiveObject.Selection.Move fpDataSelectionDown

End Sub

Bien que cette macro exécute la tâche, elle présente l'inconvénient de ne s'exécuter correctement que si l'ensemble de données est actuellement affiché dans l'éditeur de données et que le champ de saisie situé sous la dernière ligne est sélectionné. Ces deux problèmes peuvent être résolus en modifiant la macro de manière à ce qu'elle n'utilise pas l'objet Sélection. Voici la macro révisée :

Sub MyMacro()

    ActiveDatabase.ActiveObject.NumberOfRows = _

        ActiveDatabase.ActiveObject.NumberOfRows + 1

    ActiveDatabase.ActiveObject.Value(fpDataComponentAll, 1 _

        , ActiveDatabase.ActiveObject.NumberOfRows) = 0#

End Sub

La première instruction ajoute une ligne à l'ensemble des données actives. La deuxième instruction utilise la méthode Range pour renvoyer un objet Range qui représente précisément la valeur nouvellement insérée. En attribuant la valeur 0 à la propriété Value de cet objet Range, la valeur nouvellement insérée est initialisée. Pour plus d'informations sur l'utilisation de l'objet Range, consultez la section Working with Data Sets.

Utiliser avec... Finir avec

Les instructions de macro qui font référence au même objet peuvent être simplifiées en utilisant la structure With...End With. Par exemple, la macro suivante a été enregistrée lorsque le texte sélectionné est devenu rouge, avec une police en gras et une taille de police de 10 points.

Sous Macro1()

ActiveDatabase.ActiveObject.Selection.Font.Bold = True

ActiveDatabase.ActiveObject.Selection.Font.Size = 10

ActiveDatabase.ActiveObject.Selection.LineFormat.Color = fpColorRed

End Sub

La propriété Selection est utilisée avec chaque instruction pour renvoyer un objet Selection. La macro peut être simplifiée de manière à ce que la propriété Selection ne soit utilisée qu'une seule fois.

Sub MyMacro()

Avec ActiveDatabase.ActiveObject.Selection

    .Font.Bold = True

    .Font.Size = 10

    .LineFormat.Color = fpColorRed

End With

End Sub

Partager l’article ou envoyer par mail :

Vous serez probablement intéressé par les articles suivants :