En cliquant sur une des cellules sur la plage B2 à J10
il faut coloriser en jaune la ligne et la colonne en rapport avec la cellule
et mettre en rouge le texte de la cellule sélectionnéesi la cellule n’est pas vide,
sinon colorisez en vert.
Si je clique sur la colonne A, ou la ligne 1, ou en dehors du tableau,
rien ne doit se passer
Mais, si je rajoute ou supprime un Prénom et/ou un Matériel
la plage doit suivre, d’où le fait de la rendre dynamique
Tu es à fond dès le matin!
Merci pour tes propositions d’exercices, c’est vraiment👍
J’avoue que je suis pas assez autonome en vba pour me prêter au jeu, tu aurais un site à me recommander pour me (re)familiariser avec les bases?
En tous cas, bien joué @mdo100 pour les multiplications!
Bon j’ai pondu un truc mais c’est pas au point, je colore toute ligne/colonne même en dehors de la plage (en même temps vu que j’ai rien déclaré, c’est normal)
Un début de quelque chose ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = 43
With Target
.EntireRow.Interior.ColorIndex = 6
.EntireColumn.Interior.ColorIndex = 6
End With
End Sub
'Private Sub Worksheet_Change(ByVal Target As Range)
Sub test()
Dim Dl%, Dc% 'Déclaration des variables
Dl = Range("A" & Rows.Count).End(xlUp).Row 'Denière ligne
'Dc = Range("1" & Columns.Count).End(xlRight).Column 'Dernière colonne vers la droite
End Sub
Comme tu le vois, j’ai voulu chercher la dernière colonne vers la droite avec cette instruction: Dc = Range("1" & Columns.Count).End(xlRight).Column
Mais ça fonctionne pas! Why ?
Range contient entre guillemets l’adresse de la cellule sous par la colonne et sa ligne
tu as mis Range(« 1 »… il ne trouve pas la colonne 1, elle n’existe pas
donc, si tu veux continuer avec Range, il faut partir avec l’adresse complète, pour trouver le Nb colonne depuis une ligne contenant des cellules remplies sur toutes les colonnes la ligne 1 par exemple
ou
en prenant la fonction CELLS(ligne,colonne que tu comptes) jusque à la fin et en revenant tout à gauche (xlto…)
Et Dl et Dc te servira pour préciser ta plage de travail qui ira de la ligne 2- colonne 2, à la dernière ligne et dernière colonne, ainsi tu n’auras pas de changement en dehors de cette plage (et sera dynamique si tu rajoute une ou + colonne ou ligne)
Il te faut maintenant trouver sur quelle ligne et colonne se trouve la cellule cliquée
Bon je suis loin du compte, car encore une fois, je n’arrive pas a mettre ma Dl et Dc dans ma plage afin de l’a rendre dynamique.
Par contre en me documentant, j’ai trouvé comment remplacer Range par [xx:yy] c’est déjà ça de pris.
Donc j’arrive à colorer en jaune la ligne et colonne à l’intersection de la cellule active, j’arrive à colorer en rouge la valeur de la cellule active ainsi que la mettre en gras.
Par contre si la cellule active est vide, je n’arrive pas a colorer en vert l’intersection de la cellule active.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Dl%, Dc%
Dl = ActiveCell.Column - 2
Dc = ActiveCell.Row - 2
If Not Application.Intersect(Target, [B2:J10]) Is Nothing Then
[B2:J10].Interior.ColorIndex = xlNone
Range(ActiveCell.Address, ActiveCell.Offset(0, -Dl).Address).Interior.ColorIndex = 6
Range(ActiveCell.Address, ActiveCell.Offset(-Dc, 0).Address).Interior.ColorIndex = 6
[B2:J10].Font.Bold = False
[B2:J10].Font.ColorIndex = xlAutomatic
ActiveCell.Font.Bold = True
ActiveCell.Font.ColorIndex = 3
End If
End Sub
un coup de pouce
quand tu fais un formule sur le Tableur avec SI()
tu inscrits =SI( condition=vrai; résultat pour vrai, sinon résultat pour faux)
en VBA c’est presque pareil
if condition then
le résultat vrai —> couleur en jaune - police rouge
else (pour sinon)
autre résultat --> couleur en vert
end if
Ensuite ne pas oublier de remettre les couleurs à l’origine avant la recolorisation
Bonjour
Il reste les deux lignes de code les plus difficile, j’avoue que j’ai fait tout ce que j’ai dans le sac
mais un débutant reste Nul
Très bonne continuation à mdo100
Ah Oui, un peu de mieux j’ai la colonne A et la ligne 1 en plus,
Mais si je clique dans la colonne A ou la ligne 1, il ne doit pas coloriser et modifier l’ancien clic
si cellule =“X” en jaune et police rouge, si vide, en vert
Et si je rajoute une ligne ou une colonne, il faut rendre dynamique