Créer des formes selon des données

Bonjour a tous, je n'ai pas touché Excel depuis 10 ans, j'ai une question , un chef nous fait des emploi du temps trop juste pour nos taches,

Mon chef direct souhaite que je lui trouve une solution sur excel pour faire en sorte de montrer que certain planning sont trop juste

imaginons tache 1 : 2h00 / tache 2 : 4h00

comment faire pour faire apparait une forme sur excel plus ou moins grande en fonction du nombre d'heure qu'elle fait, que la tache 2 créer une forme 2 fois plus grande que la tache 1, pour l'introduire dans un planning

faire ceci afin que le grand chef puisse utiliser ce procéder

je sais pas si c'est claire, merci a vous

Bonjour,

Je vous renvoie peut etre d'abord sur

Suivi Activités Heures de travail Présences Absences (excel-pratique.com)

et

Résultats pour "planning" (excel-pratique.com)

Car le sujet est fréquent sur le forum et de nombreux outils existent déjà, plus "adaptés" que des formes en VBA.

Y'a pas exactement ce que je cherche, j'aimerai une fonctionnalité pour faire apparaitre une case plus ou moins grande selon la valeur de cette tache,
exemple : tache 1 "vidange" 2h , je veux une liste deroulante ou autre pour pas prendre de place; et lorsque je clique sur vidange cela me sort une case faisant 4 carré de longueur imaginons pour mettre dans un planning qui est en demi heure
Tache 2 : 3h donc une case de 6 carré apparait

je sais pas si on comprend bien le probleme ^^

Le fichier joint, à titre d'exemple, correspond-il à la demande ?

14exemple.xlsx (11.77 Ko)

Oui mais est il possible de faire apparaitre une forme géométrique plus ou moins grande en fonction de sa valeur

Tache 1 "2h" , si je clique sur la tache 1 , un forme apparait que je peux prendre et mettre dans mon planning

Tache 2 "4h" donc si je clique, la forme geometrique qui apparait sera elle 2 fois plus grande que la tache 1

Ah ok, alors il faut du VBA. Ci-joint une autre proposition.

21exemple-vba.xlsm (20.09 Ko)

"Impossible d'executer la macro .....les soient desactivés"

j'ai regardé dans les options elles sont bien activés

je comprend ta macro et cest clairement ce que je recherche mais est il possible davoir la forme obtenu mais de maniere vertical ?

J'ai copié cet emploi du temps la, j'aimerai avoir les formes en vertical =)

image

Bonjour,

Pour une forme verticale, inversez la hauteur et la largeur dans la derniere ligne. càd :

Sub test()
  Dim outputRng As Range
  Set outputRng = ActiveSheet.Range("outputRng")

  Dim coefW As Double
  coefW = ActiveSheet.Range("coefW").Value2

  Dim baseW As Double
  baseW = 20#

  ' ajout d'un rectangle
  ActiveSheet.Shapes.AddShape msoShapeRoundedRectangle, _
    outputRng.Left, outputRng.Top, outputRng.RowHeight, baseW * coefW
End Sub

Pour les macros essayez ceci :

  1. Fermez le fichier
  2. Dans l'explorateur de fichiers, clic droit sur le fichier et "Propriétés"
  3. Regardez s'il n'y a pas en bas une case cochée du type "fichier bloqué", débloquez le et réouvrez-le. image

Je n'ai pas ce genre de case

image

Cela marche finalement, en fermant et ouvrant le fichier excel

Super. Si le problème est résolu n'oubliez pas de cloturer le fil.

Merci a vous en tout cas, dernière question est il possible de modifié la taille des formes généré ?

si je génère une forme de 1h donc 2 cases, la forme généré est plus grande que mes cases de mon tableau

image
Oui bien sur,

Dans le code, remplacez la ligne

baseW = 20#

par

baseW = ActiveSheet.Range("A1").RowHeight

En supposant que vous n'ayez pas modifié les hauteurs de lignes cela devrait fonctionner parfaitement.

Sinon Remplacez ActiveSheet par Workbooks("nom de votre fichier en screenshot.xlsx").Worksheets("nom de votre feuille")

Parfait, encore une question ^^

En largeur cette fois ci, voici les dimension de mes largeurs de colonnes

image

et , est il possible d'afficher dans la forme le nom de la tache en question ?

Juste pour info, s'il vous plait quand vous avez tout un tas de "petits détails" comme ca a ajouter faites-le en une fois. C'est beaucoup mieux pour tout le monde, et de mon coté je perds beaucoup moins de temps. Après vous voulez changer la couleur, la forme ou que sais-je… Dites-le tout de suite !

Pour la largeur j'ai essayé via la hauteur de ligne comme je l'avais indiqué dans le fichier, j'espère que ca convient.

Ci-après le code avec texte à l'intérieur des formes.

Sub test()
  Dim outputRng As Range
  Set outputRng = ActiveSheet.Range("outputRng")

  Dim coefH As Double
  coefH = ActiveSheet.Range("coefH").Value2

  Dim baseH As Double
  baseH = ActiveSheet.Range("A1").RowHeight

  ' ajout d'un rectangle
  With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, _
    outputRng.Left, outputRng.Top, outputRng.RowHeight, baseH * coefH).TextFrame2
    .TextRange.Text = ActiveSheet.Range("coefH").Offset(0, -1).Value2
    .VerticalAnchor = msoAnchorMiddle
    .Orientation = msoTextOrientationUpward
    .AutoSize = msoAutoSizeTextToFitShape
  End With
End Sub

Renommez dans le gestionnaire de noms la cellule F3 de "coefW" en "coefH", c'est important.

Je n'y avait pas pensé, moi je veux juste que les formes générer fassent un peu près la taille des case en largeur et hauteur, et si possible avec le nom de la tache indiqué dans la forme généré c'est tout ^^

J'ai cette erreur

image

Désolé je n'avais pas vu cette ligne
"Renommez dans le gestionnaire de noms la cellule F3 de "coefW" en "coefH", c'est important."

C'est fait et cela marche parfaitement

bonjour le fil, dans une autre question, j'avais proposé ceci. La seule chos à faire, c'est la tourner 90 degrees et peut-être les textes.

Avez-vous un fichier avec des données ?

11teo-peron.xlsm (112.15 Ko)
Rechercher des sujets similaires à "creer formes donnees"