Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 13/03/2010, 13h53   #1
 
Inscription : octobre 2009
Messages : 11
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 11
Points : -1
Points : -1
Par défaut Insérer macro dans plusieurs cellules

Bonjour, j'ai réalisé une macro, simple:

Citation:
Si la valeur de la cellule sélectionnée est égale à 1, la couleur de fond de la cellule devient bleue
Si la valeur de la cellule selectionnée est égale à 2, la couleur de fond de la cellule devient rouge.
Mais j'aimerai que cela devienne automatique, par exemple je suis dans la cellule A1, j'entre 1, je fais [entrée] la cellule devient bleue, je reviens dans la cellule A1, je tape 2, je fais [entrée] et la cellule devrait se mettre rouge automatiquement. Je n'ai pas trouvé comment faire cela, il faudrait en quelque sorte insérer la macro dans la cellule pour qu'elle teste à chaque fois que la valeur change. Le seul moyen que j'ai trouvé pour le moment, c'est exécuter manuellement la macro à chaque fois que la valeur change...

Si quelqu'un pouvait m'aider, merci d'avance.
nevermind1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2010, 14h19   #2
Expert Confirmé
 
Avatar de casefayere
 
Homme Dominique LEMAIRE
caviste
Inscription : décembre 2006
Messages : 2 108
Détails du profil
Informations personnelles :
Nom : Homme Dominique LEMAIRE
Âge : 57
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : caviste
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : décembre 2006
Messages : 2 108
Points : 3 888
Points : 3 888
bonjour,
un exemple
Code :
1
2
3
4
5
6
7
8
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target = 1 Then
    Target.Interior.ColorIndex = 5
ElseIf Target = 2 Then
        Target.Interior.ColorIndex = 3
 
End If
End Sub
bonne journée
casefayere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2010, 14h25   #3
Membre Expert
 
Inscription : juillet 2007
Messages : 2 134
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 2 134
Points : 2 154
Points : 2 154
Salut nevermind1 et le forum
Pour un fonctionnement aussi simple, pas besoin de macro, une simple MFC suffit :
Sélectionne A1
Menu Format>>Mise en Format conditionnelle
Condition 1
Case 1 : la formule est
Case 2 : =1
Format : Fond Bleu
Bouton ajouter une condition
Condition 2
Case 1 : la formule est
Case 2 : =2
Format : Fond Rouge
Valider et tester

Sinon, on peut effectivement le faire par macro
Clic-droit sur le nom de l'onglet => Menu contectuel>>Visualiser le code
Tu te retrouve sur le module de classe lié à la feuille.
Case : (Général)
Avec son menu déroulant tu sélectionnes Worksheet
Ça crée une macro Worksheet_SelectionChange
Tu vas dans la seconde case (SelectionChange) et tu sélectionne à l'aide du menu déroulant Change. Ça te crée la macro Worksheet_Change
Cette macro se déclenche de manière automatique lorsqu'une cellule de la feuille sort du mode édition (chaque fois que tu as pu modifier le contenu de la cellule, et que tu sorts de la cellule).
La variable système Target contient la/les cellule(s) modifiée(s).
Ta macro serait de la forme :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
    Select Case Target
    Case 1
        Target.Interior.ColorIndex = 5
    Case 2
        Target.Interior.ColorIndex = 3
    Case Else
        Target.Interior.ColorIndex = xlNone
    End Select
End If
End Sub
A+
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2010, 11h51   #4
 
Inscription : octobre 2009
Messages : 11
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 11
Points : -1
Points : -1
Merci de vos réponses, celle que j'ai retenu est la deuxième. Mais la formule fonctionne uniquement pour la cellule A1, il faudrai que je fasse en sorte qu'elle fonctionne pour la cellule A1, B2,C3 par exemple, pour toutes les cellules que j'aurai énoncé, est-ce possible ?
nevermind1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2010, 12h55   #5
Expert Confirmé
 
Avatar de casefayere
 
Homme Dominique LEMAIRE
caviste
Inscription : décembre 2006
Messages : 2 108
Détails du profil
Informations personnelles :
Nom : Homme Dominique LEMAIRE
Âge : 57
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : caviste
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : décembre 2006
Messages : 2 108
Points : 3 888
Points : 3 888
Bonjour,
en restant avec la propo que tu as choisie, modifie :
Code :
If Target.Address(0, 0) = "A1" Then
en, par exemple, pour "a1" "b2" c3"
Code :
If Target.Address(0, 0) = "A1" or Target.Address(0, 0) = "b2" or Target.Address(0, 0) = "c3" Then
bonne journée
PS : ma solution était valable pour toutes les cellules
casefayere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2010, 12h56   #6
 
Inscription : octobre 2009
Messages : 11
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 11
Points : -1
Points : -1
Ah, super c'est exactement ce que je voulais, je ne pensais pas que l'on pouvait déclarer de cette façon, merci bien.

Oui ta formule fonctionnait dans toutes les cellules mais une fois après avoir modifié une cellule, il fallait que je clique dessus pour qu'elle se mette à jour.

Merci à tous
nevermind1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 00h39.


 
 
 
 
Partenaires

Hébergement Web