Utiliser VBA pour ecrire une formule

bonjour,

Jaimerais de laide avec mon code:

Sub dateDemande()

Dim DernLigne As Long, y%, i%, s$, p$

Sheets("Stats").Unprotect

Application.ScreenUpdating = False

y = Sheets("Stats").Range("A" & Rows.count).End(xlUp).row

For i = 3 To y

s = Sheets("Stats").Cells(i, 1)

p = Sheets("pathForm").Cells(i, 1)

If Sheets("Stats").Cells(i, 7) = 3 Then

Sheets("Stats").Cells(i, 8).FormulaLocal = "='" & p & "Demande de service'!G3"

End If

Next

Application.ScreenUpdating = True

Sheets("Dates et Utilisateurs").Protect

End Sub

ce code me donne toujours erreur 1004 sur Sheets("Stats").Cells(i, 8).formulalocal = "='" & p & "Demande de service'!G3"

La formule doit faire reference a un fichier dont le nom est enmagasiner dans s sous le format : fichier.xlsx

Le chemin adapter est enmagasiner dans la variable p sous le format C:\Dossier\Dossier\Dossier\Dossier\[Fichier.xlsx]

merci

Rebonsoir allo3d,

à tout hasard (car j'en suis pas sûr), essaye :

Worksheets("Stats").Cells(i, 8).FormulaLocal = "=['[" & p & "]Demande de service'!G3]"

c'est avec ce chemin dans ta variable p : "C:\Dossier\Dossier\Dossier\Dossier\Fichier.xlsx"

si ça marche, ok ; sinon, de toute façon, il me semble que dans ta variable p, le crochet gauche « [ » ne doit pas être devant Fichier mais devant C: (pas sûr, mais à tester).

dhany

Bonsoir,

pour moi la syntaxe de l'instruction, (si p contient effectivement ce que tu as mis sur le forum)

Sheets("Stats").Cells(i, 8).FormulaLocal = "='" & p & "Demande de service'!G3"

est correcte.

La feuille "demande de service" ne serait-elle pas protégée par hasard ?

sinon enlève le signe = et regarde le texte qui est généré dans la cellule et vérifie si cela ressemblerait à une formule correcte si tu mettais un =

Bonjour, Salut Dhany !

Je viens juste d'écrire ailleurs que je considérais qu'utiliser VBA pour mettre des formules comme une des plus grandes absurdités ! Donc je trouve ton sujet très drôle...

Ceci dit il peut y avoir des exceptions qui le justifient, mais c'est tout de même rares et d'un certain point de vue c'est une pratique quelque peu masochiste d'utiliser VBA pour une formule qui va rester et qu'il est toujours plus rapide de mettre manuellement.

Il est bon toutefois de savoir le faire. Mais utiliser FormulaLocal n'est pas la meilleure façon...

Bref ! Bonne continuation !

en faite je dois recuperer 104 donner dans des milliers de fichiers different alors la formule est moins long que ouvrir chaque fichier

oui je suis sur de ce que mes variable contiennent

Bonjour à tous,

pour cela j'avais développé un outil il y a fort longtemps (donc mal codé mais efficace)

bonjour à tous

comme MFerrand

il est probable qu'à l'origine de la demande, il y a un réel manque de connaissances de base en Excel.

par ex en liaisons entre fichiers, il y a 1000 manières d'avoir un classeur de données (qui change souvent) et un classeur de formules/TCD/graphiques (qui ne change jamais, lui)

bonjour,

oui je suis sur de ce que mes variable contiennent

peux-tu enlever le signe "=" de ta formule et nous montrer le contenu (en valeur) de ta cellule 3,8 et y,8 ?

Sheets("Stats").Cells(i, 8).FormulaLocal = "'" & p & "Demande de service'!G3"

pour cela j'avais développé un outil il y a fort longtemps (donc mal codé mais efficace)

@Allo3D

quelle est la structure des fichiers, je peux te préparer l'outil que j'ai proposé !

pour faire court, j'ai 3 version d'un fichier et des centaine de copies de chacun, dans les versions plus récentes il y a plus de données et la différence entre les version est l"emplacement des données, je dois récupérer les résultats et les mettre dans mon classeur pour pouvoir en faire des statistique mensuelle et annuelles.

oui, il y a manque de connaissance en excel, mais je débute, je n'ai que de l’expérience en C et il est assez dure de s'informer sur quelque chose dont on ignore l’existence ( je parle ici des 1000 autres façons).

le contenu de la valeur h2so4?

jmd

oui le classeur doit être mis a jouer a chaque ajout de fichier donc le classeur change souvent

la structure des fichiers?

bonjour,

le contenu de la cellule .

sinon mets-nous ton fichier...

presentement la cellule est vide ou je veux y mettre la formule

Bonjour,

tu corriges l'instruction comme je l'ai proposé, tu exécutes la macro et tu nous montres le contenu des différentes cellules dans lesquelles la macro a mis la formule.

La feuille "demande de service" ne serait-elle pas protégée par hasard ?

je vien de verifier et oui les feuilles sont proteger apres leur enregistrement, mais pas les cellules que je vais utiliser

voila h2s04

ca donne ca:

'C:\Excel\Dossier\Dossier\Dossier\[fichier.xlsx]Feuil1'!G3

re-bonjour,

et si maintenant tu modifies cette cellule et que tu mets le signe = devant , que se passe-t-il ?

re-bonjour,

et si maintenant tu modifies cette cellule et que tu mets le signe = devant , que se passe-t-il ?

la fenetre de mauvaise formule apparait

Bonjour allo3d, le forum,

1) dans ton énoncé initial, tu as écrit :

« Le chemin adapté est emmagasiné dans la variable p sous le format C:\Dossier\Dossier\Dossier\Dossier\[Fichier.xlsx] »

avec 4 sous-dossiers


2) dans ton post de 14:59, tu as écrit :

« ça donne ça : 'C:\Excel\Dossier\Dossier\Dossier\[fichier.xlsx]Feuil1'!G3 »

avec 3 sous-dossiers


alors vérifie le nombre de tes sous-dossiers, et leur orthographe.

dhany

dhany

dans mon premier ennoncer jai donner un exmple du style de trajet et dans le deuxieme jai pris le chemin et jai remplacer les nom de dossier par le dossier fictif "Dossier" alors oui le nombre de sous dossier est different

donc si on se fit a cela:

en remplacant Excel par Dossier dans le 2ieme exemple on arrive a 4 Dossier comme au premier post

est-ce que tu peux envoyer ton fichier (sans données confidentielles) ?

dhany

Rechercher des sujets similaires à "utiliser vba ecrire formule"