Worksheet_Change Intersect et combinaison de recherches dans 5 colonnes

Bonsoir ou bonjour suivant l'heure à laquelle vous verrez ce post ; je profite de l'occasion pour remercier tous les admin et contributeurs, qui m'ont permis avec le temps de me perfectionner dans l'utilisation d'EXCEL et VBA.

Bien évidemment, j'ai cherché sur le forum avant de vous solliciter et je remercie par avance ceux/celles qui pourront m'éclairer.

Après des joursssss à travailler sur la solution, je dois - à mon grand regret - accepter que j'ai besoin de votre aide...

Voilà, j'ai repris mes études et cette année, enfin, je vais terminer mon parcours académique (à 35 ans, il est temps de retourner bosser, non ?!).

Blague à part, pour mon mémoire de fin d'études, je bosse sur l'optimisation de mon suivi de chantier, et je termine actuellement un fichier EXCEL. Je le perfectionne depuis un trimestre et pour la fin de mon projet, il me reste une étape à franchir pour que mon fichier soit bouclé.

J'ai un tableau qui comporte des colonnes avec des numéros de semaines (pour la planification des compagnons).

Pour chaque opération spécifique, on saisit une date de début et cela crée un triangle d'une couleur spécifique dans la colonne équivalente au nombre de semaine indiquée dans la date de début.

Pour les autres opérations, on saisit la date de début et de fin et un rectangle bleu apparaît sur la période programmée

Je bloque sur la dernière étape, à savoir :

  • Pour les opérations générales, les rectangles se créent normalement.
  • Pour les opérations spécifiques "Pose Voie" pas de soucis pour la création du triangle. Mais je ne sais pas comment modifier le code pour que :
si pour une opération spécifique j'ai deux, trois, quatre ou cinq dates de semaine, je veux qu'il y ait sur la même ligne la création d'un triangle par date (avec sa couleur spécifique)

Si pour une opération spécifique, il y a une date spécifique en 'AP' ou 'AQ' ou 'AR' ou 'AS' (respectivement pour les opérations spécifiques de 'Chaussée provisoire', 'Mise à hauteur', 'NC' et 'Artère câble'), un triangle de couleur spécifique est créé ma sélection porte sur les colonnes 'AP', 'AQ', 'AR' et 'AS'.

Si je vous sollicite, c'est que là, je ne vois pas comment avancer. J'espère avoir été suffisamment éclairant sur ma problématique.

Je reste à votre disposition pour toute précision ou retour. Je vous ai mis en pièces jointes, le fichier excel épuré, uniquement avec la partie décrite.

Je tiens à préciser que j'apprends doucement sur VBA et que c'est la première fois que je bosse sur un Worksheet_Change et sur Intersect. Sur internet, il y a toutes sortes d'exemples, moi je ne trouve pas avec plusieurs intersect.

Merci d'avoir pris le temps de me lire et merci par avance pour toute personne qui pourra m'aider. Bonne nuit.

23classeur3.xlsm (26.97 Ko)

Bonjour TontonK,

Regarde si cela convient.

Où j'ai eu un peu de mal c'est pour la suppression des shapes sur la ligne concernée.

Cdt

10totonk.xlsm (28.44 Ko)

Bonjour,

Quel plaisir de découvrir que tu as répondu aussi vite. Merci beaucoup d'avoir le temps de t'y pencher.

Je viens de tester en changeant des dates mais ni les triangles ni les rectangles ne bougent. J'ai ensuite supprimé toutes les formes, puis j'ai saisi de nouvelles dates ; même constat.

Est-ce que cela peut provenir de ma version d'Excel ?

Merci encore pour ton temps

Re,

Quand tu parles de date, tu parles du numéro de semaine dans la zone encadrée rouge dans l'image ci-dessous?

img1

Je n'ai testé que la première ligne. En fait tu veux aussi que les formes prennent la couleur de la police ? Par exemple pour la ligne pose voie tu veux un triangle vert/orange/rose/gris et jaune ?

Cdt

Oui exactement.

la partie que tu as encadré en rouge, il y a des opérations spécifiques.. mais mon tableau fait plus de 500 lignes et il arrivera plus bas que de nouvelles opérations spécifiques soit programmées... D'où la nécessite que le code lise l'intitulé en 'AN' et qu'il créé un triangle ou un rectangle en fonction des informations saisies...

Pour préciser mon propos :

Si en colonne 'AN', je renseigne une opération spécifique (Chaussée provisoire', 'Mise à hauteur', 'NC' et 'Artère câble'), je souhaite que ces deux conditions soient remplies :

  • Si pour une opération spécifique, il y a une date spécifique en colonne 'AP' ou 'AQ' ou 'AR' ou 'AS' (respectivement pour les opérations spécifiques de 'Chaussée provisoire', 'Mise à hauteur', 'NC' et 'Artère câble')
  • -> je veux qu'un triangle de couleur spécifique soit créé en fonction des numéros de semaines indiquées en colonnes 'AP', 'AQ', 'AR' et 'AS'.
  • Si pour une opération spécifique, j'ai une, deux, trois, quatre ou cinq dates renseignée sur une même ligne,
  • -> je veux qu'il y ait sur la même ligne la création d'un triangle par date renseignée (avec sa couleur spécifique). Chaque triangle créé sur cette ligne sera positionnée en fonction de la date indiquée en colonne 'AP' et/ou 'AQ' et/ou 'AR' et/ou 'AS'.

En attendant

Depuis que j'ai consulté ta réponse, je fouille sur la toile pour comprendre le fonctionnement de tache (i) et de la boucle que tu as inséré, mais je n'arrive pas à voir ce que je peux modifier pour que cela réponde à mon besoin....

Un GRAND merci

Merci encore pour ta disponibilité, c'est plaisant de voir quelqu'un se penchait sur un travail où on a passé des heures ... lol

Re,

Un GRAND merci

Merci encore pour ta disponibilité, c'est plaisant de voir quelqu'un se penchait sur un travail où on a passé des heures ... lol

Normal d'aider les gars du TP

Je regarde et je reviens vers toi dès que c'est fait.

Cdt

Normal d'aider les gars du TP

C'est vraiment top cette communauté !

Je regarde et je reviens vers toi dès que c'est fait.

Pas de soucis ! j'ai mis la notification sur ma boite mail ! Dès que je vois ta réponse, je regarde ça !

Merci encore !!!

Re,

Regarde les modifs.

Il y a encore une chose à éclaircir c'est la taille de la plage

If Not Intersect(Target, Range("AO16: AS540 ")) Is Nothing Then

Teste et dis moi.

16totonk.xlsm (28.65 Ko)

Cdt

Ok je regarde tout suite.

Il y a encore une chose à éclaircir c'est la taille de la plage

If Not Intersect(Target, Range("AO16: AS540 ")) Is Nothing Then

C'est la longueur de la plage qui pose problème ?

non, ça fonctionne correctement chez toi?

Ce que je veux dire c'est soit qu'il faudra l'adapter manuellement ou rechercher la dernière ligne de la plage de cellule.

Je te fais un exemple pour que tu vois.

voici avec la plage calculée.

Cdt

15totonk.xlsm (29.50 Ko)

Première fois que je vois ça... ca a marché une fois et depuis... ca ne fait plus rien lol

j'ai éteint et rallumé mon PC, j'ai relu le code j'ai retéléchargé le code.. point mort lol.. juste après avoir vu que ca marché, c'est frustrant ... lol

J'ai noté aussi que ca ne fonctionnait pas pour les ligne 12 et 13... c'est volontaire de ta part de faire commencer en ligne 16 ?

Re,

J'ai noté aussi que ca ne fonctionnait pas pour les ligne 12 et 13... c'est volontaire de ta part de faire commencer en ligne 16 ?

Heu, oui d'où la première image avec l'encadré en rouge.

Tu as des dysfonctionnements sur la version que je t'ai postée?

CDt

Depuis que tu as envoyé, j'essaie, mais plus rien ne fonctionne. J'ai rétéléchargé mais pas de changement.

Je vais à nouveau tout éteindre et tout retéléchargé et voir ce qui ne va pas.

Je t'écris dans 5 min pour te tenir informé

Est-ce que dans ton projet tu n'aurais pas une ligne avec la désactivation des événements ?

Application.enableevents=false

Je pense que c'est un problème d'activation des macros... Bizarre mais depuis que j'ai redémarré, ca semble résolu...

Tu as été d'une aide prodigieuse.. je commençais à me dire que c'était voué à l'échec.. alors un grand merci..

Est ce qu'il est possible de faire en sorte de figer la taille des triangles créés et d'avoir deux triangles qui se chevauchent (les colonnes des dates vont être réduites pour une meilleure lisibilité)?

Merci encore... tu m'as retiré une belle épine...

Re,

Est ce qu'il est possible de faire en sorte de figer la taille des triangles créés et d'avoir deux triangles qui se chevauchent (les colonnes des dates vont être réduites pour une meilleure lisibilité)?

Pour ce qui est de figer la taille, on peut le faire dans les propriétés.

Je vais regarder cela ce soir.

Pour la largeur des colonnes on verra après.

En attendant voici la modif pour que les lignes 12 et 13 soient prises en considération.

Je l'ai appelée V2

Bonne soirée

5v2-totonk.xlsm (29.56 Ko)

Ok super. Merci bien

Avec l'enregistreur de macro on peut modifier les propriétés ainsi:

Set Newshp = ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, Cells(r, rtCell).Left, Cells(r, rtCell).Top + 2, Cells(r, rtCell).Width, Cells(r, rtCell).Height - 4)
              Newshp.Width = 20
              Newshp.Fill.ForeColor.RGB = RGB(Rouge, Vert, Bleu)
              Newshp.Line.ForeColor.RGB = RGB(Rouge, Vert, Bleu)

Pour la largeur de la forme, newshpwidth=20 Il faut que tu trouves la bonne largeur et surtout savoir si tu veux qu'elles prennent toutes cette largeur.

Tu peux jouer aussi sur la hauteur.

Conclusion en élargissant les colonnes date tu devrais pouvoir ajuster tes formes comme tu le souhaites.

Cdt

Rechercher des sujets similaires à "worksheet change intersect combinaison recherches colonnes"