Renvoi titre colonne pour matrice coactivité

Bonjour,

J'essaie de créer un fichier pour gérer la coactivité entre activité.

Le fichier est composé deux feuilles :

  • 1ère feuille : elle contient la matrice avec toutes les coactivités possibles. La coactivité est définie en choisissant "oui".
  • 2ème feuille : il s'agit d'une feuille dans laquelle je souhaite avoir le récapitulatif des coactivités possibles pour chacune des activités.

C'est sur cette dernière feuille que je bloque.

Je souhaiterais, en sélectionner l'activité (cellule C2), que cette feuille m'affiche toutes les activités qui peuvent être réalisées en coactivité sous forme de tableau (liste).

Est-ce que quelqu'un pourrait m'aider à trouver une solution?

J'ai joins le fichier à ce message.

D'avance, merci.

Cordialement.

Kal

13coactivite.xlsx (31.10 Ko)

Bonsoir

Une proposition en VBA

20coactivite.xlsm (29.93 Ko)

Bonjour Yal_excel,

Merci beaucoup pour cette proposition.

Après réflexion, je me suis rendu compte que je me suis trompé dans la matrice.

Je n'aurais dû grisé que la diagonale de la matrice et non tout une moitié.

Pourriez-vous svp modifier le code pour qu'il prenne en compte les deux côtés de la diagonale?

D'avance, merci pour votre aide.

Kalel_77

Pas de problème par contre exclure la diagonale complexifierait le code inutilement.

8coactivite.xlsm (32.31 Ko)

Ce qui pourrait être fait et faciliterait les choses pour la matrice, c'est de ne remplir manuellement qu'une moitié de la matrice et l'autre moitié, la remplir automatiquement via des formules ou du code.

Qu'en pensez-vous?

Je suis d'accord pour laisser la diagonale.

En effet, en la grisant, on indique qu'il n'y a pas besoin de mettre une valeur dans ces cellules.

Nouvelle version

La diagonale est neutralisée et la symétrie est opérationnelle

J'ai ajouté un code pour aider à la saisie à tester. Si cela ne convient pas il suffit de supprimer la procédure :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

dans le code de la feuille "Coactivité"

12coactivite-v3.xlsm (44.51 Ko)

Bonjour Yal_excel,

Merci beaucoup pour votre proposition et votre temps. C'est super gentil.

En revanche, j'ai fait une petite erreur en ne donnant pas le fichier final sur lequel cette matrice était intégré.

Car il semblerait que dans le code VBA, les références aux cellules soient "absolues". Je ne sais pas s'il est possible de modifier cela vu que j'ai utilisé un tableau structuré.

Je vous ai également induit en erreur en mettant "Activité 1", "Activité 2",... car en réalité l'intitulé de l'activité ne sera pas générique (test dynamique, maintenance préventive...) d'où l'importance de copier exactement le contenu de la cellule.

J'ai repris votre code dans le fichier final (en anglais) en tentant d'appliquer quelques modifications pour coller à ce fichier mais sans succès (voir PJ).

Pourriez-vous svp y jeter un oeil ?

Egalement, le nombre d'activité n'est pas fixé à 50, il peut évoluer au-delà de 50.

Pensez-vous qu'il soit possible de rendre le code automatique de sorte que si j'ajoute des activités, aucune modification du code ne soit nécessaire?

Malheureusement je suis loin de maîtriser le code VBA.

D'avance, merci pour votre support.

Kalel

Bonjour kalel

En effet "une petite erreur". Je dirais même deux puisque la feuille recap n'est pas non plus conforme à la première version.

Heureusement que vous avez utilisé un tableau structuré sinon j'aurais été obligé de le transformer moi même

Les références sont relatives à la cellule sélectionnée avec des offset pour tenir compte de la position du tableau sur la feuille.

Voici la version mise à jour.

Nouvelle version avec des références vraiment relatives

Petit oups, j'avais négligé certaines circonstances, c'est maintenant corrigé.

Il y a un autre problème qui peut se présenter. Si on fait un tri quelconque sur le tableau "Table1" de la feuille Decision_Matrix tout s'écroule. Ce ne sont pas les bonne activités qui sont renvoyées. Une solution (précaire) est de protéger la ligne d'en tête du tableau afin d'empêcher le tri. Pas très élégant et un peu aléatoire.

Je vais peut être essayer de réfléchir à une meilleure solution.

En attendant voici une version opérationnelle.

Une solution

re-bonjour Yal_excel,

En effet, j'ai trouvé judicieux d'épurer le fichier avant de le soumettre dans ce forum mais au final cela a compliqué les choses.

