image

Le bloc With – End With dans VBA est utilisé pour indiquer à VBA que nous allons utiliser l’objet donné et qu’il ne doit considérer les propriétés de l’objet donné qu’une fois que nous utilisons l’opérateur point. Nous verrons des exemples plus loin dans cet article.

Syntaxe avec – Fin avec bloc

With [Object]

'Code to alter or use [Object]

'--

'--

End With

Alors maintenant que nous connaissons la syntaxe du bloc With – End With, voyons son utilisation.

Exemple de With – End With Block Disons que je veux faire plusieurs changements à la plage A2: A10. Je souhaite sélectionner cette gamme, modifier ses couleurs de remplissage, son style de police, etc. Comment le ferais-je généralement? Probablement comme ça:

Sub test()

Range("A1:A10").Select

Range("A1:A10").Interior.ColorIndex = 8

Range("A1:A10").Font.Name = "Algerian"

Range("A1:A10").Font.ColorIndex = 12

Range("A1:A10").Font.Underline = xlUnderlineStyleDouble

Range("A1:A10").Copy Range("B1:B10")

Range("A1:A10").Clear

End Sub

Ce qui précède sélectionne la plage A1: A10. Modifie la couleur intérieure de la plage en indice de couleur 8. Modifie la police en algérien. Remplace la couleur de la police par l’index de couleur 12. Souligne le texte dans la plage avec un double soulignement.

Ensuite, il copie la plage A1: A10 vers la plage B1: B10 de la même feuille. Enfin, il efface la plage A1: A10.

Vous pouvez remarquer que pour faire chaque opération avec la plage A1: A10, nous devons l’écrire à chaque fois. Ensuite, l’opérateur point accède à ses propriétés. Cela réduit la vitesse de traitement et augmente la charge de travail des programmeurs VBA. L’alternative pour ce faire est d’utiliser un bloc With: Le code ci-dessous fait la même chose que le code ci-dessus mais plus rapidement.

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

.Font.Name = "Algerian"

.Font.ColorIndex = 12

.Font.Underline = xlUnderlineStyleDouble

.Copy Range("B1:B10")

.Clear

End With

End Sub

image

Voyons un autre exemple.

Si vous avez créé un objet Outlook Mail, vous pouvez utiliser cet objet pour initialiser toutes ses propriétés et utiliser des méthodes.

Set outMail = Outlook.Application.CreateItem(0)

With outMail

.To = "abcd.mail.com" 'Mandatory. Here you define the destination mail id.

.cc = "cc.mail.com" 'optional. Cc mail id if you want.

.BCC = "bcc.mail.com" 'optional. Bcc mail id if you want.

.Subject = subj 'should have. The massage on mail body.

.Body = msg 'optional. The massage on mail body.

.Attachments.Add "C:/exceltip.com\test.xlsx"

.Send

End With

Comment ça marche?

Eh bien, lorsque nous écrivons With Range (« A1: A10 »), vba verrouille sa référence à la plage d’objets (« A1: A10 »). Ainsi, chaque fois que nous écrivons l’opérateur point (.), VBA répertorie tous les membres de cette classe range qui n’affecteront que l’objet Range (« A1: A10 ») ou tout objet que vous avez mentionné. Le verrou de référence se libère lorsque VBA lit l’instruction End With.

Nested With Blocks Nous pouvons avoir un bloc dans un autre bloc. Dans l’exemple ci-dessus, nous avons utilisé un objet range pour le sélectionner. Ensuite, nous avons utilisé Range.Font plusieurs fois pour travailler avec les polices. C’est encore une fois répétitif. Le code ci-dessus peut également être écrit comme ceci:

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

'Using another With within a With Block

With .Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

End With

.Copy Range("B1:B10")

.Clear

End With

End Sub

Le bloc intérieur avec doit faire référence à un objet qui est un sous-membre de l’objet extérieur. Nous pouvons désigner l’extérieur avec comme objet avec et l’intérieur avec comme enfant avec. Lorsque vous démarrez en interne avec, l’objet doit être écrit avec l’opérateur point précédent.

Une fois que vous êtes enfant, vous ne pouvez pas accéder aux propriétés spécifiques des parents. Par exemple, le code ci-dessous est incorrect.

Sub test()

With Range("A1:A10")

.Select

.Interior.ColorIndex = 8

'Using another With within a With Block

With .Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

'The below code will generate error as copy and clear methods does not belong to font class.

.Copy Range("B1:B10")

.Clear

End With

End With

End Sub

