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 :

[VBA Excel] Appliquer une macro sur une celulle contenant une valeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Bonjour à tous,

    Exposé :
    1/ Une celulle contient une valeur issue d'une fonction rechercheV
    2/ J'ai une macro qui applique un motif sur une celulle en fonction de sa valeur (comme la mise en forme conditionnelle, mais avec plus de conditions)

    Question :
    Comment appliquer la macro sur une celulle sans écraser la fonction rechercheV qu'elle contient ?

    J'ai pensé inclure la fonction rechercheV dans la macro, ca marche, mais ca fait un code un peu lourd car beaucoup de celulles sont concernées par ce traitement.

    Si quelqu'un à une solution plus simple, je suis preneur.

    Merci et bonne journée à tous
    Thierry

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Sans le type du traitement souhaité pas solution (par exemple tu pourrais désirer la peindre en rouge ou en vert, l'écrire en italique.... )
    Sinon, en récupérant sa valeur, tu peux bien en faire ce que tu veux mais tu n'auras plus ta recherchev en cas de modif de la base de données

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Tu as vu juste, il s'agit de colorer la celulle en fonction de sa valeur.
    Le fond de la question c'est de savoir s'il y a un moyen simple d'appliquer une macro sur une celulle qui contient déjà une fonction d'excel (quelqu'elle soit). J'ai l'impression que non, en tout cas merci de ta première réponse.
    Thierry

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    J'ai regarder et sauf erreur de ma part le calcul d'une cellule ne declenche pas le OnChange de la feuil, donc la solution la plus simple, mais bon faut voir la complexité de ta formule, c'est de regarder si la cellule Target du OnChange fait partie dune des cellule contenu dans ta formule
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(B14=4;B13="");B14;"Gagné")
    Dans se cas la tu va tester si le OnChange a ete declenché par B14 ou B13, ansi si Target = B14 ou Target = B13 alors ... et ensuite tu recupert la valeur de ta cellule (celle qui contient la formule) et tu la format a ton gout.

    Si les formule sont nombreuse et complex il a y peut tre une possibilité de le faire avec les Audits, mais ca va allourdir le fonctionnement de ton classeur si a chaque modif d'une cellule on controle si elle appartient a une des cellule contenant une formule et qui doit etre reformatée.

    Apres pour la partie formatage conditionnele via une macro c'est ici mon code est peut etre pas super elegant mais fonctionnel

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonsoir, tchauviere;

    Tant que tu ne touches qu’au format, peu importe que la cellule contienne une formule ou non ; voici un exemple simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Macro1()
        Selection.Font.ColorIndex = 3
    End Sub
    Michel Gaboly
    Développeur Excel et VBA


    Pas de question technique par MP, je n’y répondrai pas, utilisez le forum - Merci
    Pensez à ajouter le tag

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    En fait tu as plusieurs solutions pour appliquer simplement le code donné par Bigalo : Tu peux lancer une macro par un bouton qui teste le contenu des cellule à peindre, ou tu utiliser l'événement Calculate.
    Calculate fonctionnera, soit à l'ouverture de ton classeur, soit sur commande, soit pour toute modif effectuée dans ta feuille de calculs impliquant une formule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Calculate()
        if Range("A1") = "Coucou !" then Range("A1").Font.ColorIndex = 3
    End Sub
    Dans cet exemple, A1 contient une formule (=RechercheV(.......) qui renvoie "Coucou !" et la référence fournie par cette formule a été modifiée.

    PS - F9 ne fonctionne pas pour une mise à jour de ton arc en ciel si aucune modif n'est effectuée dans la plage de recherche.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci de vos réponses, je vois tout ca ce WE, désolé de ne pas commenter plus vite ma Free box est morte, prochaine connextion lundi
    Bon WE à tous

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Hello,
    Finalement j'ai collé ma procédure en Auto_Open et modifié mon code pour qu'il s'applique à toute la feuille. Ca marche comme je voulais.
    J'ai essayé ton Worksheet_Calculate() mais sans arriver à le faire fonctionner à l'ouverture du fichier.
    Merci encore, bonne journée
    à tous
    Thierry

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/07/2014, 17h22
  2. [XL-2010] Reprise d'une macro 1 après exécution d'une macro 2 appelée par la macro 1
    Par julio44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/07/2014, 13h32
  3. Macro à répeter 360 fois contenant une macro
    Par spadassi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/09/2012, 18h52
  4. Macro qui permet de mettre une macro sur une poste
    Par Tinien dans le forum VBA Word
    Réponses: 4
    Dernier message: 26/11/2008, 02h17
  5. Réponses: 3
    Dernier message: 06/12/2007, 12h09

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