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 :

Macro coloration VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 23
    Par défaut Macro coloration VBA
    Bonjour
    Je souhaite faire une macro qui colore les cellules de ma colonne B en fonction des valeurs des cellules correspondantes dans la colonne C..
    Je m'explique : Si C6 = 2 => B6 (Orange) , Si C6 = 1 => B6 (Vert) , Si C6 = 0 => B6 (Blanc)
    Sachant aussi que ma plage de travail est [B6,EJ5000]
    Je suis bloqué là-dessus si qlqujn pourrait m'aider je serai reconnaissant
    Merci beaucoup

  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,

    quel début de code as-tu entrepris ?

    ce n'est pas très compliqué :

    1) Une structure If/Elseif/Else pour tester tes trois conditions
    2) Utiliser la propriété .Interior.Color (ou ColorIndex) de l'objet Range avec les bons numéros de couleurs (utiliser l'enregistreur de macro pour les capturer si besoin)

    Je n'ai pas compris l'explication de ta référence [B6,EJ5000], en gros on couple B avec C, puis D avec E etc ??

    Par ailleurs, une mise en forme conditionnelle peut aussi répondre à ton besoin

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 23
    Par défaut
    Bonjour
    Merci pour ta réponse, vous avez bien compris ma référence sauf que ma plage comme de la colonne B jusqu'à colonne EJ , et de la ligne 6 jusqu'à ligne 5000
    J'ai commencé par cette idée , mais il faut que je l'adapte à ma problématique , peux-tu m'aider là dessus ?
    Merci beaucoup
    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
    19
     
    Sub Format()
    Dim PLAGE As Range, cel As Range, derlg As Long
    With ActiveSheet
       derlg = .Range("B" & .Rows.Count).End(xlUp).Row
       Set PLAGE = .Range("B6:B" & derlg)
       For Each cel In PLAGE
          If cel = "2" Then
             cel(1, 2).Interior.ColorIndex = 49407
          If cel = "1" Then
             cel(1, 2).Interior.ColorIndex = 5287936
     
          If cel = "0" Then
             cel(1, 2).Interior.ColorIndex = 
     
          End If
       Next cel
    End With
    End Sub

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il est beaucoup plus simple de faire ça avec une mise en forme conditionnelle : trois règles simples à étendre à une plage, ça te prendrait au maximum 5 min, beaucoup moins de temps que le développement d'une macro.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 51
    Par défaut
    Sinon tu utilise 2 boucles imbriquées : La première bouclant sur chaque colonne de B à EJ en sautant 2 colonnes par 2 colonnes et la deuxième dans la première qui boucle de la ligne 6 a 5000.

    Quelque chose du genre de :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    dim i as integer
    dim k as integer
     
    'initialise le numéro de colonne
    i = 2
     
    'initialise le numéro de ligne
    k = 6
     
    'boucle sur chaque duo de colonne en commencant par la colonne 2 "B"
    Do until i = "numéro de colonne correspondante à EJ"
     
    'boucle sur chaque ligne de 6 à 5000
    Do until k = 5000
     
    'Conditions pour colorier l'intérieur des cellules
    if cells(k,i).value = 1 then cells(k,i+1).interior.colorindex = blabla
    if cells(k,i).value = 2 then cells(k,i+1).interior.colorindex = blabla
     
    'passe à la ligne suivante
    k = k +1
     
    loop
     
    'passe au duo de colonne suivante
    i = i +2
    loop

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 23
    Par défaut
    Merci pour votre réponse
    le code fonctionne bien mais il avance pas sur les autres colonnes , il ne s'applique que pour la première colonne

Discussions similaires

  1. besoin d'aide pour macros ou VBA
    Par jmsor dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/02/2007, 19h41
  2. macro excel vba
    Par fildupa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/12/2006, 22h29
  3. Demarrer une Macro/Appli VBA sans paser par les feruilles Excel
    Par size_one_1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/12/2006, 22h23
  4. execute une macro via vba sous access
    Par nes dans le forum Access
    Réponses: 4
    Dernier message: 29/03/2006, 00h15
  5. Réaliser une macro en VBA pour excel afin de créer un graphe
    Par xavier le breuil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/12/2005, 15h41

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