VBA - reprise d'informations issues de fiches "modèles"

jelobo

XLDnaute Nouveau
Bonjour,

je ne maîtrise pas VBA (poutant je Voudrais Bien Arriver à ...) et, de ce fait, l'automatisation de tâches reste bien limitée.

Mon souci actuel : comment écrire le code pour reprendre des informations de fiches bâties sur un modèle unique dans un tableau de suivi de plusieurs de ces fiches ?

Le fichier, joint en annexe, décrit dans les cellules I2 : L2 ce que je souhaite obtenir ; y figure aussi "mon" début de code pour la reprise de deux premières informations consignées dans les fiches "sources" (colonnes K et L).

Les experts de ce forum souriront en lisant mon code "artisanal" et peut-être penseront-ils que je suis une cloche - période oblige ? Mais cela ne me filera pas le bourdon !

Je suis bien sûr à votre écoute pour clarifier ma requête.

Bon long WE, peut-être propice aux motards dont je suis. (peut-être moins cloche à moto qu'en VBA ? Pour la moto : Vite (mais) Bien Arrivé !)

Bien cordialement
 

Pièces jointes

  • etat_audit_24032016_forum.xls
    167 KB · Affichages: 73
  • etat_audit_24032016_forum.xls
    167 KB · Affichages: 81

Modeste

XLDnaute Barbatruc
Re : VBA - reprise d'informations issues de fiches "modèles"

Bonjour jelobo,

Parmi nous, il y en a certainement qui Veulent Bien Aider, mais ce serait plus facile si on comprenait ce que tu cherches à faire ... tes formules en colonne K et L font référence à une feuille FAD d'un classeur FA_1210-processus RCT-audit 15-2013.xls. Ces formules créent donc des liaisons qui ne peuvent être mises à jour, chez nous.

Juste pour savoir si j'ai compris le début, que donnerait en I7 la formule suivante:
Code:
=DECALER('\\W11570300AOF\partage\Qualite\pilotes_processus\6. Gestion du Risque\6.7_RCT\actions_amelioration\PA_SD_FA\[FA_1210-processus RCT-audit 15-2013.xls]FAD'!$A$6;(LIGNES($1:1)-1)*5;0)&""
à recopier jusqu'en I18?
Est-ce que ça te faciliterait en partie la tâche?
 

jelobo

XLDnaute Nouveau
Re : VBA - reprise d'informations issues de fiches "modèles"

Bonjour jelobo,

Parmi nous, il y en a certainement qui Veulent Bien Aider, mais ce serait plus facile si on comprenait ce que tu cherches à faire ... tes formules en colonne K et L font référence à une feuille FAD d'un classeur FA_1210-processus RCT-audit 15-2013.xls. Ces formules créent donc des liaisons qui ne peuvent être mises à jour, chez nous.

Juste pour savoir si j'ai compris le début, que donnerait en I7 la formule suivante:
Code:
=DECALER('\\W11570300AOF\partage\Qualite\pilotes_processus\6. Gestion du Risque\6.7_RCT\actions_amelioration\PA_SD_FA\[FA_1210-processus RCT-audit 15-2013.xls]FAD'!$A$6;(LIGNES($1:1)-1)*5;0)&""
à recopier jusqu'en I18?
Est-ce que ça te faciliterait en partie la tâche?

Merci beaucoup Modeste,

je vais tester votre formule.

Si besoin était, j'ajouterais dans mon fichier, dans un nouvel onglet, la trame de la fiche à laquelle font références les liaisons et les modifierais en conséquence, bien sûr.
 

jelobo

XLDnaute Nouveau
Re : VBA - reprise d'informations issues de fiches "modèles"

A l'attention de Modeste, s'il souhaitait bien sûr poursuivre la discussion.

J'ai recopié la formule en I7 puis l'ai tirée jusqu'en I18 : cela répond parfaitement à la première étape du souhait d'automatisation.

Pour clarifier ma demande, j'ai ajouté dans le fichier (joint à nouveau en annexe) un onglet "FAD 1210" et créé dans l'onglet "état ..." les liens avec ce nouvel onglet.

Merci beaucoup pour cette (première) aide!
 

Pièces jointes

  • etat_audit_24032016_forum.xls
    185 KB · Affichages: 62
  • etat_audit_24032016_forum.xls
    185 KB · Affichages: 66

Modeste

XLDnaute Barbatruc
Re : VBA - reprise d'informations issues de fiches "modèles"

Re-bonjour,

Je te croyais parti faire un tour en moto ... du coup je suis allé faire 2-3 courses :)

