Exercice N° 2 (Coloration suivant clic cellule)


#41

Bonjour à tous,

MDO et Kiss, vous avez bien résolu l’exercice pour la double colorisation suivant si la case était rempli ou pas.
Mais, rendre le tableau dynamique, là, vous êtes partis dans les “choux”.
Vous manquez pas d’imagination

Je ne comprends pas pourquoi vous vous êtes obstinés à mettre un (-1) sur Dl et DC ???

MDO, dommage, tu était bien parti avec ta déclaration (Set Pl)

Je vous place ici, une des macros qui rejoint le plus vos montage, et dans le classeur, la version que j’avais construite pour l’exercice, elle est légèrement différente mais cela vous permettra de voir les indications que j’ai fourni avec différente version et en utilisant (Target) :wink:

Si vous ne comprenez pas certaines parties dans les macros, n’hésitez pas à la poster pour que je l’explique

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  'Déclaration des variables
  Dim Dl%, Dc%, Plage
  ' j'initialise la dernière ligne
  Dl = Range("A" & Rows.Count).End(xlUp).Row
  ' j'initialise la dernière colonne
  Dc = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
  ' j'initialise la plage de A1 à la Dl et Dc
  Set Plage = Range(Cells(1, 1), Cells(Dl, Dc))
  'je supprime la couleur de l'ensemble de la plage de A1 à DL&DC
  Plage.Interior.ColorIndex = xlNone
  'je remet la couleur du texte en noire sur l'ensemble de la plage de A1 à DL&DC
  Plage.Font.ColorIndex = xlAutomatic
  ' j'enlève le gras de la police
  Plage.Font.Bold = False
  ' je ré-initialise la plage de B2 à la Dl et Dc
  Set Plage = Range(Cells(2, 2), Cells(Dl, Dc))
  'Si la cellule cliquée n'est pas en dehors de la plage
  'allant de la cellule B2, à la cellule de la dernière ligne et dernière colonne, alors
  If Not Application.Intersect(Target, Plage) Is Nothing Then
    'Si la cellule active contient un "X", attention en majuscule (VBA est sensible à la casse)
    'ou alors mettre Is VBA.Lcase(ActiveCell = "x" Then) pour dire que si la valeur en minuscule est un "x" (VBA.Ucase pour majuscule avec le "X" en majuscule)
    If ActiveCell = "X" Then
      'je colore en jaune la ligne (row) depuis la colonne A jusqu'à la colonne concernée
      Range(Cells(Target.Row, 1), Cells(Target.Row, Target.Column)).Interior.ColorIndex = 6
      'je colore en jaune la colonne (column) depuis la ligne 1 jusqu'à la ligne concernée
      Range(Cells(1, Target.Column), Cells(Target.Row, Target.Column)).Interior.ColorIndex = 6
      'je passe la police en gras sur  la cellule sélectionnée
      ActiveCell.Font.Bold = True
      'je colore en rouge la cellule sélectionnée
      ActiveCell.Font.ColorIndex = 3
    'sinon
    Else
      'je colore en jaune la ligne (row) depuis la colonne A jusqu'à la colonne concernée
      Range(Cells(Target.Row, 1), Cells(Target.Row, Target.Column)).Interior.ColorIndex = 4
      'je colore en vert la colonne (column) depuis la ligne 1 jusqu'à la ligne concernée
      Range(Cells(1, Target.Column), Cells(Target.Row, Target.Column)).Interior.ColorIndex = 4
    End If
  End If
  Set Plage = Nothing 'Je vide la plage de la mémoire
End Sub

Exercice 2.xlsm (69,9 Ko)


#42

Salut @Mimimathy, :wink: toutes et tous,

Merci d’avoir donné la solution afin de rendre notre supplice moins douloureux.

Comme tu le dis, nous étions dans les choux.

Pourtant j’avais tenté la boule “With” “End With” mais je n’ai pas su l’utiliser malgré déjà un exemple dans l’Exercice N°1
Et quand tu nous as indiquer d’utiliser “Target” comme j’avais une mauvaise base avec “(-1) sur Dl et DC ???” ça ne fonctionnait pas non plus.

Si j’ai des questions, je ne manquerai pas de les poser, mais les commentaires déjà nombreux que tu fournie avec les Macros sont tellement explicites, qu’un aveugle ne pourrait ne pas les comprendre.

Je suis sur l’Exercice N°3, mais j’ai un dossier sur les bras actuellement.

J’ai juste une remarque a te faire parvenir, peut-être as-tu surestimer les forces des contributeurs de ce forum, nous sommes de bonne volonté, mais pas expert comme toi, peut-être aurait-il fallut commencer moins fort, ça n’engage que moi.

Donc encore merci aux noms de @Nono, @kiss6, @sadi58 et un peu de moi, pour les 2 solutions et pour le partage de tes connaissances avec le plus grand nombre.

Bien amicalement.


#43

Salut MDO,

Non, non, je ne vous ai pas surestimé, vous en êtes capable, la preuve,
mise à part la partie dynamique, le reste fonctionnait.

Si je fait trop facile (comme la partie 1 de l’exercice N°3), je ne pourrais pas
vous attribuer toute ma gratitude :grin::yum:


#44

Re @Mimimathy,

Bof, à défaut de toute ta gratitude, nous, nous contenterons de ta reconnaissance éternelle :joy:


#45

Re, @Mimimathy

Pour ma part j’étais resté sur

car lorsque je retirais ce -1 plus rien ne fonctionnait

Merci d’avoir donner la solution car avoir déjà les cheveux poivre et sel j’aurais fini part ressembler au père

noël plus vite que prévu

Pour revenir sur le post de @mdo100 je suis d’accord avec lui vous auriez pu commencer part moins

compliquer car au début nous étions 4 cerveau et personne ne trouvais la solution

Pour ce retrouver a deux cerveau et toujours pas résolue le problème sans votre aide

Ces vous dire a quel point nous somme loin de votre niveau :wink:

je remercie tous ceux qui on participer a cet exercice et qui ont apporter un peut de leur

contribution :exploding_head: sauf @mdo100 qui a beaucoup apporté a ce sujet un grand :clap: a lui

et en plus pour la première partie du 3ieme exercice ce n’ais pas la peine de la faire puisqu’il a déjà

trouvé il est :muscle: ce @mdo100

Dans tous les cas merci pour votre solution @Mimimathy et vos explication :+1: :clap:

Cdlt

@kiss6


#46

Bonjour Kiss

Ce que tu indiques dans cette partie, ce n’est pas la dernière ligne ou colonne, mais le N° de ligne -1 ou de colonne -1 de la cellule cliquée
Tu ne peut donc pas avec ces deux valeurs déclarer une plage dynamique

Quand à l’exercice N° 3, MDO a juste donné un classeur qu’il avait réalisé, mais qui n’a rien à voir avec ma demande. Néanmoins, on peut se baser dessus pour le faire, ainsi que de piocher sur le net les infos utiles.
Le but et de faire le montage soit-même et de comprendre “le pourquoi du comment:yum:


#47

Re, @Mimimathy

En plus je n’avais pas très bien compris l’exercice car je croyais que vous vouliez que lorsque nous cliquions

sur une cellule avec un “X” elle ce mette en jaune et que toute les autre cellules ce mette d’une couleur

différente

ces pour c’la que je vous est posté un code VBA avec trois couleurs

que voulez vous D’un âne tu n’en fait pas un cheval de course même si tu lui coupe les oreille en pointe ca resteras toujours un âne :tired_face:

Cdlt

@kiss6


#48

Re,
Dans ce cas, sur la macro postée plus haut, tu modifies sur celle ligne le “xlnone” par une autre couleur


#49

Re, @Mimimathy

Ok merci pour la précision :+1:

Mais c’était juste pour vous faire remarquer que je n’avais rien compris au problème

j’ais été chercher des complication ou il n’en n’avais pas

cdlt

@kiss6


#50

Salut @kiss6,

Comme l’a dit le maître :star_struck:, il adore quand je l’appel comme ça :joy: ,concernant l’Exo N°3 rien ai fait, puisque déjà je n’ais pas respecté le cahier des charges, donc tout est a faire.

Allez, prend un temps d’avance, sur moi où d’autres, pour moi ce soir c’est repos.

Cordialement.