Bonjour,
Je souhaite automatiser une tache qui consiste à créer une nouvelle feuille à partir d'un modèle déjà créé et ajouter une nouvelle ligne dans un tableau sur une autre feuille. La création de la nouvelle feuille est déclenchée suite à un clic sur un bouton.
J'ai réussi à créer la nouvelle feuille, à insérer une ligne dans le tableau de la 2ème feuille, à insérer une formule sur la 1ère cellule de la nouvelle ligne par contre je n'arrive pas à insérer la formule dans la cellule suivante, j'ai le message d'erreur suivant: "Erreur d'exécution 1004: Erreur définie par l'application ou par l'objet"
La formule est correcte, je l'ai testé directement sur la feuille du fichier Excel mais je ne sais pas pourquoi elle ne fonctionne pas.
Voici le code :
Sub AjoutNouvelleGrille()
Dim NomFeuilleRecap As String
Dim LastLine As Range
Dim NewLine As Range
Dim NomNewForm As String
Dim adr As String
Dim Part1 As String
Dim Part2 As String
Dim Part3 As String
Dim formule As String
' Récupérer le nom de la feuille récap du mois
NomFeuilleRecap = ActiveSheet.Name
' Créer une copie du modèle de la grille
Sheets("Modèle").Copy Before:=Sheets(NomFeuilleRecap)
ActiveSheet.Name = InputBox("Merci de saisir le nom de la nouvelle feuille")
NomNewForm = ActiveSheet.Name
' Ajouter une ligne correspondante au résultat de la nouvelle grille dans la feuille Recap du mois
Sheets(NomFeuilleRecap).Activate
' Récupérer la dernière ligne du tableau et insérer une ligne avant
Set LastLine = Cells(3, 1).End(xlDown)
LastLine.EntireRow.Insert
Set NewLine = LastLine.Offset(-1, 0)
adr = NewLine.Address
' Récupérer le contenu des celulles de cette nouvelle ligne à partir de la nouvelle feuille créée
'=NomFeuille!B3&" Run "&NomFeuille!E3
Part1 = "!A3&"
Part2 = """ Run ""&"
Part3 = "!B3"
formule = "=" & Sheets(NomNewForm).Name & Part1 & Part2 & Sheets(NomNewForm).Name & Part3
Range(adr).Formula = formule
'=SI(ESTVIDE(NomFeuille!A3);"";NomFeuille!A3)
formule = "=SI(ESTVIDE(" & Sheets(NomNewForm).Name & "!D3);"""";" & Sheets(NomNewForm).Name & "!D3)"
Range(adr).Offset(0, 1).Activate
ActiveCell.Formula = formule
End Sub
Merci par avance de votre aide.
Cordialement,