Macro surlingnant des cellules de la ligne sélectionnée

  • Initiateur de la discussion Initiateur de la discussion max_31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

max_31

XLDnaute Junior
Bonjour tout le monde,

La macro utilisée fonctionne très bien.
J'ai essayé de la mettre avec une autre, qui a pour objectif de mettre certaines cases avec une couleur définie en fonction de la cellule où l'on a cliqué.

Comme je dois mettre à jour mon tableau régulièrement, à l'aide de Copier/coller, quand la macro tourne, il n'est plus possible de faire du Ctrl+C/Ctrl+V.
Je souhaite donc pouvoir désactiver la macro quand je suis en mode saisie, et l'activer quand je suis en mode consultation.
Pour cela, j'ai créé un bouton bascule dans le lequel j'ai copié le code.
Et la ca bugg...

Quelqu'un aurait il une idee d'une part pour résoudre, et d'autre part, pour peut etre simplifier le code ?

Voila le code :

Private Sub ToggleButton1_Click()

Dim TaLigne As Long

With Range("A1:A" & [A65536].End(3).Row)
Set C = .Find("FIN", LookIn:=xlValues)
If Not C Is Nothing Then
TaLigne = C.Row
Else
MsgBox ("Rien trouvé !")
End If

End With

If Target.Row < TaLigne Then

If Target.Row > 5 Then

Range(Cells(6, 1), Cells(TaLigne, 1)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 8), Cells(Target.Row, 1)).Interior.ColorIndex = 40

Range(Cells(6, 8), Cells(TaLigne, 8)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 8), Cells(Target.Row, 8)).Interior.ColorIndex = 40

Range(Cells(6, 12), Cells(TaLigne, 12)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 12), Cells(Target.Row, 12)).Interior.ColorIndex = 40

Range(Cells(6, 17), Cells(TaLigne, 17)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 17), Cells(Target.Row, 17)).Interior.ColorIndex = 40

Range(Cells(6, 21), Cells(TaLigne, 21)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 21), Cells(Target.Row, 21)).Interior.ColorIndex = 40

Range(Cells(6, 34), Cells(TaLigne, 34)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 34), Cells(Target.Row, 34)).Interior.ColorIndex = 40

Range(Cells(6, 50), Cells(TaLigne, 50)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 50), Cells(Target.Row, 50)).Interior.ColorIndex = 40

Range(Cells(6, 60), Cells(TaLigne, 60)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 60), Cells(Target.Row, 60)).Interior.ColorIndex = 40

Range(Cells(6, 91), Cells(TaLigne, 91)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 91), Cells(Target.Row, 91)).Interior.ColorIndex = 40

Range(Cells(6, 113), Cells(TaLigne, 113)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 113), Cells(Target.Row, 113)).Interior.ColorIndex = 40

Range(Cells(6, 132), Cells(TaLigne, 132)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 132), Cells(Target.Row, 132)).Interior.ColorIndex = 40

Range(Cells(6, 147), Cells(TaLigne, 147)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 147), Cells(Target.Row, 147)).Interior.ColorIndex = 40

Range(Cells(6, 153), Cells(TaLigne, 153)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 153), Cells(Target.Row, 153)).Interior.ColorIndex = 40

Range(Cells(6, 183), Cells(TaLigne, 183)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 183), Cells(Target.Row, 183)).Interior.ColorIndex = 40

Range(Cells(6, 192), Cells(TaLigne, 192)).Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 192), Cells(Target.Row, 192)).Interior.ColorIndex = 40

End If

End If

End Sub
 
Re : Macro surlingnant des cellules de la ligne sélectionnée

Creepy,
Je m'excuse pour le doublon.
Je viens de regarder la macro que tu as créé.
Sur le principe du bouton, c'est nickel chrome.

Par contre sur la problématique de la oloration, j'ai du mal m'exprimer :
les cellules a colorer sont à l'intersection de la ligne où la cellule est active avec l'ensemble des colonnes listées:
A - L - Q - U
AH - AX
BH
CM
DI
EB - EC - EQ - EW
GA - GJ

Donc si la cellule active se trouve en G10, alors les cellules à colorer sont les suivantes :
A10 - L10 - Q10 - U10
AH10 - AX10
BH10
CM10
DI10
EB10 - EC10 - EQ10 - EW10
GA10 - GJ10

Quand je clique, à l'intérieur du tableau sur une autre cellule, alors il faut reblanchir les cases listées ci-dessus (sas blanchir tout le tableau, car entre ces colonnes, pour l'utilisation ds informations présentes dans le tableau, j'ai mis des cases en rouges, en bleu, et autres, pour m'alerter de certains aspects liés aux informations contenues dans ces cases. Mais cela n'a rien a voir avec la macro, mais si on blanchit tout le tableau, alors les couleurs que j'ai mise vont disparaitre, et cela n'est pas souhaitable).

Et quand on clique dans une zone en dehors du tableau, il faudrait "blanchir" les cases qui étaient colorées précédemment, sans "blanchir" l'ensemble du tableau, sans recolorer aucune case.

