Insérer des formules avec VBA

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,

Bonjour

Dernière ligne de ta macro essayes

ActiveCell.FormulaLocal= formule

Et pense à utiliser les balises de code pour une meilleure lisibilité de ton post!

(intervention très utile, je sais!)

Ta solution a fonctionné, Merci Bcp ReuK

une question s'impose si vous pouvez me répondre bien sur: pourquoi la 1ere instruction avec .Formula a fonctionné mais pas la 2ème. et qu'elle est la différence entre .formula et .formulaLocal?

Aussi, concernant ta remarque sur l'utilisation des balises, tu voulais dire des commentaires. Excuses mon ignorance mais cela fait longtemps que je n'ai pas pratiqué

Merci de votre retour et votre efficacité

Merci merci!

Mais tout le mérite revient à Banzaï!

Pour la différence est formula et formulalocal, je pense qu'il te répondra mieux que moi!

Et pour mon commentaire concernant les balises, va rééditer ton premier post, et tu verras juste au dessus de la zone dans laquelle tu tapes ton texte qu'il y a plein de boutons verts! Dont un "Code"; clic dessus et des balises

apparaissent!

Il ne te reste plus qu'à mettre ton code dedans pour qu'il soit mis en forme!

Bonjour

Extraits de l'aide

Formula

  • Cette propriété renvoie ou définit la formule de l'objet en notation de style A1 et dans le langage de la macro. Type de données Variant en lecture-écriture.

FormulaLocal

  • Cette propriété renvoie ou définit la formule de l'objet, en utilisant les références du style A1 dans le langage de l'utilisateur. Type de données Variant en lecture-écriture pour les objets Range, type de données String en lecture-écriture pour les objets Series.

le langage de la macro. Normalement Anglais

le langage de l'utilisateur Normalement ton langage (ou celui de ta version Excel)

Je rectifie , Merci Banzai64 de ton aide et Merci à ReuK pour ton commentaire

ReuK, Je ne vois pas ou se trouve "tes bouton verts" sur l'éditeur de VBA

Hehe!

C'est parce que c'est pas dans le VBA, c'est ici sur le forum!

Remonte à ton premier post; édite et zou tu verras!

ok j'ai compris, Merci ReuK

Merci beaucoup Banzai64

Rechercher des sujets similaires à "inserer formules vba"