Dans cet article, nous allons apprendre comment obtenir des données à partir d’un classeur externe dans le classeur actif en fonction de certaines conditions définies.

Dans cet exemple, nous voulons obtenir des détails sur l’argent d’une personne en particulier en fonction du nom et du type de catégorie de banque. Les détails relatifs à l’argent sont stockés dans le classeur «Fichier de données».

DataFile

Dans cet exemple, nous avons écrit la procédure VBA «ReadFormatting» qui renvoie les détails de l’argent avec le style de format.

Explication logique

La procédure «ReadFormatting» prend l’objet range comme entrée et renvoie la sortie dans la cellule à côté de l’objet range défini.

Il vérifie la valeur définie dans la plage dans la première ligne du classeur «Fichier de données» et trouve le numéro de colonne. Il vérifie la valeur de la cellule de la colonne précédente de la plage définie dans la première colonne du classeur «Fichier de données» et trouve le numéro de ligne.

Après avoir trouvé le numéro de colonne et le numéro de ligne de correspondance possible, la valeur de la cellule avec le numéro de colonne et le numéro de ligne trouvés est renvoyée avec le style de format.

La procédure «ReadFormatting» peut être exécutée en utilisant une autre procédure ou événement.

Nous allons lancer la procédure «ReadFormatting» de deux manières: -. Utilisation de la procédure. Utilisation de l’événement de changement de feuille de calcul

Utilisation de la procédure

Nous avons utilisé la procédure «CallingProcedure» pour appeler la procédure «ReadFormatting» avec la cellule N13 comme objet range. Il vérifiera la valeur dans la cellule N13 dans la première ligne du classeur externe pour trouver le numéro de colonne et vérifiera la valeur dans la cellule M13 dans la première colonne du classeur externe pour trouver le numéro de ligne. Après avoir trouvé le numéro de colonne et le numéro de ligne, il renverra la valeur avec le style de format.

ArrowRunningMacro

Utilisation de l’événement de changement de feuille de calcul

Pour ajouter un événement de modification de feuille de calcul, procédez comme suit: -. Cliquez sur le nom de la feuille dans Visual Basic Editor, pour activer le module de feuille.

ArrowWritingWorksheetEvent

  1. Cliquez sur la feuille de calcul dans la zone de liste déroulante de gauche en haut de la fenêtre de code.

ArrowWorksheetChangeEvent

  1. Cliquez sur le changement dans la zone de liste déroulante de droite en haut de la fenêtre de code.

Nous avons utilisé l’événement de changement de feuille de calcul pour exécuter la procédure. L’événement de modification de feuille de calcul est déclenché lorsque la valeur d’une cellule du classeur est modifiée. En utilisant l’instruction IF, nous avons restreint l’événement de changement pour qu’il se déclenche uniquement lorsque la valeur de la cellule de la colonne I est modifiée. La cellule dont la valeur est modifiée, sert d’entrée pour la procédure «ReadFormatting».

Veuillez suivre ci-dessous pour le code

Option Explicit

Sub CallingProcedure()

'Calling procedure ReadFormatting for cell N13

Call ReadFormatting(Range("N13"))



End Sub

Sub ReadFormatting(rng As Range)

Dim varRow, varCol As Long

Application.ScreenUpdating = False

'Activating workbook "Data file.xlsx"

Workbooks("Data file.xlsx").Activate

'Checking for Errors

'If any runtime error occur then it will the pointer to end of the procedure

On Error GoTo Last

'Finding the column no after matching rng value in the first row of "Data file.xlsx" workbook

varRow = Application.Match(rng.Value, Rows(1), 0)

'Offset method is used for moving one cell in the previous column

'Finding the row no after matching value of cell in the first column of "Data file.xlsx" workbook

varCol = Application.Match(rng.Offset(0, -1).Value, Columns(1), 0)

'Using If statement for checking errors

'If error not found in varRow and varCol then execute below code

If Not IsError(varRow) And Not IsError(varCol) Then

'Copying value of cell where match of row and column intersect

Cells(varCol, varRow).Copy



'Pasting the format of copied cell

rng.Offset(0, 1).PasteSpecial xlPasteFormats



'Pasting the value of copied cell

rng.Offset(0, 1).PasteSpecial xlPasteValues



'Unselecting the previous copied data and clearing the cache

Application.CutCopyMode = False



End If

Application.ScreenUpdating = True

Last:

Workbooks("Searching_And_Getting_Data_From_Other_File_Along_With_Formatting.xlsm").Activate



End Sub

Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]