Pour ce qui est de la recherche dynamique, ca me va tout a fait, c nickel... Je ne savais pas que c'était possible de faire ca...

Merci en tout cas, en espérant être de plus en plus clair, si tel n'est pas le cas, alors poser des questions...
 
Re : Macro surlingnant des cellules de la ligne sélectionnée

Salut à max_31, Creepy, et tous les autres
Dans mon dernier message sur l'autre post, je t'ai mis un exemple en pièce jointe zippée, qui devrait répondre à ton problème, au moins en partie.
Et tant pis pour toi s'il faut que tu retournes sur ton autre sujet, Na !!

Allez, Je la met quand même ici.
A+
 

Pièces jointes

Re : Macro surlingnant des cellules de la ligne sélectionnée

Je te remercie, mais j'ai un souci, car je n'arrive a faire fonctionner le fichier : que je sois en mode SAISIE ou CONSULTATION, il ne se passe rien de spécial.
Est ce normal ?

Excuse moi mille fois... Ca y est j'ai trouve le prq du comment : le mot "FIN n'étant pas présent dans le fichier dans la cellule GT4.
Et là, ca marche du tonnerre.

Gracias a tutti...
 
Dernière édition:
Re : Macro surlingnant des cellules de la ligne sélectionnée

Si jai encore deux dernières requetes :
1-dans ta macro Gorfael, quand on passe du mode "Consultation" au mode "Saisie", tu enlèves les couleurs à toute la ligne. Est il possible de ne supprimer les couleurs que sur les colonnes qui ont été colorées par la macro ?
2-est il possible d'inclure dans la macro le dimensionnement dynamique du tableau (qui permettrait de supprimer les mots FIN en Ligne et en Colonne), comme l'avait proposé Creepy?
Merci d'avance.
 
Re : Macro surlingnant des cellules de la ligne sélectionnée

max_31 à dit:
Si jai encore deux dernières requetes :
1-dans ta macro Gorfael, quand on passe du mode "Consultation" au mode "Saisie", tu enlèves les couleurs à toute la ligne. Est il possible de ne supprimer les couleurs que sur les colonnes qui ont été colorées par la macro ?
2-est il possible d'inclure dans la macro le dimensionnement dynamique du tableau (qui permettrait de supprimer les mots FIN en Ligne et en Colonne), comme l'avait proposé Creepy?
Merci d'avance.
Salut
9a dépend combien tu paies. 🙂 😉 🙂

A+
ATTENTION j'ai modifié le zip, mais je n'ai pas changé le nom.
Si ça convient, on peut optimiser les codes, en supprimant les variables Limite_C et Limite_L et en gérant l'effacement par une macro appelée (au lieu d'avoir 2 fois le même code dans 2 macros
 

Pièces jointes

Re : Macro surlingnant des cellules de la ligne sélectionnée

Bonjour Gorfael, et les forumers,

Je viens de prendre connaissance de la macro que tu as mise sur pied.
Elle tourne très bien.
J'ai fait quelques réajustement afin de la faire coller pile poil a ce q je voulais (ex : le test de fin de ligne a ete deplace sur la colonne B, et le test de fin de colonne sur la ligne 3, ou bien j'ai ajoute une intersection de ligne a colorer - la colonne H).
J'en ai profite pour regarder ce qui etait fait. J'ai pas tout compris, mais ce que je crois avoir compris, c'est que tu fais un test en fonction du nombre de colonne pour savoir les colonnes a colorer
"Select Case Limite_C
Case Is < 8
Y = 1..."
Mais bon, ca je pense que c'est superflux, car en fait, je pense que tu as bien repondu a ce que j'avais ecrit, mais je mettais mal exprimer. (Desole.😱
). en fait quand je disais que le nombre de colonne pouvait varier, cela signifie que c'est moi qui le modifie, et la, ca sera a moi d'aller modifier le code, pour modifier les colonnes colorees.
Conclusion : pas la peine de se prendre la tete avec ca dans le code. Est ce compréhensible ?😕 Je pense qu'il est possible de retirer ce test.

Sinon pour le reste, j'ai juste une question :
Est il possible d'enlever la coloration des cellules quand on quitte le fichier ?

Sinon c'est vraiment bien, donc si y a moyen de simplifier le code, je suis preneur.

Et merci encore.

PS : je joins le fichier modifier.
 

Pièces jointes

Re : Macro surlingnant des cellules de la ligne sélectionnée

max_31 à dit:
Bonjour Gorfael, et les forumers,