Désolé.

Merci beaucoup pour votre excellent travail, c'est parfait.

J'ai essayé de mettre en place l'ajustement automatique de la zone d'impression de la feuille "PTW Summary". J'ai rentré la formule suivante dans "définir un nom":

DECALER('PTW Summaryl'!$A$1;;;28+NB.SI('PTW Summary'!$b$29:$b$79;"<>0");7)

Mais il semblerait que la formule soit inhibée.

Savez-vous d'où cela peut venir?

D'avance, merci.

Pas la moindre idée.

Une dernière version que je trouve plus propre

La matrice se construit dynamiquement. L'ajout de ligne génère l'ajout de la colonne correspondante. La suppression de ligne entraine la suppression de la colonne correspondante. Les changements dans "Type of work" sont répercutés dans les noms de colonnes. Il n'y a plus de lignes vides dans le tableau ce qui est une bonne chose. Pourquoi trainer un tableau de 3500 cellules si on a besoin que de 300?

A toi de voir.

Pour ton problème de zone d'impression je te conseille d'ouvrir un nouveau sujet. Ce n'est pas bon de mélanger les demandes.

Cordialement.

Bonjour Yal_excel,

Merci encore pour votre excellent travail et votre soutien.

Concernant la zone d'impression, c'est résolu, il s'agissait juste d'un problème d'argument dans la formule:

  • Ne fonctionne pas : DECALER('PTW Summaryl'!$A$1;;;28+NB.SI('PTW Summary'!$b$29:$b$79;"<>0");7)
  • Fonctionne : DECALER('PTW Summaryl'!$A$1;;;28+NB.SI('PTW Summary'!$b$29:$b$79;"<>"&"");7)

La nouvelle idée d'avoir une matrice qui se construit dynamiquement est excellente.

En revanche je préférerais que les titres de colonne soient des chiffres (n° du type of work) plutôt que les "type of work".

En effet, les "type of work" que j'ai mis dans le fichier de travail ne sont pas représentatifs de ce que nous avons en réalité où ils sont bien plus longs.

J'ai légèrement retravaillé le fichier (voir PJ):

  • en ajoutant 2 colonnes dans la feuille "Decision_Matrix" (PIC et Comments)
  • dans la feuille "PTW Summary", j'ai rajouté le n° du "type of work" pour que le choix dans la liste de validation se fasse sur ce critère et non le "type of work", ce qui n'est pas pratique.

Malheureusement, maintenant la macro ne se lance pas lorsque je change de type of work.

Pourriez-vous svp y jeter un oeil?

D'avance, merci pour votre temps.

Kalel

Bonjour kalel_77

"Malheureusement, maintenant la macro ne se lance pas lorsque je change de type of work"

Deux raisons du même ordre à cela. Le choix du type of work est passé de C5 en C3. Le programme surveillant la cellule C5 ne pouvait pas capter le changement. C'est corrigé. L'autre raison c'est l'ajout des colonnes. La matrice des coactivités commençait en colonne 20 elle commence maintenant en colonne 22. Ca n'aurait pas empêché la macro de se lancer mais il y aurait des erreurs dans les résultats. J'ai corrigé cela en paramétrant le numéro de la colonne de début de la matrice. Ca marchera tant que vous ne changerez pas les noms des colonnes de la matrice.

J'ai ajouté des commentaires dans le code pour aider à la compréhension.

Je regardes pour intégrer vos modifs et remarques à la version matrice automatique.

Bonne journée.

Merci pour cette verison et surtout pour les commentaires dans le code.

Cela me permet de comprendre plus en détail le programme.

Une question: j'ai un message d'erreur lorsque je supprime le contenu de la cellule C3. Comment pouvons-nous nous affranchir ce message d'erreur?

Remplacer le code de la feuille sheet2(PTW Summary) par celui ci :

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("C3")) Is Nothing And Target.Count = 1 Then
    Dim act$
    act = Target.Value2
    If act <> "" Then Call Recap(act)
  End If
End Sub

On verifie que C3 n'est pas vide avant d'appeler la macro Recap.

Sinon la version matrice auto

J'achète la version matrice auto

Merci beaucoup.

Une petite modif si possible: est-il possible de conserver la coupure en deux de la matrice (zone blanche et zone grise) sans avoir à le faire manuellement?

En haut à droite : blanc (zone où on choisit la coactivité)

En bas à gauche: gris (zone qui se remplit automatiquement).

D'avance, merci.

Rechercher des sujets similaires à "renvoi titre colonne matrice coactivite"