Recherche et d’obtenir la valeur du classeur externe en fonction de certaines conditions et coller la valeur avec le style de format à l’aide VBA dans Microsoft Excel.
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».
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.
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.
-
Cliquez sur la feuille de calcul dans la zone de liste déroulante de gauche en haut de la fenêtre de code.
-
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]