Je viens de prendre connaissance de la macro que tu as mise sur pied.
Elle tourne très bien.
J'ai fait quelques réajustement afin de la faire coller pile poil a ce q je voulais (ex : le test de fin de ligne a ete deplace sur la colonne B, et le test de fin de colonne sur la ligne 3, ou bien j'ai ajoute une intersection de ligne a colorer - la colonne H).
J'en ai profite pour regarder ce qui etait fait. J'ai pas tout compris, mais ce que je crois avoir compris, c'est que tu fais un test en fonction du nombre de colonne pour savoir les colonnes a colorer
"Select Case Limite_C
Case Is < 8
Y = 1..."
Mais bon, ca je pense que c'est superflux, car en fait, je pense que tu as bien repondu a ce que j'avais ecrit, mais je mettais mal exprimer. (Desole.😱
). en fait quand je disais que le nombre de colonne pouvait varier, cela signifie que c'est moi qui le modifie, et la, ca sera a moi d'aller modifier le code, pour modifier les colonnes colorees.
Conclusion : pas la peine de se prendre la tete avec ca dans le code. Est ce compréhensible ?😕 Je pense qu'il est possible de retirer ce test.

Sinon pour le reste, j'ai juste une question :
Est il possible d'enlever la coloration des cellules quand on quitte le fichier ?

Sinon c'est vraiment bien, donc si y a moyen de simplifier le code, je suis preneur.

Et merci encore.

PS : je joins le fichier modifier.
Salut
Avant de simplifier, des petites questions :

Dans ta demande initiale, tu as une colonne de délimitation, et en fonction de cette colonne, on ne colorie pas les cases de colonnes supérieures. Si je comprend bien ce que tu dis dans ton poste, on peut supprimer ce test : deux solutions ;
- on colorie toujours les colonnes définies, on ne s'occupe que de la ligne
- chaque fois tu modifies les colonnes et l'indice max du tableau de coloriage
Je préfère la 1re, mais on peut faire la seconde aussi

Pour simplifier, je vais créer des macros indépendantes, les différents événements ne faisant que lancer la/les macro(s) nécessaires
Ces macros seront sur un module général : par principe, je ne mets sur les modules de classe que les macros qui sont strictement liées à une feuille
Comme là, la macro de la RAZ des cellules coloriées sera aussi déclenchée
par la fermeture du classeur, je préféres que toutes soient sur un module (ça sera plus facile à modifier

Donc voilà ce que je te propose :
module général
une macro RAZ_Color() qui remet colorindex à xlnone si Ligne_Trait>0
une macro Coloriage() qui colorie en fonction de l'état du bouton et de la position du curseur
Module Données
sur SelectionChange
ligne active ne change pas, on ne fait rien
ligne active change : on lance la macro RAZ_color(), puis la macro Coloriage()
Attention, on part du principe qu'il n'y a pas de sélection multiple, donc que la sélection = 1 seule cellule
module ThisworkBook
sur Open
on lance la macro Coloriage()
Sur close
on lance la macro RAZ

A+
 
Re : Macro surlingnant des cellules de la ligne sélectionnée

Bonjour,

Dans le principe ca me va tout à fait. Ca serait nickel.
Par contre je tiens a preciser 2 choses :
- LE RAZ ne doit pas se faire sur toute la feuille, mais uniquement sur les colonnes colorées;
- pour la sélection de fin, je souhaite ne pas faire tourner la macro quand on est en dehors du tableau, mais peut etre cela alourdit il l'ensemble... Bilan, je pense qu'il faut faire au plus rapide dans l'execution des macros, puis au plus leger pour le fichier.

Est ce OK ?

PS : pour info que represente la variable Ligne_Trait ?
 
Re : Macro surlingnant des cellules de la ligne sélectionnée

max_31 à dit:
Bonjour,

Dans le principe ca me va tout à fait. Ca serait nickel.
Par contre je tiens a preciser 2 choses :
- LE RAZ ne doit pas se faire sur toute la feuille, mais uniquement sur les colonnes colorées;
- pour la sélection de fin, je souhaite ne pas faire tourner la macro quand on est en dehors du tableau, mais peut etre cela alourdit il l'ensemble... Bilan, je pense qu'il faut faire au plus rapide dans l'execution des macros, puis au plus leger pour le fichier.

Est ce OK ?

PS : pour info que represente la variable Ligne_Trait ?
Salut
Ligne_Trait = ligne traitée
 
Re : Macro surlingnant des cellules de la ligne sélectionnée

max_31 à dit:
Bonjour,

Dans le principe ca me va tout à fait. Ca serait nickel.
Par contre je tiens a preciser 2 choses :
- LE RAZ ne doit pas se faire sur toute la feuille, mais uniquement sur les colonnes colorées;
- pour la sélection de fin, je souhaite ne pas faire tourner la macro quand on est en dehors du tableau, mais peut etre cela alourdit il l'ensemble... Bilan, je pense qu'il faut faire au plus rapide dans l'execution des macros, puis au plus leger pour le fichier.

Est ce OK ?
Salut
ça devrait pas être loin de la fin
J'ai tout mis sur le module de classe de la feuille
j'ai mis des commentaires
j'ai 2 macros automatiques dans ThisWorkBook
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
237
Réponses
9
Affichages
902
Réponses
12
Affichages
1 K
Retour