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 :

Ajouter un code VBA dans une feuille Excel par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut Ajouter un code VBA dans une feuille Excel par macro
    Bonjour à tous,

    je souhaiterai ajouter le code vba ci-dessous dans la feuille 1 de 150 fichier Excel qui se trouvent dans le même dossier
    c'est pour cela que je souhaite automatiser l'insertion du code par macro vba :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$D$38" Then
        Select Case Target.Value
            Case Is = "Serious"
    Target.Interior.ColorIndex = 6 'jaune
            Case Is = "Extreme"
    Target.Interior.ColorIndex = 3 'rouge
            Case Is = "Low"
    Target.Interior.ColorIndex = 35 'vert
            Case Is = "Moderate"
    Target.Interior.ColorIndex = 34 'bleu ciel
            Case Else
    Target.Interior.ColorIndex = -4142 'transparent
        End Select
     End If
    End Sub
    Merci pour votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    dans un premier temps, voici une autre méthode pour réaliser ton action, au moyen de la fonction INDEX (MATCH en anglais)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim TabVal(): TabVal = Array("Serious", "Extreme", "Low", "Moderate")
    Dim TabCoul(): TabCoul = Array(6, 3, 35, 34)
     
    With Target
        .Interior.ColorIndex = -4142
        On Error Resume Next
        If .Address = "$D$38" Then .Interior.ColorIndex = TabCoul(Application.Match(.Value, TabVal, False) - 1)
    End With
     
    End Sub

    Concernant ton sujet, voici comment écrire la procédure dans la feuille dont le CodeName est "Feuil1"

    je te laisse mettre en place la boucle qui ouvre et ferme les 150 fichiers, si tu as un problème, explique ce que tu n'arrives pas à faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub AutoEcriture()
    Dim Lig As Integer, Wb As Workbook
     
    Set Wb = ThisWorkbook ' Workbooks.Open("LeFichier")
    With Wb.VBProject.VBComponents("Feuil1").CodeModule
        Lig = 1
        .InsertLines Lig, "Private Sub Worksheet_Change(ByVal Target As Range)": Lig = Lig + 1
        .InsertLines Lig, "Dim TabVal(): TabVal = Array(""Serious"", ""Extreme"", ""Low"", ""Moderate"")": Lig = Lig + 1
        .InsertLines Lig, "Dim TabCoul(): TabCoul = Array(6, 3, 35, 34)": Lig = Lig + 1
        .InsertLines Lig, "With Target": Lig = Lig + 1
        .InsertLines Lig, ".Interior.ColorIndex = -4142": Lig = Lig + 1
        .InsertLines Lig, "On Error Resume Next": Lig = Lig + 1
        .InsertLines Lig, "If .Address = ""$D$38"" Then .Interior.ColorIndex = TabCoul(Application.Match(.Value, TabVal, False) - 1)": Lig = Lig + 1
        .InsertLines Lig, "End With": Lig = Lig + 1
        .InsertLines Lig, "End Sub": Lig = Lig + 1
    End With
     
    End Sub
    le second exemple se comprend aisément je pense, si tu veux conserver ta propre procédure, tu l'écris toujours de cette manière :

    - commencer la ligne par " .InserLines Lig," pour ajouter une ligne
    - mettre la ligne de code à écrire dans une chaine de caractère (et donc doubler les guillemets du code à écrire)
    - terminer la ligne par " :Lig = Lig + 1" afin de préparer l'ajout de la ligne suivante



    EDIT : et si tu ne veux pas passer par des variables Tableau, tu peux éventuellement utiliser la fonction Choose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
        With Target
            .Interior.ColorIndex = -4142
            On Error Resume Next
            If .Address = "$D$38" Then .Interior.ColorIndex = Choose(Application.Match(.Value, Array("Serious", "Extreme", "Low", "Moderate"), False), 6, 3, 35, 34)
        End With
    End Sub

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, tuto à lire : Visual Basic Editor

Discussions similaires

  1. [Toutes versions] Impression d'une feuille Excel par macro --> Ne pas utiliser l'imprimante par défaut
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/05/2012, 13h41
  2. Réponses: 2
    Dernier message: 12/03/2011, 16h42
  3. Ajout d'un bouton dans une feuille excel avec vba
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2008, 15h35
  4. Affectation code VBA dans une feuille xls
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/02/2007, 13h52
  5. Dupliquer une feuille excel par macro
    Par eleve36 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/02/2007, 23h01

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