Macro
Bonjour,
je suis novice en utilisation de VBA, donc je viens chercher de l'aide ici.
j'ai deux fichiers: le premier se nomme sondage le deuxième suivi.
Dans le fichier sondage, je reprends des agences que je sonde sur certains points et je leur mets un résultat global en bout de ligne (OK ou KO).
Dans le fichier de suivi, en colonnes j'ai l'ensemble des sondages et en ligne l'ensemble des agences. Le but de ce fichier est d'identifier les agences qui ont eu au moins un KO en résultat global sur le sondage. Pour cela, on insère juste un "x".
ce que je cherche, c'est une macro insérée dans chaque fichier de sondage qui permettrait de rechercher les agences avec un KO dans le sondage et de cocher un "x" dans le fichier de suivi.
pensez-vous que cela soit réalisable??
je mets les fichiers en pièce jointe
merci pour le temps que vous consacrerez à me répondre
Salut Pedrito,
Selon moi, ta demande manque franchement de clarté !
Tu parles d'un fichier Sondage et d'un fichier Suivi, mais tes fichiers s'appellent Exemple sondage et Exemple Forum ; dans ce qui semble être le fichier Suivi, tu as des Entité 1, Entité 2, Entité 3, etc., alors que dans le fichier Sondage, tu as des entités 03000, 03053, etc. ; dans le fichier Suivi, tu as des titres de colonnes Sondage 1, Sondage 2, etc., alors que dans le fichier Sondage, tes titres de colonnes sont Question 1, Question 2, etc. Ou est la concordance ?
A la devinette, je dirais que tu désires repérer dans le fichier Exemple Sondage si une entité - qui peut être présente sur plusieurs lignes - a un ou plusieurs KO dans la colonne F d'une des lignes la concernant et, le cas échéant, indiqué un X en regard de cette entité (A QUEL ENDROIT EXACTEMENT ??? Par exemple dans la colonne F ???) dans le fichier Exemple Forum (Suivi). Si c'est bien exact, il faut bien entendu que le nom des entités corresponde dans les deux fichiers.
Encore une question : lorsque tu effectues ce travail, tu as tes deux fichiers ouverts ? Si non, lequel des deux ?
A te relire.
Bonjour Yvouille,
merci de prendre le temps de répondre.
alors je précise mon propos et je te joins les fichiers pour que cela soit le plus compréhensible possible.
Alors le fichier sondage est un sondage que je réalise sur différentes questions mais à la fin (colonne F) je mets un résultat global sur l'agence sondée (OK ou KO)
je veux donc, comme tu le dis, repérer les agences qui ont au moins un KO dans la colonne F pour reporter cela dans le fichier suivi.
par exemple, la 3053 et la 3042 ont un KO sur le sondage, je souhaiterai donc que la macro identifie ces agences avec KO et les sélectionne dans le fichier suivi (d'ailleurs j'ai mis le fichier suivi à jour qui correspond au résultat du sondage).
le fichier suivi reprend toutes les agences avec un KO sur le sondage.
les deux fichiers ne sont pas forcément ouverts ensemble (le fichier de suivi ne me sert que plus tard dans mon travail).
est-ce que mes explications te permettent de mieux cerner l'idée?
encore merci
Ton fichier sondage est vide
désolé...
Regarde si la macro placée dans le fichier "Suivi" ci-joint te convient.
Il faut tout d'abord que le fichier Sondage soit également ouvert.
Tu cliques ensuite sur le bouton "Report" du fichier "Suivi". La colonne F du fichier "Suivi" est effacée à tout hasard et les entités marquées d'un "KO" dans la colonne F du fichier "Sondage" sont marqués d'un "X" dans le fichier "Suivi".
J'ai modifié quelques entités du fichier "Suivi" afin que leurs noms correspondent à ceux du fichier "Sondage".
Les deux fichiers doivent absolument porter les noms indiqués ci-dessus ou alors il faut modifier le code en conséquence.
Si tu préférerais ne pas devoir ouvrir le fichier "Sondage", on pourrait modifier le code. Mais dis-moi déjà ce qu'il en est de cette première partie.
A te relire.
ah c'est exactement ça..
super!!
penses-tu que plutôt que de le mettre dans le fichier de suivi on puisse mettre la macro dans les sondages et en cliquant dessus on nous ouvre un userform nous demandant de renseigner le nom du sondage et ensuite après validation une colonne serait créée dans le fichier de suivi reprenant le nom du sondage renseigné?
j'ai environ une centaine de sondages c'est pour ça.
en tout cas merci infiniment
Salut Pedrito,
Je t'avais bien demandé dans lequel des deux fichiers tu désirais que je place la macro !Yvouille a écrit :Encore une question : lorsque tu effectues ce travail, tu as tes deux fichiers ouverts ? Si non, lequel des deux ?
Tu dis avoir une centaine de fichier "Sondage" et vouloir les reporter dans un unique fichier "Suivi". Je ne trouve donc pas très logique d'avoir 100 macros identiques à placer dans tes 100 fichiers "Sondage" au lieu de n'en avoir qu'une seule dans le fichier "Suivi" qui irait ouvrir le ou les fichiers "Sondage" désirés. Y a-t-il une raison précise à vouloir travailler depuis les fichiers "Sondage" ?
Lorsque tu reportes les données des fichiers "Sondage" au fichier "Suivi", le fais-tu individuellement (l'un un jour, un autre un autre jour, etc.) ou traites-tu les 100 fichiers "Sondage" en même temps (ou du moins une grande partie d'entre eux) ?
Si tu traites tous les fichiers ou une grande partie en même temps, il serait probablement plus logique de les ouvrir tous automatiquement. Dans un tel cas, comment sont nommés tous ces fichiers (Sondage 1, Sondage 2, etc. ???) et sont-ils tous placés dans le même document ? S'ils sont tous placés dans le même document, y a-t-il d'autres fichiers dans ce document ? L'idéal serait de m'envoyer une ou des copies d'écran de ton arborescence, selon l'exemple joint
A te relire.
Bonjour Yvouille,
désolé je n'avais pas bien lu.
en fait je voulais mettre la macro dans le fichier de sondage parce que tous les sondages ne sont pas au même endroit et leur nom n'est pas fixe. D'où l'idée de mettre une macro par sondage qui en fait chercherait la première colonne vide du fichier de suivi pour y insérer le nom du sondage que l'on renseignera dans le userform et qui cocherait les agences KO.
je t'ai mis la copie écran en pièce jointe. tu y trouves 3 dossiers (thème 1, 2 et 3) dans chacun de ces dossiers peuvent se trouver des sondages mais aussi d'autres documents.
serait-il plus pratique de regrouper tous les sondages dans un même dossier pour traiter la macro (et aussi te faciliter la tâche...).?
l'enrichissement du fichier "suivi" est effectué dès lors qu'un sondage est finalisé (mais encore une fois je peux modifier la procédure pour les traiter tous d'un coup).
à te lire
encore merci
-- 16 Mai 2011, 09:30 --
et j'y pense
tous les sondages ne sont pas normés de la même façon (cad le nombre de colonne et la colonne où le résultat global apparait). voilà pourquoi je pensai le mettre dans chaque sondage...
Non, désolé, il n'y a rienpedrito75 a écrit :je t'ai mis la copie écran en pièce jointe..
Avant d'envoyer ton message, clique sur "Aperçu" et tu peux ainsi contrôler ce que tu vas réellement envoyer.
avec la pièce jointe
Un exemple pour le Forum, j'aurais pu le faire moi-même
Si jamais, je n'ai plus le temps de voir ton problème jusqu'à ce soir ou à demain.
voilà l'arborescence réelle,
chaque TXXX peut être un sondage et les sondages sont dans les 5 dossiers gouvernance, suivi des risques, etc mais je peux les regrouper dans un même dossier si cela facilite la tâche.
Yvouille a écrit :pedrito75 a écrit :voilà l'arborescence réelle
Non, désolé, il n'y a rien
Avant d'envoyer ton message, clique sur "Aperçu" et tu peux ainsi contrôler ce que tu vas réellement envoyer.
pourtant j'avais ajouté enfin...
je suis vraiment désolé, ça te fait perdre du temps en +
Tu as peut-être ajouté, mais tu n'as pas contrôlé par l'aperçu comme je te l'ai conseillé deux fois, autrement tu aurais vu qu'il y avait un problème (les messages d'erreur pour les fichiers qui ne sont pas joints après qu'on ai cliqué "Insérer" sont peu visibles).pedrito75 a écrit :pourtant j'avais ajouté enfin...
Peux-tu m'envoyer - par message privé ou par e-mail, en cliquant sur l'une de ces deux options sous mon profil - une adresse électronique privée à laquelle je pourrai t'envoyer à mon tour mon adresse privée sur laquelle il faudrait que tu m'envoies plus de renseignements (des exemples de plusieurs de tes fichiers "Sondage", etc., je t'informerai exactement de ce dont j'ai besoin) ; autrement on risque de ne pas avancer.
A plus.
Salut Pierre,
Je crois que l'on pourrait presque te décerner la palme du "Roi de l'embrouille". Voici ce que tu as déjà fait de faux jusqu'à maintenant et qui nous empêche de t'aider :
- Tu as placé sur le Forum des fichiers qui ne correspondent pas vraiment à tes fichiers réels
- Tu as donné des explications peu claires
- Tu as créé des fichiers-exemple qui ne concordaient pas entre eux (selon les informations que je t'ai déjà données)
- Tu m'as ainsi fait créer une macro parfaitement inutile
- Tu m'as fourni en privé des fichiers dont les noms ne correspondent pas à tes fichiers exemples sur le Forum
- Tu m'as fourni en privé des fichiers dont les noms ne correspondent pas aux copies d'écran de ton arborescence !!!!!!
- Tu m'as fourni en privé des fichiers dont tu as apparemment effacé les données et qui ne me servent alors à rien (comment veux-tu que je vois comment tu fais référence à une "Entité", si tu effaces tes données ? D'autant plus que tes titres de colonnes sont souvent différents)
- Tu ne réponds pas vraiment à mes questions : Je ne sais toujours pas si les fichiers existants doivent être repris dans le fichier "récepteur" une fois pour toute ou si ils seront mis à jour régulièrement et qu'alors il faudra également actualisé le fichier "récepteur" ; je ne sais toujours pas ce que tu désires faire avec les fichiers à créer nouvellement.
Afin qu'une macro fonctionne, on doit très souvent faire des boucles. Une solution dans ton cas serait de faire une boucle dans le dossier "2_Fichiers_de_travail" et ses sous-dossiers afin de rechercher les fichiers comportant un T comme première lettre de leur nom (d'après ce que j'ai pu comprendre, puisque apparemment tu m'as envoyé des fichiers Txxxx-Yyyyy que tu as transformés en Yyyyy) et de rechercher dans chacun d'eux, par une nouvelle boucle, la cellule comportant le texte "Résultat global" (à noter au passage que c'est vraiment embêtant que cette cellule ne soit pas toujours au même endroit, sinon au minimum toujours sur la même ligne ou dans la même colonne)
Lorsque cette cellule "Résultat global". serait trouvée, je présume qu'il faut passer en revue - avec une troisième boucle - toutes les cellules en dessous (y a-t-il des lignes vides ??) afin de trouver le texte "KO" et rechercher la référence de l'"Entité" sur la même ligne qu'on reporterait sur le fichier "récepteur". Dans tes fichiers Txxx-Yyyyy, est-ce que les "Entités" peuvent - comme dans ton modèle - être présentes sur plusieurs lignes ? Une même "Entité" peut-elle être présente dans plusieurs fichiers Txxx-Yyyyy ?
Dans ce fichier récepteur, vas-tu y reporter au préalable toutes les "Entités" existantes ou doivent-elles être rajoutées au fur et à mesure de l'avancement des reports d'informations ?
Pour l'instant on en est presque au point mort. Combien as-tu l'envie de continuer ? Ne serait-ce qu'un peu, tu peux déjà répondre à mes nombreuses questions en suspens, tu pourrais modifier tes fichiers Txxxx afin qu'ils comportent tous la cellule "Résultat global" (le plus possible au même endroit), tu pourrais m'envoyer des fichiers non vidés en privé, etc.
En fait, la seule occasion où tu n'as pas créé d'embrouille, c'est en laissant tes noms et prénoms dans la macro des fichiers exemples que tu as placés dans ton premier message
Désolé pour le ton un peu agressif et/ou narquois, mais j'ai recommencé trois fois la totalité de mon message - car je ne sais pas trop comment expliquer tout ça - et j'en ai un peu marre.
A te relire.
Salut Pierre,
Sur la base de tes dernières informations en privé, je te propose le fichier "Suivi" ci-joint.
Afin d'effectuer mes essais, j'ai placé tous tes fichiers à contrôler dans un seul répertoire nommé "Pierre" au bout du chemin "C:\Users\Lacy\Documents\Pierre\". Afin de faire des essais chez toi, il faudra également placer tous tes fichiers à contrôler dans un seul répertoire et modifier le chemin de mon ordinateur par celui du tien. N'oublie pas le dernier \ avant le guillemet final.
Place le fichier "Suivi" - sans en modifier le nom, ou après avoir modifier le code en fonction de cet éventuel changement de nom (très déconseillé) - dans un autre répertoire.
Mon macro effectue grosso-modo ceci, par l'intermédiaire du bouton "Report" :
1) Ouverture l'un après l'autre de tous les fichiers placés dans le répertoire "Pierre".
2) Recherche dans chacune des feuilles de chaque des fichiers si les mots "Résultat_global" y sont présents. Si oui, recherche des "KO" en dessous et report des "Agences" y correspondant sur le fichier "Suivi" ("X" placé dans la colonne F). Afin de ne pas ralentir inutilement le processus, j'ai limité cette recherche aux cellule A1 à Z200. Contrôle si tu n'as pas une cellule comportant "Résultat_global" en dehors de cette plage et adapte si nécessaire.
3) Fermeture au fur et à mesure des fichiers du répertoire "Pierre".
Chez moi ça fonctionne très bien. Fais des essais et dis-moi quoi !
Lorsque cette partie sera liquidée, on pourra voir pour la suite, en ce qui concerne les fichiers à reporter dans le futur.
A te relire.
Bonjour Yvouille,
merci pour ce fichier. Alors ça ne fonctionne pas chez moi.
ça m'ouvre un message d'erreur: Erreur d'exécution '9': l'indice n'appartient pas à la sélection.
Lorsque je clique sur débogage, ça me surligne en jaune cette partie du code:
Workbooks("Suivi").Sheets("Sondages à debriefer"). _
Range("N" & Workbooks("Suivi").Sheets("Sondages à debriefer").Range("N65536").End(xlUp).Row + 1) _
= ActiveCell.Offset(0, -(Colonne_Résultat_global - Colonne_Agence))
Est-ce que j'aurai mal fait quelque chose?
Bonjour,
Sans vouloir m'insérer dans tout le travail que Yvouille a fait pour toi, essaie de changer ceci
Workbooks("Suivi")par
Workbooks("Suivi.xls")Une remarque/ évite de mettre des noms avec des accents dans le nom de tes feuilles ou de tes fichier. Cela provoque toujours un souci. Exemple : Sondages à debriefer. Fais plutôt --> Sondages_a_debriefer.
Amicalement