Coloration automatique/classement ordre croissant

Bonjour,

Ma problématique est la suivante :

J’aimerais que lorsque je sélectionne une cellule cela me demande le nombre de cellules (la cellule active + les cellules à droite de l’activeCell) que je souhaite colorier. Puis par exemple lorsque 2 lignes sont créées mais avec des « longueurs de coloration différentes » cela me les classe par ordre croissant de « longueur de coloration ». Je vous recommande fortement de regarder le PowerPoint en PJ pour mieux comprendre la problématique.

Merci d’avance !

9explications.pptx (126.21 Ko)
12diagramme.xlsm (17.18 Ko)

Bonjour Luadix, le forum,

Un essai....

Code à placer dans le module de la feuille...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim nombre As Integer, dl As Integer, l As Integer, col As Integer
 Dim plage As Range

           dl = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
          col = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    Set plage = Range(Cells(4, 1), Cells(dl, col))

  If Not Application.Intersect(Target, Range("E4:E" & dl)) Is Nothing Then
   If Target.Count > 1 Then Exit Sub
     cancel = True
          l = Target.Row
    On Error Resume Next
     nombre = Application.InputBox("Combien de jours?")
      If nombre = False Then Exit Sub

      Rows(l).Interior.ColorIndex = xlNone
      Target.Value = nombre: Range(Target.Address).Font.ColorIndex = 5
      Range(Target, Cells(Target.Row, Target.Column + nombre)).Interior.ColorIndex = 5
      plage.Sort key1:=Range("E4")
  End If
End Sub

Cordialement,

Bonjour,

Merci pour votre réponse si rapide !

J'ai essayé d'exécuter la macro que vous m'avez proposé seulement je n'arrive à l'exécuter, ça m'a demandé de créer une Sub :ce que j'ai fait mais la Sub créée se met en dessous de la Private sub . Je commence à peine en VBA c'est peut être une fausse manip de ma part ?

Re,

Merci pour ton retour,

c'est peut être une fausse manip de ma part ?

En fait j'utilise l'évènement selectionChange de la feuille (c'est pour cette raison que je t'ai dit de coller l'intégralité du code dans son module).

capture

Dans ton exemple, si tu cliques dans la colonne E (de E4 à E6 , 6 étant le numéro de la dernière ligne de la colonne A), la macro s'éxécute automatiquement.

Peut-être préfères-tu procéder autrement ?

Cordialement,

Merci pour ces précisions

Le code donc s'exécute bien dès que je clique sur une cellule de la colonne E , j'aurais juste une seule question : est-ce possible que lorsque l'on tape 1 cela colorie 1 seule case, ici la case E4 par exemple (si la ligne 4 est sélectionnée) du 02/06/20 ? Lorsque l'on tape 2 : colorie la case E4 du 02/06/20 et F4 du 03/06/20 ? C'est sûrement une histoire de décalage peut-être de +/- 1 dans votre code ?

Bonjour Luadix, le forum,

C'est sûrement une histoire de décalage peut-être de +/- 1 dans votre code ?

Effectivement, j'ai mal interprété la demande, je faisais activecell + valeur inputbox (donc une case de trop).

 Range(Target, Cells(Target.Row, Target.Column + nombre - 1)).Interior.ColorIndex = 5  'on colore les cellules à partir de la cellule cible

Cordialement,

Merci beaucoup !!! Cela marche parfaitement

Rechercher des sujets similaires à "coloration automatique classement ordre croissant"