Dans cet article, nous allons créer une macro pour créer des feuilles de calcul distinctes pour chaque nom mentionné dans les données.

Les données brutes se composent du nom suivi des détails de la campagne et du nombre d’appels traités.

ArrowRawData

Dans cet exemple, nous voulons créer des feuilles de calcul distinctes pour chaque nom et la feuille contiendra des données liées aux campagnes et au nombre d’appels traités par l’agent.

ArrowOutput

Explication logique

Dans cet article, nous avons créé la macro «AfterNamesCopying». Il séparera les données sur différentes feuilles, en fonction du nom de l’agent. Pour séparer les données, nous vérifions le «nom» dans les données et copions les données sous la ligne «nom» dans la feuille respective.

Explication du code

Gauche (WksData.Cells (IntRow, 1), 4) = « nom »

Le code ci-dessus est utilisé pour vérifier si la valeur dans une cellule commence par «nom».

Droite (WksData.Cells (IntRow, 1), Len (WksData.Cells (IntRow, 1)) – 5)

Le code ci-dessus est utilisé pour extraire le nom de l’agent de la valeur de la cellule.

Worksheets.Add after: = Feuilles de travail (Worksheets.Count)

Le code ci-dessus est utilisé pour insérer une nouvelle feuille de calcul, après la dernière feuille de calcul.

ActiveSheet.Name = StrSheet Le code ci-dessus est utilisé pour renommer la feuille active.

Range (.Cells (IntRowL, 1), .Cells (IntRowL, 3)). Value = _ Range (WksData.Cells (IntRow, 1), WksData.Cells (IntRow, 3)). Value Le code ci-dessus est utilisé pour ajouter des données liées à cet agent particulier.

Veuillez suivre ci-dessous pour le code

Option Explicit

Sub AfterNamesCopying()

'Declaring variables

Dim wks As Worksheet, WksData As Worksheet

Dim IntRow As Integer, IntRowL As Integer

Dim StrSheet As String

'Disabling screen updates

Application.ScreenUpdating = False

'Initializing variables

Set WksData = ActiveSheet

IntRow = 10

'Loop until cell in first column is empty

Do Until IsEmpty(WksData.Cells(IntRow, 1))



'Checking whether value in the cell begins with string "name"

If Left(WksData.Cells(IntRow, 1), 4) = "name" Then



'Extracting name from the cell value

StrSheet = Right(WksData.Cells(IntRow, 1), Len(WksData.Cells(IntRow, 1)) - 5)



'Adding new worksheet

Worksheets.Add after:=Worksheets(Worksheets.Count)



'Renaming the sheet

ActiveSheet.Name = StrSheet

IntRowL = 1



Else



With Worksheets(StrSheet)

'Inserting data to respective sheets

Range(.Cells(IntRowL, 1), .Cells(IntRowL, 3)).Value = _

Range(WksData.Cells(IntRow, 1), WksData.Cells(IntRow, 3)).Value

End With

IntRowL = IntRowL + 1

End If



IntRow = IntRow + 1

Loop

'Enabling screen updates

Application.ScreenUpdating = True

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]