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

jelobo

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

Bonjour à toutes et tous, particulièrement à Modeste.

J'ai respecté scrupuleusement tout ce que tu as préconisé, même croisé les doigts, mais rien ne se passe.

J'ai remarqué qu'après le double clic en H7 les sous-menus de "Développeur" étaient tous grisés donc inaccessibles : un indice ?

A plus tard, peut-être.

Bien cordialement
 

Modeste

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

Bonjour,

rien ne se passe
Ah mince, c'est plus que ballot.
D'abord surpris (j'avais testé à plusieurs reprises hier), force m'a été de constater qu'aujourd'hui, j'avais aussi un problème ... sauf que chez moi, le constat est différent: les formules sont bien insérées ... mais rien ne s'affiche!?
En double-cliquant, puis en validant, les résultats apparaissent instantanément ... eh bien je suis toujours surpris :(

Je viens donc de tester en ajoutant, entre le "Application.ScreenUpdating = True" et le "End Sub" un petit "Me.Calculate"
Peux-tu faire de même et re-tester ensuite?
 

Modeste

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

Bonsoir,

J'aime beaucoup ton sens de la concision ... mais ça n'aide guère :(

Tu sais comment mettre un point d'arrêt, puis exécuter en pas à pas? Même les formules de la colonne H ne s'inscrivent pas? Ton double-clic, tu le fais bien en H7, H19, H31, ... ou une des autres lignes de la série?
 

jelobo

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

Je ne sais pas mettre un point d'arrêt, ni exécuter en pas à pas ; désolé.

Quant au double clic, je le fais bien en H7, H19, etc. Rien ne s'affiche dans cette colonne H.
 

Modeste

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

Re,

Dans l'éditeur vba, fais un clic dans la zone grise à gauche du premier If au début du code (un point d'arrêt rouge doit apparaître). L'exécution du code d'interrompra à cette ligne.

Dans la feuille de calcul, fais le double-clic en H7, H19, etc. Tu devrais re-basculer automatiquement dans le vbe et la ligne marquée par le point d'arrêt devrait être surlignée.
Si c'est le cas, appuie sur F8 (c'est le raccourci pour le pas-à-pas). Une instruction est exécutée à chaque appui sur F8.

Affiche les variables locales (si elles ne le sont pas déjà) et regarde ce que valent les différentes variables à chaque stade de l'exécution du programme.

[Edit:] par acquit de conscience, j'ai redémarré ma vieille machine, équipée d'Excel 2000, collé les fichiers FAxxx dans d'autres emplacements, redéfini les liens hypertextes et les résultats semblent concluants ... à suivre
 
Dernière édition:

jelobo

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

Bonsoir Modeste,

j'avais recherché, hier soir, comment marquer un point d'arrêt et exécuter une macro pas à pas.

Je viens de reprendre mon fichier, appliqué toutes tes consignes mais toujours rien.

Je me demande si cela n'est pas lié au fait que je travaille à distance ; aussi, reprendrai-je les tests lundi prochain depuis mon lieu de travail.

Je ne manquerai pas de te tenir informé.

Merci pour le temps important que tu as consacré à la recherche d'une solution.

Bien cordialement
 

jelobo

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

Bonjour à toutes et tous et plus particulièrement à Modeste.

Des informations sur les tests des travaux déjà réalisés, "à chaud" depuis mon lieu de travail.

Le code, que j'avais cru être une macro, était un "évènement" que j'ai enregistré au bon endroit, çàd pas dans un module ...

Le double clic en H7 (par exemple) génère des informations mais incomplètes, à savoir que l'adresse du fichier source est tronquée.

Dans le fichier joint, reprise de ladite adresse et de celle qui devrait l'être.

Je reste à l'écoute.

Bien cordialement
 

Pièces jointes

  • adresse générée_forum.docx
    21.9 KB · Affichages: 24

Modeste

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

Bonjour,

Au moins, cette fois quelque chose "se passe" ;)

Le "..\..\" au début de l'adresse signifie -je présume- que ton fichier audit (celui avec la macro) est sur le même lecteur réseau (dans un répertoire différent) que les FAxxxx.

