EXCEL --> pb cellule sélectionnée coloriée

Résolu/Fermé
yannperceval1 Messages postés 6 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 20 septembre 2007 - 19 sept. 2007 à 09:03
pecheur67 Messages postés 5 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 10 mai 2009 - 5 avril 2009 à 20:21
salut, je voudrais que la cellule sélectionnée soit coloriée et que les autres soit blanche/transparente. Mais que ceci fonctionne pour tout le temps ou j'utilise excel et ceci pour quelques cellules(ou toutes).
J'ai pensé à faire:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[B1:B9]="FAUX"
If Target.Select = "$C$1" Then
[B1] = "VRAI"
End If
If Target.Select = "$C$2" Then
[B2] = "VRAI"
End If
End Sub

et sur C1, C2...C9 mettre une mise en forme conditionnel a partir de B1, B2, .... B9

Si je fait un sub simple, ca marche quand je fait executer la macro.
Cependant, j'aimerai que ca fonctionne tout le temps à chaque changement de cellule sélectionnée.

Merci.
A voir également:

9 réponses

Katarinas Messages postés 26 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 8 février 2008 2
19 sept. 2007 à 09:37
Si tu veu que ta macro soit activé a chaque changement que tu fais sur ta feuille alors il te suffis de lancer ta macro a partir de Worksheet_SelectionChange

Cela fonctionne il ?

0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
19 sept. 2007 à 10:33
Bonjour,

If Target.Address = "$C$1" Then..

eric
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
19 sept. 2007 à 11:02
et si tu veux faire plus court:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[B1:B9] = "FAUX"
Set i = Application.Intersect(Range("C1:C9"), Target)
If i Is Nothing Then
'la cellule n'appartient pas à la zone C1:C9
Else
Target.Offset(0, -1) = "VRAI"
End If
End Sub
0
yannperceval1 Messages postés 6 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 20 septembre 2007
19 sept. 2007 à 18:37
merci eriiic mais ca ne marche pas...
enfin Worksheet_SelectionChange ne marche pas (les cellules B1 à B9 restent vides)
c'est ca qui me pose problème: je ne comprend pas pourquoi
mon code (bien que long) ne me pose pas de problème. en fait je pensais meme à le mettre dans une autre macro
Pour n'importe quel code, ca ne marche pas

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[B1:B9] = "FAUX"
Application.run("macro2")
End If
End Sub

Sub macro2
'mon code
MsgBox "Ca marche"
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yannperceval1 Messages postés 6 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 20 septembre 2007
19 sept. 2007 à 18:59
Je viens de m'apercevoir que Private sub ne démarre pas tout seul quand on ouvre le classeur excel.
si je met

Private Sub tedf()
MsgBox "Ca marche."
End Sub

ca marche pas
par contre, si je mets

Private Sub auto_open()
MsgBox "Ca marche."
End Sub

ca fonctionne. est-ce que c'est pour la meme raison que Private Sub Worksheet_SelectionChange ne marche pas.
ne faudrait-il pas ajouter un auto_open à Private Sub Worksheet_SelectionChange? ......ou autre.
0
yannperceval1 Messages postés 6 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 20 septembre 2007
20 sept. 2007 à 15:42
J'ai trouver. en fait je n'avais pas écrit Private Sub Worksheet_SelectionChange dans ThisWorkbook.

Pour les débutants comme moi, qui n'ont pas encore trouver la solution, ceci peut les interesser.
Il faut faire Alt+F11, puis explorateur de projet (aller dans ThisWorkbook). utiliser l'évennement voulu (répertorié dans explorateur d'objet)

petite adresse utile: pb private sub worksheet selectionchange

Merci
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
20 sept. 2007 à 16:32
Dans la feuille (worksheet) plutôt pour un tel évènement. A mon avis si ta macro marche c'est qu'elle y est aussi présente.

Pour voir les évènement d'une feuille le plus simple est de faire un clic droit sur le nom de l'onglet en bas et de choisir "visualiser le code".
VBA s'ouvrira directement dans la bonne fenetre de code.
Dans la liste deroulante de gauche choisir "worksheet", la liste deroulante de droite contiendra automatiquement tous les evenements gérables.
Afficher maintenant "ThisWhorkbook" et là on peut voir les evenements d'un classeur de la même manière.

eric
0
Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 59
20 sept. 2007 à 18:03
Bonjour yanneperceval1,

Voici une routine à écrire dans un module de code :

Sub CoulFond(Plage As Range)
' Réinitialise la couleur de fond de la feulle
ActiveSheet.Cells.Interior.ColorIndex = xlAutomatic
' Balaie la plage nommée
For Each cel In [Plage].Cells
If cel.Address = ActiveCell.Address Then
cel.Interior.ColorIndex = 6
End If
Next

End Sub


Il ne te reste plus qu'à nommer un groupe de cellules (avec un nom différent pour chaque feuille), et à faire appel à cette procédure dans l'événement 'SelectionChange' de chaque feuille. Exemple :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CoulFond [maplage]

End Sub


Dans cet exemple, 'maplage' est le nom du groupe de cellules; cette plage peut être constituée de colonnes contigües ou non contigües. (ColorIndex = 6" définit la couleur de fond à Jaune.

Espérant t'avoir aidé.

Cordialement.
0
pecheur67 Messages postés 5 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 10 mai 2009 1
5 avril 2009 à 20:21
probleme je n'arrive pas à travailler avec excel car à chaque fois ke j'ouvre classeur je selectionne une cellule plusieurs selectionnes comment faire pour rendre feuille excel normale
0