Bonjour,
Dans le cadre de mon travail, je dois remplacer, dans une liste excel, une cellule par plusieurs cellules côte à côte.
Par exemple, remplacer toutes les cellules contenant F-035 par deux cellules contant L10 et L15 et toutes les cellules contant F-036 par trois cellules contenant L1, L2 et L8.
Etant débutant en vba, j'ai réussi à glâner quelques informations sur internet qui m'ont permises d'écrire un début de programme (pour un seul type de cellule):
Sub test()
Dim LocF035 As String
Dim Cell As Range
LocF035 = "F-035"
'Selection de la plage de cellules à remplacer
ActiveSheet.UsedRange.Select
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Offset(0, 0).Select
ligne = ActiveCell.Row: colonne = ActiveCell.Column
Range(Cells(2, 4), Cells(ligne, colonne)).Select
'Test de chaque cellules de la sélection
For Each Bloc In Selection
'Recherche du code du local type F-035
Set Cell = Range(Cells(2, 4), Cells(ligne, colonne)).Find(LocF035, lookat:=xlWhole)
Cells(Cell.Row, Cell.Column).Select
Cells(ActiveCell.Row, ActiveCell.Column) = "L10"
Cells(ActiveCell.Row, ActiveCell.Column + 1) = "L15"
Next Bloc
End Sub
Lorsque je l'exécute, il m'indique "Variable objet ou variable de bloc With non définie" à la ligne "Cells(Cell.Row, Cell.Column).Select" malgré que le résultat final est correct (toutes mes cellules contant F-035 sont remplacées).
Le problème est que si je veux ajouter une deuxième recherche de type de cellule (F-036 par exemple), l'erreur ressurgit et les cellules F-036 sont à moitié remplacées.
Sub test()
Dim LocF035 As String
Dim LocF036 As String
Dim Cell As Range
LocF035 = "F-035"
LocF036 = "F-036"
'Selection de la plage de cellules à remplacer
ActiveSheet.UsedRange.Select
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Offset(0, 0).Select
ligne = ActiveCell.Row: colonne = ActiveCell.Column
Range(Cells(2, 4), Cells(ligne, colonne)).Select
'Test de chaque cellules de la sélection
For Each Bloc In Selection
'Recherche du code du local type F-035
Set Cell = Range(Cells(2, 4), Cells(ligne, colonne)).Find(LocF035, lookat:=xlWhole)
Cells(Cell.Row, Cell.Column).Select
Cells(ActiveCell.Row, ActiveCell.Column) = "L10"
Cells(ActiveCell.Row, ActiveCell.Column + 1) = "L15"
'Recherche du code du local type F-036
Set Cell = Range(Cells(2, 4), Cells(ligne, colonne)).Find(LocF036, lookat:=xlWhole)
Cells(Cell.Row, Cell.Column).Select
Cells(ActiveCell.Row, ActiveCell.Column) = "L1"
Cells(ActiveCell.Row, ActiveCell.Column + 1) = "L2"
Cells(ActiveCell.Row, ActiveCell.Column + 2) = "L8"
Next Bloc
End Sub
J'ai tenté de stocker la position des cellules à remplacer dans deux variables de type Integer mais le problème persiste.
Mon but étant à la fin de pouvoir remplacer d'un coup tous les types de cellules de ma feuille (plus d'une vingtaine).
Si quelqu'un à une solution ou une autre méthode à me proposer ce serait fort sympathique.
Merci d'avance