Je n'ai ici qu'un accès limité aux lecteurs réseaux; mes essais ont été limités. Je ne peux donc garantir la précision de ce qui suit, mais en fonction de ton dernier document et du chemin dans tes premières formules, j'essaierais de modifier la ligne suivante (celle permettant de recomposer le chemin d'accès au départ du lien hypertexte):
Code:
fich = Replace(Mid(.Address, 1, InStrRev(.Address, "\", -1, vbTextCompare)) & "[" & Mid(.Address, InStrRev(.Address, "\", -1, vbTextCompare) + 1, 50) & "]", "..\..\", "Z:\Qualite\")
 
Dernière édition:

jelobo

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

Bonjour,

Au moins, cette fois quelque chose "se passe" ;)

Le "..\..\" au début de l'adresse signifie -je présume- que ton fichier audit (celui avec la macro) est sur le même lecteur réseau (dans un répertoire différent) que les FAxxxx.

Je n'ai ici qu'un accès limité aux lecteurs réseaux; mes essais ont été limités. Je ne peux donc garantir la précision de ce qui suit, mais en fonction de ton dernier document et du chemin dans tes premières formules, j'essaierais de modifier la ligne suivante (celle permettant de recomposer le chemin d'accès au départ du lien hypertexte):
Code:
fich = Replace(Mid(.Address, 1, InStrRev(.Address, "\", -1, vbTextCompare)) & "[" & Mid(.Address, InStrRev(.Address, "\", -1, vbTextCompare) + 1, 50) & "]", "..\..\", "Z:\Qualite\")

Modeste,

merci mais message d'erreur lors de la modification de la ligne ad hoc (cf.fichier joint)

Je reste à ton écoute attentive !
 

Pièces jointes

  • erreur_modif_macro.docx
    30.2 KB · Affichages: 24

Modeste

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

Re,

À distance, je ne peux pas faire grand chose, mais dans le doc Word, il manque des guillemets derrière "..\..\" ... pourquoi ne pas faire des copier-coller?
 

jelobo

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

Bonsoir Modeste,

la modification apportée conduit bien à la fiche concernée ! Parfait.

Toutefois, mais sans vouloir abuser ni de ta gentillesse, ni de ton temps, il y aurait des compléments d'amélioration à apporter.

Je joins un fichier les précisant mais qui n'est pas le reflet des infos générées par la macro, confidentialité des données oblige.

Les nouvelles demandes figurent dans les cellules K2 et L2 de l'onglet "etat_taches".
En outre, les cellules I8:L18 de cet onglet ne devraient comporter aucune donnée lorsque les cellules source de la FA (fiche) sont vides.

J'espère être clair quant à cette demande.

Bien cordialement
 

Pièces jointes

  • etat_audit_04042016_forum.xls
    210 KB · Affichages: 41

Modeste

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

Bonsoir,

Pour la demande figurant en K2 et L2, en cherchant bien, tu devrais pouvoir trouver les modifs à apporter. Si tu ne vois pas je veux bien y regarder, demain (en journée ou en soirée).

Ce que tu demandes pour la plage I8:L18 risque de transformer le fichier ou la macro en usine à gaz (chose dont je ne suis pas un fervent adepte ... et en admettant que ce n'en soit pas déjà une!). Tu es certain de ne pas pouvoir te satisfaire de la mise en forme conditionnelle que je suggérais au message #15? ... parce qu'à moins de trouver quelque chose de simple, je ne crois pas que je vais y consacrer plus de mon temps libre :rolleyes:

Les formules en colonne H de ton dernier fichier ne sont pas celles que la macro y inscrit ... c'est normal?
 

jelobo

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

Bonjour Modeste,

ta question porte sur la colonne H ou la I ? En I, j'ai intégré des données fictives au regard de la confidentialité des données d'origine.
La macro génère bien les bonnes informations.

Pour les questions K2 et L2, cela ne ma paraît pas simple de trouver la solution ; aussi, si tu voulais y consacrer un peu de (dernier) temps, cela serait formidable !

Pour les plages I8:L18, la mise en forme conditionnelle ne répondra pas à mon problème car la génération d'une date (en L notamment, même à 00/01/00) fausse les calculs qui en découlent ; je vais tenter et trouver une solution.

Je reste à ton écoute.

Je te renouvelle mes plus vifs remerciements pour le travail accompli.

Bien cordialement
 

Modeste

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

Bonjour,

J'ai tout de même tenté le formules SI ... tu vérifieras si c'est OK
Par contre, en K2 et L2, les références aux cellules décalées de 5 lignes à chaque fois ... c'était déjà correct!?

Remplace le code précédent par celui-ci:
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]="""","""",R[-1]C+1)" 'on inscrit les SI... dans les 11 lignes de la colonne H
With Target.Offset(0, -3).Hyperlinks(1)
    fich = Replace(Mid(.Address, 1, InStrRev(.Address, "\", -1, vbTextCompare)) & "[" & Mid(.Address, InStrRev(.Address, "\", -1, vbTextCompare) + 1, 50) & "]", "..\..\", "Z:\Qualite\")
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 = "=if('" & fich & "FAD'!" & col & ligDep + 5 * lig & "=0,"""",'" & fich & "FAD'!" & col & ligDep + 5 * lig & ")"
     Next lig
Next c
Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
3
Affichages
223
Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 234
dernier inscrit
matteo75654548