Bonjour à tous,
J'ai besoin de créer une macro sur Excel mais étant novice en la matière, j'ai un problème que je n'arrive pas à régler.
J'ai mis en fichier joint une version simplifiée des feuilles de calcul concernées par la macro.
Objectif: Lorsqu'on sélectionne un cost center dans la fenêtre s'ouvrant au début de la macro, mettre dans Feuil3 -> Colonne Value les valeurs correspondant à chaque cost element (sous-catégorie) de ce cost center (catégorie).
Problème: lors de l'exécution de la macro, j'ai un message d'erreur m'indiquant que "l'indice n'appartient pas à la sélection". Une ligne de mon détail de la macro se met en jaune et je ne vois pas où est l'erreur dans cette ligne.
Je vous mets ci-dessous la macro en question, avec la ligne jaune (en gras ici).
J'espère que l'un ou l'une d'entre vous saura m'aider!
Merci d'avance.
Sub Macro1()
Dim CellCostCenter As Range
Dim CellCostElement As Range
'Donner la référence de la cellule du cost center
Set CellCostCenter = Application.InputBox("Cellule cost center", "Cost center", Type:=8)
Set CellCostElement = CellCostCenter.Offset(0, 2)
'Sélectionne tous les cost elements du cost center de référence
Sheets("Feuil15").Select
Dim PlageCostCenter0 As Range
Dim PlageCostElement As Range
Set PlageCostCenter0 = Nothing
With ActiveSheet.Range("A:A")
Set PlageCostCenter = .Find(what:=CellCostCenter.Value, LookIn:=x1Values)
If Not PlageCostCenter Is Nothing Then
FirstAddress = PlageCostCenter.Address
Set PlageCostCenter0 = PlageCostCenter.Offset(0, 3)
Do
Set PlageCostCenter = .FindNext(PlageCostCenter)
Set PlageCostCenter0 = Union(PlageCostCenter0, PlageCostCenter.Offset(0, 3))
Loop While Not PlageCostCenter Is Nothing And PlageCostCenter.Address <> FirstAddress
End If
End With
'Elargit la plage qui inclue maintenant les Values correspondantes à chaque cost element de lancienne sélection
Set PlageCostCenter0 = Union(PlageCostCenter0, PlageCostCenter0.Offset(0, 4))
'Recherche dans la plage la Value pour chaque cost element indiqué dans Feuil3
Do Until CellCostElement = ""
CellCostElement.Offset(0, 1).Value = WorksheetFunction.VLookup(CellCostElement.Value, PlageCostCenter0, 2, False)
Set CellCostElement = CellCostElement(1, 0)
Loop
Sheets("Feuil3").Select
CellCostCenter.Select
End Sub
J'ai besoin de créer une macro sur Excel mais étant novice en la matière, j'ai un problème que je n'arrive pas à régler.
J'ai mis en fichier joint une version simplifiée des feuilles de calcul concernées par la macro.
Objectif: Lorsqu'on sélectionne un cost center dans la fenêtre s'ouvrant au début de la macro, mettre dans Feuil3 -> Colonne Value les valeurs correspondant à chaque cost element (sous-catégorie) de ce cost center (catégorie).
Problème: lors de l'exécution de la macro, j'ai un message d'erreur m'indiquant que "l'indice n'appartient pas à la sélection". Une ligne de mon détail de la macro se met en jaune et je ne vois pas où est l'erreur dans cette ligne.
Je vous mets ci-dessous la macro en question, avec la ligne jaune (en gras ici).
J'espère que l'un ou l'une d'entre vous saura m'aider!
Merci d'avance.
Sub Macro1()
Dim CellCostCenter As Range
Dim CellCostElement As Range
'Donner la référence de la cellule du cost center
Set CellCostCenter = Application.InputBox("Cellule cost center", "Cost center", Type:=8)
Set CellCostElement = CellCostCenter.Offset(0, 2)
'Sélectionne tous les cost elements du cost center de référence
Sheets("Feuil15").Select
Dim PlageCostCenter0 As Range
Dim PlageCostElement As Range
Set PlageCostCenter0 = Nothing
With ActiveSheet.Range("A:A")
Set PlageCostCenter = .Find(what:=CellCostCenter.Value, LookIn:=x1Values)
If Not PlageCostCenter Is Nothing Then
FirstAddress = PlageCostCenter.Address
Set PlageCostCenter0 = PlageCostCenter.Offset(0, 3)
Do
Set PlageCostCenter = .FindNext(PlageCostCenter)
Set PlageCostCenter0 = Union(PlageCostCenter0, PlageCostCenter.Offset(0, 3))
Loop While Not PlageCostCenter Is Nothing And PlageCostCenter.Address <> FirstAddress
End If
End With
'Elargit la plage qui inclue maintenant les Values correspondantes à chaque cost element de lancienne sélection
Set PlageCostCenter0 = Union(PlageCostCenter0, PlageCostCenter0.Offset(0, 4))
'Recherche dans la plage la Value pour chaque cost element indiqué dans Feuil3
Do Until CellCostElement = ""
CellCostElement.Offset(0, 1).Value = WorksheetFunction.VLookup(CellCostElement.Value, PlageCostCenter0, 2, False)
Set CellCostElement = CellCostElement(1, 0)
Loop
Sheets("Feuil3").Select
CellCostCenter.Select
End Sub
Pièces jointes
Dernière édition: