IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Insérer macro dans plusieurs cellules [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut Insérer macro dans plusieurs cellules
    Bonjour, j'ai réalisé une macro, simple:

    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.

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    bonjour,
    un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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+

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut
    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 ?

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    en restant avec la propo que tu as choisie, modifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Address(0, 0) = "A1" Then
    en, par exemple, pour "a1" "b2" c3"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/06/2015, 15h08
  2. Réponses: 0
    Dernier message: 09/04/2015, 12h09
  3. [XL-2010] Problème pour insérer un calcul dans plusieurs cellules par macro
    Par Teva29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2014, 18h11
  4. [XL-2010] Insérer bouton dans une cellule et lancer macro avec l'adresse de la cellule
    Par Phifou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2014, 10h43
  5. [XL-2003] Macro VBA suppression texte dans plusieurs cellules
    Par demichoux dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/06/2011, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo