Utiliser VBA pour ecrire une formule

voila le hic, le fichier excel est bourrer a 95% de truc confidentiels

je suis en stage dans un organisme et je dois apprendre vba excel en fouillant sur des forums pour leur permettre de faire les statistiques

en ne cliquant que sur 3-4 bouton associer a des macros

alors crée un fichier simplifié de structure identique, avec des données fictives et non confidentielles.

dhany

Voila un exemple de fichiers

9classeur1.xlsx (15.53 Ko)

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

re Bonjour,

très étrange car, lorsque je copie la valeur que tu as donnée et que je mets un signe = devant, j'ai une boîte de dialogue me demandant d'indiquer où se trouve le fichier, quand il n'existe pas, d'indiquer la feuille quand elle n'existe pas, mais pas le message d'erreur que tu indiques. Que fais-tu pour obtenir ce message d'erreur ?

tu t'es trompé : tu as joint un fichier .xlsx (qui ne peut pas contenir de macros) ! faut joindre un fichier .xlsm !

pour le nom des feuilles, mets les noms réels car là, y'a aucune feuille "pathForm", ni "Dates et utilisateurs"

comme c'était indiqué dans la sub dateDemande() de ton énoncé initial.


de plus, dans cette sub, note que tu as cette instruction : s = Sheets("Stats").Cells(i, 1)

mais ta variable s n'est utilisée nulle part !


dans le prochain fichier (.xlsm) que tu vas joindre, indique quelles feuilles sont concernées !

dhany

h2s04

='C:\Excel\Dossier\B\[fichier.xlsx]Demande de service'!G3

me donner une erreur me disant que le egale nest pas bon

Bonjour,

Peux-tu utiliser le correcteur orthographique de ton navigateur ?

Il y a un grand nombre de fautes qui pourraient être corrigées.

Merci pour celles et ceux qui te lisent.

Cdlt.

voila le fichier en question

ajout: oui le fichier est bordélique et sans commentaire, mais pour ma défense c'est ce que je fais présentement

Il n'y a rien dans Sheets("Stats").Cells(i, 7) ... comment c'est alimenté ? du coup rien ne se passe ...

et qu'y a t-il dans [fich1.xlsx]Demande de service'!G3 ? as-tu un fichier de ce type ? car je ne vois vraiment pas d'erreur de syntaxe ...

est-ce que par hasard ce fichier est en calcul manuel ?

@Steelson

selon la version du fichier il est écrit 1,2 ou 3 comme écrit plus haut, dans le cas que j'ai décrit depuis le début en G3 dans le fichier troisième version il y aurait une donner correspondant a une date

tu peux mettre des 3 partout dans cette colonne ou des 1 et des 2 si tu veux

ajout: la feuille demande de service est protéger pour que les données que je dois récolter soient non protégées mais que le questionnaire soit protégé.

ajout: Voici la base du fichier 3ieme version encore une fois censuré.

10ouvertur.xlsx (77.92 Ko)

@allo3d (réponse à ton post de 18:50)


t'as fait des progrès : c'est un fichier .xlsm ! malheureusement, il manque des infos ! quelles sont les feuilles concernées par le job à faire ? est-ce seulement pour la feuille "pathForm" ? ou pour d'autres ? si oui, lesquelles ? on ne doit pas avoir à chercher ça !

et côté code VBA, ça se passe où ? est-ce une macro que tu as déjà commencée qu'on doit essayer de terminer ? si oui, laquelle ? ou doit-on écrire une toute nouvelle macro, qu'on crée entièrement ?


pour tes données, c'est vraiment pas clair ! donc en plus des feuilles concernées, indique aussi quelles sont les cellules concernées ! d'abord pour le dossier, puis pour les fichiers ; exemples :

1) feuille "Dates et Utilisateurs" :

* répertoire en D1 (fusion de D1:G1)

cette fusion est inutile ! il suffisait d'agrandir la largeur de la colonne D !

* fusion des colonnes D:E : c'est inutile, il suffisait d'agrandir la largeur de la colonne D

* fusion des colonnes F:G : c'est inutile, il suffisait d'agrandir la largeur de la colonne F

* fichiers en 1ère colonne (cette colonne étant une fusion des 3 colonnes A:C)

ces fusions sont inutiles ! il suffisait d'agrandir la largeur de la colonne A !


2) feuille "Stats" :

* pas d'emplacement pour un répertoire

* fichier en A3:A7 ; et en-dessous, à partir de la ligne 8, cellules fusionnées A:F ?

ça veut dire qu'y'aura jamais d'fichier sous la ligne 7 ?

ces fusions sont inutiles, sauf si tu veux saisir quelque chose en C3:D7 et E3:F7 : 2 autres plages fusionnées !

tu veux devenir forgeron ? voici la nouvelle variante : « c'est en fusionnant qu'on devient fusionneur » ! j'suis d'accord avec toi qu'y'a un rapport certain avec le métier d'forgeron ; si, si, quand il martèle du métal en fusion, mais quand même !


3) feuille "Path" :

plage fusionnée A1:K2 pour l'entête de colonne : inutile : il suffisait d'agrandir la hauteur de la ligne 1.

cellules fusionnées A:K ça, on peut dire qu't'adores les fusions, hein ? surtout qu'sur cette feuille aussi, c'est inutile ! tu pouvais très facilement l'éviter, simplement en mettant une largeur de colonne plus grande pour la colonne A !

