XL 2013 Créer une Macro pour mettre en surbrillance toute la Ligne/Colonne

Disiz4K

XLDnaute Nouveau
Bonjour,
Je cherches à créer un un accès dans la barre d'outil qui appelle une macro pour activer ou non la mise en surbrillance de toute la colonne/ligne sélectionné, exemple un clique ça active, second clique ça désactive.
J'ai réussi mais je n'ai pas trouvé comment appeler une macro qui est dans une WorkSheet, il faudrait la mettre dans "module" mais étant donné que c'est un event de feuille je ne sais pas si c'est possible, merci à vous.

J'utilise ça actuellement dans worksheet :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Cells.Interior.ColorIndex = xlColorIndexNone
 Target.EntireColumn.Interior.ColorIndex = 37
 Target.EntireRow.Interior.ColorIndex = 37
 Target.Interior.ColorIndex = xlColorIndexNone
 
End Sub
 
C

Compte Supprimé 979

Guest
Bonjour Disiz4k

Bien sur que c'est possible ;)

Dans la feuille
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Call MaSub(Target)
End Sub

Dans un module
Code:
Sub MaSub(ByVal Target As Range)
 Cells.Interior.ColorIndex = xlColorIndexNone
 Target.EntireColumn.Interior.ColorIndex = 37
 Target.EntireRow.Interior.ColorIndex = 37
 Target.Interior.ColorIndex = xlColorIndexNone
End Sub

@+
 

Disiz4K

XLDnaute Nouveau
Bonjour Disiz4k

Bien sur que c'est possible ;)

Dans la feuille
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call MaSub(Target)
End Sub

Dans un module
Code:
Sub MaSub(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
Target.EntireColumn.Interior.ColorIndex = 37
Target.EntireRow.Interior.ColorIndex = 37
Target.Interior.ColorIndex = xlColorIndexNone
End Sub

@+
Merci de votre réponse, mais du coup ça m'oblige à avoir quelque chose dans la worksheet ?
Enfaite L'idée c'était de faire un fichier XLSM une sorte de "banque de macro" et après avec une barre d'outil mettre des boutons pour activer ou non ce que je veux, j'ai pensé à une macro qui irait écrire directement dans la worksheet et un autre bouton pour la vider, je vais aller me renseigner d'avantage pour voir ce qui est possible :)

Bonjour,
Etes-vous vraiment sûr que c'est bien ce que vous voulez faire ?
Car vous interdisez de ce fait toute couleur dans votre feuille . 🤔
Effectivement, pour le moment c'était juste histoire de faire quelques test, il faudra que je retravailles ce bout de code pour conserver les couleurs d'un fichier et "additionner" les couleurs quand il y a déjà une couleur (c'est dans le but de gérer des fichiers avec énormément de donné et certains sont déjà en couleurs, pour faire ressortir un % par exemple)

Voilà voilà :)
 

fanch55

XLDnaute Barbatruc
Effectivement, pour le moment c'était juste histoire de faire quelques test, il faudra que je retravailles ce bout de code pour conserver les couleurs d'un fichier et "additionner" les couleurs quand il y a déjà une couleur (c'est dans le but de gérer des fichiers avec énormément de donné et certains sont déjà en couleurs, pour faire ressortir un % par exemple)
S'il y a énormément de données, il faut éviter les entirerow qui vont ralentir ou faire planter Excel .
 

Disiz4K

XLDnaute Nouveau
S'il y a énormément de données, il faut éviter les entirerow qui vont ralentir ou faire planter Excel .
Pour le moment j'en ai jamais eu avec énormément de ligne c'est surtout très dense.

Je suis actuellement entrain de chercher un moyen de vider les "events" dans la worksheet d'excel histoire de faire un bouton "reset event" mais je ne trouve pas de moyen à pars supprimer la feuille ?
 

fanch55

XLDnaute Barbatruc
Si c'est le code dans la feuille que vous cherchez à supprimer,
dans le vbe de celle-ci, un Ctrl+a pour tout sélectionner un Suppr pour tout supprimer ..
Mais peut-être ne parlons-nous pas de la même chose ..
 

Disiz4K

XLDnaute Nouveau
Oui oui du code, enfin je parle d'une macro (dans Module1) qui supprime le contenu de (Feui1),

Mon Module1:
VB:
Sub creationMacro()
Dim X As Integer

With ActiveWorkbook.VBProject.VBComponents("Feuil1").CodeModule
    X = .CountOfLines
    .InsertLines X + 1, "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
   
    .InsertLines X + 2, _
        "MsgBox ""La cellule sélectionnée: """ & Chr(38) & " Target.Address,,""Message"" "
    .InsertLines X + 3, "End Sub"
End With
End Sub

Sub sbDeleteASheet()

ActiveSheet.Clear

End Sub

Feuil1:
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "La cellule sélectionnée: " & Target.Address, , "Message"
End Sub

Et donc supprimer le contenu de Feuil1

Je me posais une question une Macro qu'elle soit dans Module1 ou Feuil1 ça reste une macro ou elle porte un autre nom ?

Merci de vos réponses :)
 

Disiz4K

XLDnaute Nouveau
Je viens de trouver en faisant:
VB:
Sub SupprimerContenuFeuille()
Dim NomFeuille As String
 
NomFeuille = ActiveSheet.Name
 
With ActiveWorkbook.VBProject.VBComponents _
(ActiveWorkbook.Sheets(NomFeuille).CodeName).CodeModule
    .DeleteLines 1, .CountOfLines
    .CodePane.Window.Close
End With
 
End Sub
 

MACx

XLDnaute Occasionnel
Bonjour Disiz4k

Bien sur que c'est possible ;)

Dans la feuille
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Call MaSub(Target)
End Sub

Dans un module
Code:
Sub MaSub(ByVal Target As Range)
 Cells.Interior.ColorIndex = xlColorIndexNone
 Target.EntireColumn.Interior.ColorIndex = 37
 Target.EntireRow.Interior.ColorIndex = 37
 Target.Interior.ColorIndex = xlColorIndexNone
End Sub

@+
Bonjour,
Est-ce que cette solution fonctionne sur des tableaux ? (qui font déjà des mises en forme) Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 604
Membres
103 605
dernier inscrit
gabriel morency