Il reste encore des choses à clarifier: tu parles d'un onglet "FAD 1210"; nous ne disposons que d'un onglet "FAD"!?
Tu veux dire qu'à terme tu auras dans un seul classeur, autant d'onglets nommés précisément "FAD xxxx" qu'il y aura de n° renseignés en colonne E de ta feuille etat_taches, ceux-ci apparaissant systématiquement toutes les 12 lignes?
 

jelobo

XLDnaute Nouveau
Re : VBA - reprise d'informations issues de fiches "modèles"

Moto ? La météo ne s'y prête pas pour l'instant.

J'ai évoqué, à tort et en suis désolé, un onglet FAD 1210.

Il s'agit bien, pour l'exemple, de l'onglet FAD.

Les données du fichier de suivi (onglet "état ..") seront importées de FAD N° xxx ; une FAD sera créée par audit et constituera un fichier excel unique, hébergé sur un serveur partagé, dans un répertoire dédié à un processus.
Le premier fichier adressé comportait ces liens, bien sûr inexploitables pour le forum.

Les FAD ne seront donc pas intégrées dans le fichier de suivi.

Cela éclaire-t-il ta lanterne ?

Encore merci pour l'attention portée à ma demande.
 

Modeste

XLDnaute Barbatruc
Re : VBA - reprise d'informations issues de fiches "modèles"

Cela éclaire-t-il ta lanterne ?
:confused: Si c'est le cas ce doit être moi qui ne regarde pas dans la bonne direction :confused:

Reformulons: il y aurait non pas un fichier avec de multiples onglets, mais autant de classeurs (contenant chacun un onglet nommé FAD) qu'il y a de n° de Fiche Action renseignés en colonne E.
C'est le nom du classeur qui commencerait par "FA_xxxx"? Si oui, ces fichiers seront tous centralisés dans le répertoire "PA_SD_FA"?

On ne pourra pas utiliser la fonction INDIRECT combinée avec DECALER, comme je l'ai imaginé un moment. Par contre, on peut peut-être au moment où le n° est inscrit en colonne E, inscrire une formule dans les 4 colonnes (I à L) s'il y a bien chaque fois 12 lignes concernées?
 

jelobo

XLDnaute Nouveau
Re : VBA - reprise d'informations issues de fiches "modèles"

Pour les colonnes I à L, il y aura pour chaque audit, donc pour chaque FAD, entre 1 et 12 lignes.

