Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Ajout forme via VBA sur planning

AurelienGoub

XLDnaute Nouveau
Bonjour à tous,

Je travail actuellement sur l'automatisation d'un planning que j'ai créée. J'ai premièrement été aidé via un code VBA pour le remplissage de cellule entre deux valeurs : par exemple je met un 1 pour le démarrage de la tâche 1 au 15/11 et un 2 pour la fin de cette tâche au 22/11 et automatiquement les cellules entres sont rempli d'un couleur que l'on peut choisir via une autre cellule. Pour supprimer il faut ainsi mettre un 3 à la place du 1 et ainsi les couleurs s'en vont. Sur le principe, le fonctionnement est bon mais je me rend compte que l'utilisation de Shape à la place du remplissage serait plus adapté, que entre le 1 et le 2 ce soit une barre de couleur avec une certaine épaisseur au lieu du remplissage. Pourriez-vous m'aider suite à ces explications ?
Ci-joint un fichier pour comprendre.

Merci d'avance !

Aurélien G
 

Pièces jointes

  • exemple planning.xlsm
    129.2 KB · Affichages: 19

AurelienGoub

XLDnaute Nouveau
Bonjour,

Cela marche nickel merci ! J'aurai juste préféré que la forme soit un trait avec une certaine épaisseur, j'ai donc essayé AddConnector en bricolant une partie de votre code mais malheureusement je n'arrive pas à configurer la fin pour qu'il se termine sur la case où est inscrit 2. J'aurai aimé l'avoir d'une certaine épaisseur mais je ne sais pas le configurer non plus...
Si possible de m'aider à nouveau cela serait super
 

AurelienGoub

XLDnaute Nouveau
Wahou génial c'est exactement ça que je voulais ! Désolé de t'embêter encore mais est-ce que tu saurais le faire sur une seule journée ? Je m'explique, que lorsque je met 1,1 dans une case seule cette case soit remplies par la forme ?
Merci !
 

AurelienGoub

XLDnaute Nouveau
Bonjour,

J'ai testé votre code, en fait il ne marchait pas car il s'initialisait sur la cellule "e5" qui était par défaut la 6eme colonne et donc la forme partait du début jusqu'à la case rempli. J'ai donc modifié en paramétrant la case "e5" comme colonne de départ avec le remplissage 1.1 et ensuite utilisé votre code.
VB:
If t = 1.1 Then t.Parent.Range("e5") = t.Column
If t = 1.1 Then fintache = t.Column: Call trace(t, t.Parent.Range("e5"), fintache, lg)
Cela marche parfaitement !

Merci beaucoup pour votre aide, cela m'a débloqué sur ce sujet ! Bonne continuation et à bientôt !

Aurélien
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…