Bonjour,
Ton Dim ne doit pas être après le If, mais tout au début.
Dim oldname, name As Variant, cellulename, cellule, newcellule, oldcellule As Object, lignename, lignecel, colname, ligne, newligne, oldligne, série, oldsérie, newsérie, newdébut, newfin, newdébut2, oldcellule As Integer
dans cette ligne seules name , oldcellule et oldcellule sont typées, toutes les autres sont Variant.
Il faut toutes les typer une à une.
As Object : si ce sont des cellules ou des plage typer au plus près : As Range
oldname = Target
oldname est Variant, ne fait pas confiance à vba pour choisir ce que tu veux. Si c'est la valeur alors = Target.Value
A-priori non gênant actuellement mais comme ça ne correspond pas à ce que tu veux je préfère te le signaler
Range("A1:B1", "A3:B3") donne A1:B3. Pour l'union c'est :
Union([A1:B1], [A3:B3])
Quand tu auras fait ces modif on y verra peut-être un peu plus clair.
Set oldcellule = Sheets("heures").Range("A3:A8").Find(what:=oldname, LookAt:=xlWhole)
oldligne = oldcellule.Row
et s'il n'a pas trouvé ???
eric