Chaque classeur a effectivement pour nom "FA_xxx" (la FAD est un onglet inséré dans chaque classeur FA_xxx, tout comme l'est un diagramme de Gantt) et est hébergé dans un répertoire "PA_SD_FA" existant pour chaque processus.

Une vue écran de l'arborescence pour ce répertoire serait-elle utile ?

Bonne soirée.
 

Modeste

XLDnaute Barbatruc
Re : VBA - reprise d'informations issues de fiches "modèles"

'soir :)

Pour les colonnes I à L, il y aura pour chaque audit, donc pour chaque FAD, entre 1 et 12 lignes
De ce que j'ai cru voir, 12 lignes sont "prévues", mais certaines seulement sont "garnies", le cas échéant.


Une vue écran de l'arborescence pour ce répertoire serait-elle utile ?
Ce que je voudrais savoir, c'est, dans le chemin figurant dans les formules de ton premier fichier
Code:
\\W11570300AOF\partage\Qualite\pilotes_processus\6. Gestion du Risque\6.7_RCT\actions_amelioration\PA_SD_FA\
quelle partie variera?

Le nom complet du fichier sera chaque fois structuré de la même manière:
FA_le_n°_en_colonne_E-processus[espace]le_contenu_de_la_colonne_B-audit[espace]le_contenu_de_la_colonne_A.xls
 

jelobo

XLDnaute Nouveau
Re : VBA - reprise d'informations issues de fiches "modèles"

Bonsoir,

selon l'audit, 1 à 12 lignes pourrai(en)t être effectivement complétée(s).

Ce qui variera sera : 6. Gestion du Risque\6.7_RCT, puisque chaque FA-xxxx - qui intègre une FAD - est enregistrée dans le répertoire dédié à un processus, en l'occurrence "RCT".

Chaque fichier "FA_xxxx" débute bien par FA_xxxx mais ne comporte pas les informations des colonnes A et B.

Je pensais saisir les données reprises de la FA-xxx dans les colonnes A à F de l'onglet "état ..." ; la macro prendrait le relais pour les infos à consigner dans les colonnes G à L dont la source est la FAD.

Si la macro pouvait générer toutes les infos des colonnes A à D et F à L, ce serait un plus indéniable.

Je précise que le n° de la FA saisi en colonne E comportera un lien hypertexte conduisant à la FA concernée.

Je peux si besoin intégrer dans le dernier fichier adressé une FA et générer dans l'onglet "état ..." les infos issues de la FA pour les colonnes A à D et celles issues de la FAD pour les colonnes F à L, pour mieux expliciter le sujet.

Bien cordialement
 

Modeste

XLDnaute Barbatruc
Re : VBA - reprise d'informations issues de fiches "modèles"

Bonsoir,

Désolé, mais je n'y comprends rien: s'il y a une/des partie(s) variable(s) dans le chemin d'accès et que ces parties variables ne sont renseignées nulle part, je ne vois pas comment construire une formule.

Peut-être la dernière partie de ton message répondra-t-elle ... mais alors, c'est par là qu'il aurait fallu commencer? Mets-toi à notre place 5 minutes: nous ne connaissons rien à ton contexte. On a commencé avec une formule intégrant le chemin d'accès à un fichier ... et on se retrouve maintenant confrontés à un nombre x de fichiers, répartis dans une série de sous-répertoires.

Moi, je nage, pour le moment :eek:
 

jelobo

XLDnaute Nouveau
Re : VBA - reprise d'informations issues de fiches "modèles"

Bonjour, en particulier à Modeste.

Je joins une nouvelle version du fichier adressé pour clarifier ma demande en espérant que l'onglet "Lisez moi" donnera toutes les informations nécessaires pour mieux comprendre ma demande.

Bien cordialement
 

Pièces jointes

  • etat_audit_24032016_forum.xls
    211.5 KB · Affichages: 68
  • etat_audit_24032016_forum.xls
    211.5 KB · Affichages: 51

Modeste

XLDnaute Barbatruc
Re : VBA - reprise d'informations issues de fiches "modèles"

Bonjour jelobo,

Moi, je nage, pour le moment :eek:
J'aurais sans doute dû préciser que je ne sais pas nager ... J'ai donc sombré, depuis :rolleyes:

Revenons (une dernière fois: après je ne sais pas comment expliquer plus ou mieux ce qui manque!?) à ton premier fichier. Une des formules faisait référence à
Code:
'\\W11570300AOF\partage\Qualite\pilotes_processus\6. Gestion du Risque\6.7_RCT\actions_amelioration\PA_SD_FA\[FA_1210-processus RCT-audit 15-2013.xls]FAD'!$V$7

Tu nous dis ensuite que deux parties varieront: 6. Gestion du Risque et 6.7_RCT Comment détermine-t-on que 12 lignes plus bas le dossier concerné sera 7. Noyade en eaux troubles ou 4. Alcoolisme chez les contributeurs d'un forum ... lesquels auront encore chacun plusieurs sous-dossiers.

La macro que tu as jointe ne fait que des copier-coller, puis des rechercher-remplacer. Pour le faire, il faut donc qu'il y ait, en lignes 7, 19, 31, 43 et ainsi de suite une première formule qui fournisse le chemin d'accès à chaque fichier, qui figure en un emplacement différent. Ma question désespérée est donc: comment connaît-on l'emplacement précis et le nom du fichier dont il faut lire le contenu de la feuille FAD?

Me comprends-tu?


PS: si d'aventure un lecteur passant par ici, pense mieux comprendre que moi, qu'il/elle n'hésite pas!
PS (bis): m'en vais gonfler ma bouée et mes petits brassards, pendant ce temps-là
 

jelobo

XLDnaute Nouveau
Re : VBA - reprise d'informations issues de fiches "modèles"

Je ne voudrais pas être responsable d'une noyade ou d'un alcoolisme naissant : le lien hypertexte manuel créé sur le numéro de la FA (colonne E de l'onglet "etat_taches") donne l'adresse du répertoire qui héberge la FA.

Ne peut-on pas partir de cela ?
 

Modeste

XLDnaute Barbatruc
Re : VBA - reprise d'informations issues de fiches "modèles"

Re et re,

En définitive, j'ai décidé de me noyer ... dans l'alcool (au moins, si quelque chose ne fonctionne pas, il y aura une raison valable :p)
Ceci dit, je n'ai pas pu tester avec des liens pointant vers un répertoire réseau. Il faudra tester ... et voir!

Je ne sais trop comment tu imaginais procéder par la suite. L'inscription de toutes les formules sur près de 400 lignes ne me semblait pas la meilleure idée. Voici donc ma suggestion (imbibée):
  • effacer le contenu des colonnes H à L (oui, oui, colonne H aussi!)
  • appliquer aux colonnes I à L une Mise en Forme Conditionnelle mettant la couleur de police dans la même teinte que la couleur de remplissage, si la valeur de la cellule est 0
  • coller le code suivant dans la fenêtre de code de la feuille "etat_taches"
    VB:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column <> 8 Then Exit Sub 'si pas colonne H, on sort
    If (Target.Row - 7) Mod 12 <> 0 Then Exit Sub 'si pas lignes 7, 19, 31, 43, etc.
    Cancel = True
    Application.ScreenUpdating = False
    Target = 1
    Target.Offset(1, 0).Resize(11, 1).FormulaR1C1 = "=if(RC[1]=0,"""",R[-1]C+1)" 'on inscrit les SI... dans les 11 lignes de la colonne H
    With Target.Offset(0, -3).Hyperlinks(1)
        'recomposer le chemin d'accès au départ du lien hypertexte
        fich = Mid(.Address, 1, InStrRev(.Address, "\", -1, vbTextCompare)) & "[" & Mid(.Address, InStrRev(.Address, "\", -1, vbTextCompare) + 1, 50) & "]"
    End With
    premLigne = Target.Row
    For c = 1 To 4
        Select Case c
            'attribuer une lettre de colonne et un n° de ligne de départ pour chaque formule des colonnes I à L
            Case 1
                col = "A"
                ligDep = 6
            Case 2
                col = "Q"
                ligDep = 9
            Case 3
                col = "V"
                ligDep = 7
            Case Else
                col = "V"
                ligDep = 9
        End Select
        For lig = 0 To 11
            'on écrit les formules
            Cells(premLigne + lig, 8 + c).Formula = "='" & fich & "FAD'!" & col & ligDep + 5 * lig
        Next lig
    Next c
    Application.ScreenUpdating = True
    End Sub
    j'ai commenté l'une ou l'autre ligne de code, comme l'aimable lecteur peut le constater avec ravissement
  • réaliser un double clic en colonne H à hauteur d'un lien hypertexte (valide, cela va sans dire :rolleyes:) donc en H7, H19, H31, ... Un double-clic ailleurs aura l'effet habituel
  • croiser les doigts
 

Discussions similaires

Réponses
3
Affichages
190
Réponses
19
Affichages
1 K

Statistiques des forums

Discussions
311 721
Messages
2 081 927
Membres
101 842
dernier inscrit
seb0390