Formule Excel à tape ren VBA

Bonjour à tous,

Je cherche à rentrer une formule manuellement dans une cellulle Excel, lui la duppliquer jusqu'en bas grâce à VBA.

Cependant, malgré des recherche je n'y arrive toujours pas...

Ma formule est:

=IF(MID(CELL("filename");FIND("]";CELL("filename"))+1;30)='[Exemple.xlsx]Calculation'!EJ3;'[Exemple.xlsx]Calculation'!EK3;"")

Dans VBA j'ai mis:

ActiveCell.FormulaR1C1 = "=IF(MID(CELL(""filename""),FIND(""]"",CELL(""filename""))+1;30)='[Exemple.xlsx]Calculation'!EJ3;'[Exemple.xlsx]Calculation'!EK3,"""")"

Pouvez-vous me dire d'où vient l'erreur ?

Merci beaucoup et bonne journée.

Bonjour,

A voir et à mettre à ta sauce (en vérifiant ta formule)

Formule= "=IF(MID(CELL(""filename""),FIND(""]"",CELL(""filename""))+1;30)='[Exemple.xlsx]Calculation'!EJ3;'[Exemple.xlsx]Calculation'!EK3,"""")"

Range("A3").formula= Formule ' Range("A3") à changer pour ton montage
Range("A3").AutoFill Destination:=Range("A3:A1000"), Type:=xlFillDefault  'Jusqu'à la ligne 1000

Bonjour M12,

Merci de ton aide, ma formule fonctionne bien , j'ai fait plusieurs test.

Il s'agit seulement d'un bout de code d'une grosse maccro. Le but étant de récupérer dans mon nouveau fichier, des infos dans un autres si tel cellulle est égale au nom de l'onglet du nouveau... Un peu tordu expliqué comme ça je sais.

Je ne comprends pas l'utilité du range A3 que je dois changer pour "mon montage" <== C'est quoi ça d'ailleurs ?

le A3 c'est l'emplacement ou tu as fabriqué ta formule, puisque c'est une formule que tu as établi sur une feuille

donc tu remplaces les adresses de A3 et A1000 par tes besoins

en gros ActiveCell.FormulaR1C1 = A3 pour mon exemple

Oui pour cela aucun soucis, mais la formule ne marche toujours pas. En faisant la maccro en manuel j'ai l'erreur 1004: "Application defined or object defined error"

Il doit manquer des " à un endroit ou autre chose mais je ne trouve pas quoi

Je ne suis devin, sinon je jouerais au LOTO

Je vous joints un fichier mais il n'est pas très représentatif du cas que j'ai.

L'onglet "Autre fichier" est en réalité un autre fichier.

J'ai remarqué une erreur:

'Autre fichier'!A1 se transforme en 'Autre fichier'!'A1' une fois la maccro exécutée. Cela rend la formule fausse....

Mais au moins dans ce fichier, le code passe. Dans mon fichier d'origine, il bloque.

11file-example.xlsm (19.04 Ko)

Re,

C'est vrai, c'est pas representatif, de plus tu parles de "fichier"

alors FICHIER, c'est une feuille ou un autre classeur (c'est pas pareil)

prend ton temps et explique calmement ce que tu voudrais obtenir avec un exemple Representatif" et çà ira plus vite

Je mets les 2 fichiers:

Il faut que la maccro copie la formule dans l'onglet A du fichier File example.

La formule va cherche des infos dans un autre classeur qui est le Fichier Source.

Formule finale que je veux en A2 :

=IF(MID(CELL("filename");FIND("]";CELL("filename"))+1;30)='[Fichier Source.xlsx]BDD'!A2;'[Fichier Source.xlsx]BDD'!B2;"")

16file-example.xlsm (19.04 Ko)

Le problème vient sûrment de la manière dont la référence à l'autre classeur est faite mais je ne trouve pas où

Re,

M'expliquer pourquoi les recopier jusqu'en bas

et pourquoi

plusieurs lettres sont identiques avec des couleurs différentes (Bref le but de la manoeuvre)

Alors si c'est pour recopier les couleurs à la suite suivant la lettre et les placer dans l'onglet correspondant à la lettre, ce n'est pas ta formule qui fera le nécessaire, mais là au moins j'aurais compris ce que tu demandes, parce que pour l'instant, je suis dans le flou, et surement pas que moi

Mon fichier source est une grosse base de donnée avec : En colonne A Un fournisseur : en B une remise associé à un produit. (en réalité le fichier a plus de 100 colonnes mais je fais au plus simple)

La maccro part de la BDD et crée un nouveau classeur avec:

- une feuille par fournisseur avec le nom du fournisseur, le produit et la remise accrodée sur ce produit.

La formule sert à reconnaitre le nom du fournisseur et ne mettre dans chaque feuille, seulement les produits et la remises du fournisseur concerné.

J'ai bien avancé depuis hier, il ne reste qu'une petite erreur:

Mon code:

ActiveCell.FormulaR1C1 = "=IF(MID(CELL(""filename""),FIND(""]"",CELL(""filename""))+1,30)='[Fichier source..xlsm]Calculation'!EJ3,'[Fichier source..xlsm]Calculation'!EK3,"""")"

=IF(MID(CELL("filename");FIND("]";CELL("filename"))+1;30)='[Fichier source.xlsm]Calculation'!EJ3;'[Fichier source.xlsm]Calculation'!EK3;"")

se transforme en:

=IF(MID(CELL("filename");FIND("]";CELL("filename"))+1;30)='[Fichier sourcexlsm]Calculation'!'EJ3';'[Fichier source.xlsm]Calculation'!'EK3';"")

Le problème est l'ajout de ' là où j'ai souligné.


J'ai trouvé une solution:

Record Macro: je vais en A2 où il y a la formule, je tape F2 puis Entrée. Stop record

Cela me crée ce bout de code:

ActiveCell.FormulaR1C1 = _

"=IF(MID(CELL(""filename""),FIND(""]"",CELL(""filename""))+1,30)='[Fichier source.xlsm]Calculation'!R[-94]C[139],'[Tender Fichier source.xlsm]Calculation'!R[-94]C[140],"""")"

Et il fonctionne

Merci beaucoup de ton aide

Rechercher des sujets similaires à "formule tape ren vba"