Entièrement qualifié avec bloc Si ​​je veux apporter des modifications avec la police de la plage A1: A10 de la feuille 2 dans le code contenant le classeur, nous devrions utiliser un bloc entièrement qualifié.

Les deux codes ci-dessous fonctionneront de la même manière.

Sub test2()

With ThisWorkbook

With .Sheets("Sheet2")

With .Range("A1:A10")

With .Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

End With

End With

End With

End With

End Sub
'Fully qualified with block

Sub test3()

With ThisWorkbook.Sheets("Shee2").Range("A1:A10").Font

.Name = "Algerian"

.ColorIndex = 12

.Underline = xlUnderlineStyleDouble

End With

End Sub

Vous pouvez voir la différence. Ainsi, lorsque vous savez que vous allez utiliser plusieurs méthodes et propriétés à partir d’un objet, donnez un nom complet au début. Si vous comptez utiliser des objets enfants, utilisez l’approche précédente. Les programmeurs expérimentés utilisent les deux méthodes dans des situations appropriées.

Alors oui les gars, c’est ainsi que nous utilisons le bloc With – End With dans VBA. J’espère avoir été suffisamment explicatif et cet article vous a aidé à comprendre le concept de With – End With. Si vous avez des doutes concernant cet article, ou tout autre sujet, demandez-moi dans la section commentaires ci-dessous. Je serai heureux de vous aider.

Articles liés:

lien: / general-topics-in-vba-vba-variables-in-excel [Variables VBA dans Excel] | * VBA signifie Visual Basic pour Applications.

C’est un langage de programmation de Microsoft. Il est utilisé avec les applications Microsoft Office telles que MSExcel, MS-Word et MS-Access, tandis que les variables VBA sont des mots-clés spécifiques.

lien: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope] | * Dans tous les langages de programmation, nous avons des spécificateurs d’accès aux variables qui définissent d’où une variable définie peut être accédée. Excel VBA ne fait pas exception. VBA a également des spécificateurs de portée.

lien: / cells-ranges-rows-and-columns-in-vba-quelle-est-la-difference-entre-byref-and-byval-arguments-vba-interview-question [Arguments ByRef et ByVal] | Lorsqu’un argument est passé en tant qu’argument ByRef à un autre sous ou fonction, la référence de la variable réelle est envoyée. Toutes les modifications apportées à la copie de la variable seront reflétées dans l’argument d’origine.

lien: / fichiers-classeur-et-feuilles de calcul-dans-vba-supprimer-feuilles-sans-confirmation-invites-en-utilisant-vba-dans-microsoft-excel [Supprimer les feuilles sans invites de confirmation en utilisant VBA dans Microsoft Excel] | Puisque vous supprimez des feuilles à l’aide de VBA, vous savez ce que vous faites.

Vous voudriez dire à Excel de ne pas afficher cet avertissement et de supprimer la fichue feuille.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur à l’aide de VBA dans Microsoft Excel 2016] | Dans ce code, nous avons d’abord créé une référence à un objet de classeur. Et puis nous l’avons initialisé avec un nouvel objet classeur. L’avantage de cette approche est que vous pouvez effectuer facilement des opérations sur ce nouveau classeur. Comme enregistrer, fermer, supprimer, etc `link: / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Afficher un message sur La barre d’état Excel VBA *] `| La barre d’état dans Excel peut être utilisée comme moniteur de code. Lorsque votre code VBA est long et que vous effectuez plusieurs tâches à l’aide de VBA, vous désactivez souvent la mise à jour de l’écran afin de ne pas voir cet écran scintiller.

lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016] | * Ce code désactive non seulement VBA alertes mais augmente également l’efficacité temporelle du code. Voyons comment.

Articles populaires:

lien: / clavier-formule-raccourcis-50-excel-raccourcis-pour-augmenter-votre-productivité [50 raccourcis Excel pour augmenter votre productivité] | Accélérez votre tâche. Ces 50 raccourcis vous permettront de travailler encore plus rapidement sur Excel.

lien: / formules-et-fonctions-introduction-de-vlookup-function [La fonction RECHERCHEV dans Excel] | C’est l’une des fonctions les plus utilisées et les plus populaires d’Excel qui est utilisée pour rechercher des valeurs à partir de différentes plages et feuilles. lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016] | Comptez les valeurs avec des conditions en utilisant cette fonction étonnante. Vous n’avez pas besoin de filtrer vos données pour compter des valeurs spécifiques.

La fonction Countif est indispensable pour préparer votre tableau de bord.

lien: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel] | C’est une autre fonction essentielle du tableau de bord. Cela vous aide à résumer les valeurs sur des conditions spécifiques.