cette fusion des colonnes A:K va de la ligne 3 à la ligne 32 196 ; plus en dessous ? qu'est-ce qui t'es arrivé ? t'étais fatigué d'fusionner ? ou c'est juste que t'as pas voulu empiéter sur un « no man's land » invisible ? bon, ça a quand même un très gros avantage : ça t'a évité une énorme désillusion : celle de t'apercevoir qu'tu peux pas fusionner au-delà d'la ligne 1 048 576.

ces fusions inutiles A:K servent pour des FullPath (chemins complets) : path + nom de fichier ; mais si y'a un début commun, ça serait mieux d'mettre celui-ci dans une cellule séparée.


4) feuille "pathForm" :

structure exactement identique à celle de la feuille "Path" (donc mêmes remarques)

dhany

@dhany

merci beaucoup de ton aide,

cependant je crois que tu t’arrête trop au détails, si des cellules sont fusionnées ou pas ne change absolument rien au but du post initial.

j'ai pourtant pris la peine de spécifier que c'est un classeur en développement par un novice, qu'il y a oui du bordel dans le VBA mais j'ai surtout indiquer dans mes anciens message ce que je cherche a faire, j'ai meme poster la fonction qui a pour but de collecter les données séparément plustôt.

La job a faire a elle aussi ete dite plusieurs fois: prendre une donnée en G3 de la demande de service du fichier que je vais mettre plus bas (pour la deuxième fois) et la mettre dans une colonne ( la colonne en particulier n'est pas du tout important ici @dhany) sur la même ligne que le nom du fichier sur la feuille stats.

ce n'est qu'un petit truc dont j'ai besoin d'un conseil, par la suite je vais le modifier pour récolter tous les données de la feuille info bilan et les mettre dans la feuille stats vis-a-vis leur nom de dossier. ensuite je vais associer cela a 3-4 bouton (sur la feuille: dates et utilisateur)pour que l'un deux mette le path a jour, un autre va mettre les donnes de la feuille dates et utilisateur a jour et l,autre va mettre la liste de nom de fichier dans cette feuille a jour. et finalement je vais mettre le même bouton sur la feuille stats et date et utilisateur qui va ouvrir une input box demandant pour quel période de temps les stats doivent être générée.

non il n'y a pas de répertoire dans les autres puisque les macros vont le lire sur la feuille demande de service

@dhany:

si tu veux commencer une autre macro ou prendre celle que j'ai commence tu as le choix, le résultat sera le même. tu peux même faire un nouveau module pour être sur de ne rien mélanger.

je ne sais pas quel cellules sont concerner, a la fin de mon stage ils vont continuer de se servir du classeur et qui sait, peut-etre que dans 10 ans ils auront 100 000 fichiers, ou 2 000, je n'en ai aucun idee.

5ouvertur.xlsx (77.92 Ko)

Bonjour allo3d,

Tu a écrit :

sur la même ligne que le nom du fichier sur la feuille stats.

j'crois qu't'as pas envoyé l'bon fichier : y'a pas de feuille "stats" ; y'a ces 3 feuilles :

"Identification" ; "Demande de service" ; "Info Pour Bilan"

(pas de feuille "stats" cachée non plus !)

dhany

Dans

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

il te manque un = avant le '

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

@dhany

Tu regarde dans le mauvais fichier

@steelson

Si je mets un egale sa me bloque juste de faire autre chose et ca ajoute tout ce que je clic, en plus de me fdire que la formule est errone

j'ai essayé avec les dossiers dans lequel était enregistré le second fichier, cela fonctionne, il n'y a pas de faille dans la formule !! donc il y a autre chose mais qu'on ne voit pas uniquement avec les fichiers.

Si ceci peut t'aider ...

capture d ecran 74

vérifie bien le chemin du fichier, on ne sait jamais ... un espace en plus ?

le mieux est d'afficher la propriété du fichier et de recopier son chemin (pas de frappe = pas d'erreur)

mais attention, il peut y avoir autre chose ! mais chez moi cela fonctionne ...

D’accord merci steelson j’essais ca lorsque jarrive au bureau!

ajout: j,ai ecrit manuellement : ='C:\Excel\Dossier\B\[fichier.xlsx]Demande de service'!G3

et excel surligne 'C et 'affiche l'aide de formule

j'ai essayer manuellement avec le dossier test que je vous ai donne et ca marche alors que les autres ne fonctionne pas dutout,

voici le chemin:

='C:\Excel\[Ouvertur.xlsx]Demande de service'!G3

je viens de remarque que mon chemin ressemble a cela : C:\Excel\blablabla d'quelquechose\

je me suis dis que sa pourrait etre l'espace alors puisqu'il n'y en a pas dans l'exemple avec ouvertur, je lai enlever et ca n'a pas marche, j'ai fait de meme avec les accents, toujours rien, et jai essayer l'apostrophe et ca a fonctionne.

donc je ne dois pas en mettre dans le chemin

Bonjour,

j'en déduis que ta réponse à une de mes questions précédentes n'est pas

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

comment tu l'as indiqué

mais que tu as remplacé les noms réels par Dossier.

je comprends mieux l'erreur, si tes noms de dossiers contiennent le caractère '

essaie donc ceci

Sheets("Stats").Cells(i, 8).FormulaLocal = "='" & replace(p,"'","''") & "Demande de service'!G3"
Rechercher des sujets similaires à "utiliser vba ecrire formule"