Remplissage automatique en fonction d'un tableau
Bonsoir à tous,
Voici ma problématique du jour que je n'arrive pas à résoudre.
J'ai un ensemble de collaborateurs, qui sont par équipe, et qui en fonction de l'équipe ont accès à des outils.
L'onglet paramètres montre les différentes équipes et les droits d'accès sur les outils
Dans l'onglet collaborateurs, dès qu'un nouveau arrive, il est rajouté à la liste, et je souhaiterai que en fonction du choix de l'équipe (Colonne D), les case des outils non utilisés soient grisées, avec N/A dedans. J'ai fais manuellement les 2 premières lignes, pour exemple.
Pourriez-vous m'aider à automatiser le remplissage lors d'un choix d'équipe ? (Sachant que des nouvelles équipes peuvent être crée, et de nouveaux outils peuvent être intégré)
Merci mille fois pour votre aide.
Sebastien.
Bonjour,
Salut Steelson ! Là c'est moi qui arrive après !
Une évènementielle Change aussi ! Ciblée sur la colonne Equipe... Accès direct à la macro par clic droit sur l'onglet de la feuille Collaborateurs et Visualiser le code.
Ma proposition est sensiblement plus longue, mais j'ai cru bon de prévoir les modifications au-delà d'un premier choix d'équipe avec une ligne vierge. On peut soit effacer (plus d'équipe) soit changer l'équipe, et il peut alors y avoir des droits inscrits à ce moment.
Si on efface, la ligne est testée, si on trouve des droits inscrits (cellules non vides et non "N/A"), l'utilisateur est questionné pour confirmer l'effacement des droits : s'il confirme on efface, s'il infirme on n'effacera que les cellules "N/A" (avec remise au format des autres...).
Si une équipe est sélectionnée, étant donné que cela peut être un changement, ou venir après un effacement (réfléchi comme par erreur), on teste donc également la ligne pour détecter des droits déjà inscrits, s'il y en a l'utilisateur est questionné sur leur effacement ou non.
On procède ensuite à la mise en place des "N/A"... Bien sûr si des droits se trouvent inscrits à un emplacement "N/A" selon le choix d'équipe fait, ils seront tout de même effacés au profit du "N/A".
Mon code aurait pu être un peu raccourci mais j'avais déjà subdivisé au départ sur les 2 cas : pas d'équipe/équipe, ce qui m'a amené à quelques redondances, en ce qui concerne les tests notamment.
A l'occasion je pourrais le reprendre pour compacter un peu, mais cela ne joue que sur le volume écrit, sans incidence sur l'exécution.
On peut donc commencer par tester...
Cordialement.
il peut alors y avoir des droits inscrits à ce moment.
Si on efface, la ligne est testée, si on trouve des droits inscrits (cellules non vides et non "N/A"),
je me suis dit aussi après coup qu'il faudrait ne pas blanchir ces cases comme je l'ai fait
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D:D")) Is Nothing Then Exit Sub
lig = rechV(Target.Value)
If lig = 0 Then Exit Sub
For colonne = 9 To 18
col = rechH(Cells(2, colonne))
If col = 0 Then Exit For
If Couleur(Sheets("Parametres").Cells(lig, col)) = -4142 Then
Cells(Target.Row, colonne) = "N/A"
Else
If Cells(Target.Row, colonne) = "N/A" Then Cells(Target.Row, colonne) = ""
End If
Next
End SubBonjour,
Merci beaucoup pour vos messages et vos propositions, je teste aujourd'hui et vous tiens au courant !
Bonne journée.
Sebastien
Re bonjour messieurs,
J'ai testé le fichier, les MAJ des cellules fonctionnent, et j'aime bien la possibilité de garder ou non les droits, comme proposé dans le fichier de MFerrand.
Par contre, j'ai ajouté une équipe et un outil, j'ai l'impression que ça ne prend pas en compte l'ajout d'un outil, le tableau ne mets pas à jour la colonne, ou alors je ne fais pas ce qu'il faut. (fichier en PJ)
Vous pourriez m'aider à prendre en compte cet ajout ?
Encore merci.
C'est encore moi
Je commence à remplacer les noms des outils et équipes par leurs vrais noms, plus rien ne fonctionne, les lignes ne se remplissent plus, je ne sais pas pourquoi.
Y a t il une restriction ?
Merci !
En continuant de tester, j'ai l'impression que c'est le noms d'équipes qui posent pb, quand je change juste les noms des outils, c'est bien pris en compte.
N'hésitez pas si vous avez besoin d'info complémentaires.
Sebastien
j'ai mis à jour en ce qui me concerne ... tu peux ajouter des colonnes (c'est--dire des outils)
Voilà, rendue adaptable aux variations (même sécurisée si tu oublies de mettre à jour le nom Equipe).
Et j'en ai profité pour compacter un peu le code...
Mais si tu enlèves les numéros d'équipes, en correspondance avec les lignes et colonnes de paramètres, en correspondance avec les colonnes à mettre à jour... Plus rien ne peut marcher !
Merci beaucoup pour votre retour rapide !!
Pour ton fichier Steelson, tout à l'air de bien fonctionner en terme d'ajout, mais je ne sais pas pourquoi, je n'arrive pas à garder la mise en forme de mon tableau quand j'ajoute des colonnes, il me met une couleur unie (et non comme le reste du tableau avec les couleurs différentes 1 ligne sur 2). Et je n'arrive pas à corriger ça, même si je refais ma mise ne forme. Ca doit être un détail, mais s'il y a une astuce, je suis preneur. Et quand je veux refaire tout dans un nouveau classeur à l'identique et copier ton code, il plante en me disant qu'il ne connaît pas rechV. Mais en tout cas, ça fonctionne.
Pour ton fichier MFerrand, l'ajout des outils fonctionne, nickel, mais quand je change le nom des équipes, ça ne marche plus. Dans mon cas, les noms d'équipe ne sont pas Equipe 1, 2, 3, comme dans l'exemple ... mais des noms particuliers, Leader, Support, ... Est-ce possible de prendre en compte cette possibilité ?
Encore merci pour le temps passé.
Sebastien.
Steelson,
Désolé, quand j'avais fais les tests dans un nouveau classeur, j'avais oublié de copier les fonctions ...
Donc ça fonctionne, mais ça ne me met pas les cellules "N/A" en gris.
Merci encore ...
Bonjour, Salut Steelson !
Comme je te l'ai indiqué hier, si tu changes certaines caractéristiques par rapport au modèle fourni au départ, cela ne fonctionnera plus... Ce qu'on demande habituellement à un demandeur c'est de fournir un modèle conforme à son fichier original, soit qui en respecte rigoureusement la structure et le type des données, et j'ajouterais certaines particularités des données susceptibles d'être utilisées par le programme.
Pour ma part, j'aurais tendance à réclamer en plus qu'il ne se contente pas d'un ça fonctionne/ça fonctionne pas, mais qu'il se préoccupe un minimum de ce qui se passe dans la coulisse, comment dans les grandes lignes opère le code qu'on lui propose, de façon à collaborer au plus près à la résolution de son problème et disposer de critères de choix un peu plus méthodologiques et ne se contentant pas des apparences immédiates.
Le fichier modèle montrait : un tableau Paramètres listant des outils par équipe, dont il est apparu que le nombre évoluait conjointement, autant d'équipes que d'outils, on ajoute une équipe, et dans le même temps un outil en plus. On retrouve les colonnes outils dans Collaborateurs respectant le même ordre que celui du tableau Paramètres. En outre, la feuille montre qu'on liste des collaborateurs qu'on associe à une équipe, l'équipe est donc une notion d'ordre établissant au cas particulier un lien entre collaborateur et outils.
La liste des équipes en feuille Paramètres est nommée (il serait d'ailleurs bon de rendre ce nom dynamique pour éviter d'avoir à ajuster à chaque modification). J'utilise cette plage nommée pour cibler le tableau de paramètres (ce qui affranchit d'un adressage passant par la feuille conteneur...)
J'ai pris en considération aussi les éléments différenciés de mise en forme (bien qu'on puisse utiliser une MFC pour cela comme le dit Steelson...)
Tu remarqueras que dans mon code, à la suite des déclarations de variables et du ciblage des cellules dont le changement doit provoquer l'intervention, ma première ligne utile commence par définir une variable Eq pour lui donner le rang de l'équipe... qui me fournira l'index de la ligne de paramètres dans la plage de paramètres une fois celle-ci définie...
Comme ce rang figurait dans le nom d'équipe, c'est là que je le prélève ! Le plus simple... On peut le trouver ailleurs ou le déterminer autrement, mais à partir du moment où tu commences à opérer des changements par rapport au modèle, il conviendrait que tu actualises ce dernier et surtout que tu le stabilises, c'est à dire établir de façon sûre ce qui ne changera pas (et ce qui pourrait éventuellement encore changer). Sans quoi on joue les girouettes, et je n'aime pas particulièrement...
Cordialement.
Bonjour MFerrand,
Je souhaitais tout d'abord m'excuser si je n'ai pas été clair, ou si j'ai été maladroit dans mes propos.
Pour le fichier, j'avais (mal) compris qu'il fallait fournir des exemples le plus anonyme possible pour éviter de retrouver des informations personnelles ou de société sur le forum, j'aurais du en effet, donner des noms différents aux équipes, et ne pas les appeler par 1, 2, 3, ...
J'ai regardé les codes, mais à part quelques termes, je n'y connais malheureusement rien.
Je ferais par la suite un effort sur le tableau/fichier original pour qu'il se rapproche le plus de la "vraie vie", afin d'éviter de vous faire perdre votre temps.
Je vous remercie sincèrement pour votre aide à tous les 2.
Sebastien
Re,
Pas de souci !
Pour préciser un autre point, en intervenant sur un Forum, je ne donne nullement dans le "caritatif", je traite des questions, ce qui constitue un certain travail, parce qu'y trouve intérêt (personnel) à le faire, ne serait-ce que pour maintenir en ordre de marche mes capacités mentales (mais il y en a d'autres). Ce qui est aussi une garantie pour le demandeur, de qualité (j'essaierai toujours de faire au mieux de mes capacités du moment) d'une part, de suivi d'autre part (s'il revient 2 ans après [sous réserve, je ne suis pas éternel et peut aussi ne plus être en état de marche...] pour soulever un dysfonctionnement, je me ferais un devoir de m'attaquer à la question et autant que possible la résoudre).
Ceci étant, si au fil des pérégrinations je croise des questions plus ou moins élémentaires, qui ne présentent pas d'intérêt intellectuel particulier, je répondrais évidemment (connaissant la réponse bien sûr) parce que cela ne coûte rien de le faire, et l'intérêt est alors tout simplement comportemental (je n'aurais aucun plaisir à me regarder dans le miroir...
Pour revenir à ton sujet, ainsi que je l'ai dit je peux (mon code !) me passer des noms d'équipe sous la forme "Equipe 1" à "Equipe n" et donc introduire une petite modification pour calculer mon rang d'équipe autrement. Cependant, avant d'y procéder, il me paraissait souhaitable : que tu indiques déjà si tu étais intéressé à ce que je produise cette modification, ce qui n'a rien de technique mais m'évite de travailler dans le "vide", mais aussi que tu apportes les précisions sur la modification du modèle de façon que je puisse vérifier qu'il n'y a pas de contre-indication à la méthode que j'utiliserai, et plus largement que tu fasses le tour des changements potentiels de façon à fiabiliser l'ensemble...
Bonne journée à toi.
Merci pour ton message MFerrand.
Avec plus de 14550 messages et donc l'expérience du forum qui va avec, j'imagine bien que le "droit au but" est important !
Oui, je suis intéressé par ton code modifié, à savoir que mon tableau ne bougera pas, à part que les équipes et les outils auront des noms bien particulier (comme pomme, poire, saumon, entrecote, salade niçoise, etc... oui, j'aime la bonne bouffe) et que je pourrais ajouter des équipes et outils comme dit dans mon 1er message.
Merci pour ton aide.
Sebastien
J'ai noté... je vais tâcher de concocter ça dans la soirée (car pour demain Renault a décidé qu'il pouvait finir de réparer ma voiture ! sms de rappel hier (sans appel préalable !!) et appel aujourd'hui (la secrétaire était confuse tout de même...), alors que pour prendre RV, à moins de 2 semaines... !)
Pour ce qui est du nombre de messages, je ne chercherai à en tirer aucune gloire, dans la mesure où cela vient plutôt me rappeler un défaut d'activités dans d'autres domaines...
Je vais tout de même préciser que le listage des outils doit rester dans le même ordre sur la feuille Paramètres et sur la feuille Collaborateurs. Je détecterai le rang d'équipe à partir de la liste (que je te basculerai en nommage dynamique, cela pourra te servir...)
@+
Bon !
Renommé la plage en dynamique, se fait en mettant une formule en référence :
=DECALER(Parametres!$A$2;;;NBVAL(Parametres!$A:$A))NB- La cellule A1 est vide : ne rien y mettre (ou équilibrer par NBVAL(...)-1 dans la formule) et ne rien mettre en A en dessous de la liste des équipes, cela fausserait le calcul de la longueur de la plage.
Le nom s'adaptera automatiquement aux variations de la liste des équipes.
En Module1, j'ai placé une fonction de calcul du rang d'une équipe dans la liste (à partir du nom).
(Dans un module standard pour qu'elle puisse le cas échéant être utilisé ailleurs si on en a besoin.)
Et juste modifié la ligne de calcul du rang dans la macro (elle utilise maintenant la fonction). Le nom d'équipe peut donc être n'importe quoi.
Et c'est tout !
Cordialement.
Bonjour MFerrand,
Merci pour ton message et les corrections !
Petite question, les messages de confirmation de changement d'équipe semblent s'afficher uniquement pour la 1ere ligne. Ai-je raté quelque chose ?
Encore merci à toi
Sebastien