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 :

Changer la couleur des cellules modifiées


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Points : 79
    Points
    79
    Par défaut Changer la couleur des cellules modifiées
    Bonjour,

    Je souhaiterais connaître le code qui permettra de changer la couleur d'une cellule si la valeur est modifiée.
    Cela me permettra de voir les corrections appliquées lors de l'exécution de la macro suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Vérif_datacol()
     
     
    Dim cell As Range
     
    For Each cell In Sheets(" NEO T2.07 SCDM").Range("b1:b" & Sheets(" NEO T2.07 SCDM").Range("b65000").End(xlUp).Row)
     
    Set c = Sheets("déploiement").Range("c:c").Find(cell, LookIn:=xlValues, LookAt:=xlWhole)
     If Not c Is Nothing Then
     Sheets("NEO T2.07 SCDM").Cells(cell.Row, 18) = Sheets("Status Report").Cells(c.Row, 10)
    End If
    Next cell
    End Sub

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Vérif_datacol()
    Dim cell As Range
        For Each cell In Sheets(" NEO T2.07 SCDM").Range("B1:B" & Sheets(" NEO T2.07 SCDM").Range("b65000").End(xlUp).Row)
            Set c = Sheets("déploiement").Range("C:C").Find(cell, LookIn:=xlValues, LookAt:=xlWhole)
            If Not c Is Nothing Then
                Sheets("NEO T2.07 SCDM").Cells(cell.Row, 18) = Sheets("Status Report").Cells(c.Row, 10)
                Sheets("NEO T2.07 SCDM").Cells(cell.Row, 18).Interior.ColorIndex = 3 'Couleur de remplissage rouge
            End If
        Next cell
    End Sub
    Cordialement.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Points : 79
    Points
    79
    Par défaut
    Merci à toi pour cette réponse rapide.
    Cependant la demande est de mettre en couleur seulement les cellules modifiées. Là, le code permet de mettre en rouge tous les valeurs trouvées.

    La difficulté est que je ne peux pas attribuer une valeur précise pour le changement de couleur.
    Je creuse mais c'est compliqué.

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    En l’état, ton programme effectue une recherche de valeur puis, si la valeur est trouvée, il remplace systématiquement la valeur de la cellule cible par la valeur de la cellule source (même si c’est par la même valeur).

    Si tu souhaites affecter une couleur de remplissage aux cellules cibles qui ont changé de valeur, il suffit que tu fasses une comparaison avant de lui affecter la valeur de la cellule source.

    Dis-moi si j’ai bien compris.

    Cordialement.

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Points : 79
    Points
    79
    Par défaut
    oui c'est tout fait ça . Il est vrai que le but est de comparer les colonnes entre deux feuille Excel et m'indiquer les valeurs différentes par une couleurs.

    dans la deuxième étape, je pourrai appliquer le code que j'ai mentionné plus haut.

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Tu peux essayer d'appliquer ce code (non testé)
    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 Vérif_datacol()
    Dim cell As Range, C As Range
        With Sheets("NEO T2.07 SCDM")
        For Each cell In .Range("B1:B" & .Range("B65000").End(xlUp).Row)
            Set C = Sheets("déploiement").Range("C:C").Find(cell, LookIn:=xlValues, LookAt:=xlWhole)
            If Not C Is Nothing Then
                'On compare la valeur correspondant à la valeur trouvée avec celle de la cellule cible
                'Si les valeurs sont différentes
                If .Cells(cell.Row, 18) <> Sheets("Status Report").Cells(C.Row, 10) Then
                    'On remplace la caleur cible
                    .Cells(cell.Row, 18) = Sheets("Status Report").Cells(C.Row, 10)
                    'On colorie la cellule cible en rouge
                    .Cells(cell.Row, 18).Interior.ColorIndex = 3
                End If
            End If
        Next cell
        End With
    End Sub
    Cordialement.

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Points : 79
    Points
    79
    Par défaut
    Le résultat : il m'efface tous les valeurs de la colonnes et me mets tous les cellules de la couleur rouge.

    J'essaye de le faire en deux étapes:
    1° Macro
    d'abord je compare la colonne source et cible si différentes mettre juste la cellule en rouge, si identique pas de remplissage de la cellule.

    2° remplace la valeur cible par la valeur source (correspond à ce que j'ai eu du ma à trouvé mais fonctionne bien).

    Si tu as une idée juste pour la première macro.

  8. #8
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Le résultat : il m'efface tous les valeurs de la colonne et me met toutes les cellules de la couleur rouge.
    Je ne comprends pas cet effacement que tu décris.
    Comparativement à ta macro initiale, la macro que je t’ai transmise ne change rien sur le traitement des valeurs. On effectue la copie des mêmes cellules. La seule différence, c’est que la copie n’est faite que si les valeurs sont différentes et c’est dans ce cas que la cellule est colorée en rouge.
    Donc :
    - pourquoi un effacement ? Il faudrait que la cellule copiée soit vide.
    - pourquoi la macro initiale ne produit pas le même résultat ?
    J’aurais besoin de disposer d’un fichier exemple pour y voir plus clair.

    Cordialement.

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    Excuse pour la réponse tardive.

    le code est bon mais seulement il me mets en rouge les valeurs qui ne change pas hors je souhaitais le contraire mais je me sers de ce que tu m'as donner c'est une bonne piste.

    Merci Si j'arrive à faire un bon résultat je le remettrai.

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Avril 2012
    Messages : 83
    Points : 79
    Points
    79
    Par défaut
    voilà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Vérif_Doublons_Planing()
    Dim mondico As Object, c
      [C:C].Interior.ColorIndex = xlNone
      'Vérification Doublon MA'
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range("c2", [c65000].End(xlUp))
         mondico.Item(c.Value) = mondico.Item(c.Value) + 1
      Next c
      For Each c In Range("c2", [c65000].End(xlUp))
        If mondico.Item(c.Value) > 1 Then c.Interior.ColorIndex = 6
      Next c
    End Sub
    Plus adapater pour ce que je veux faire ça vérifie que les doublons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Vérif_Doublons_Inventaire()
    Dim mondico As Object, c
      [AA:AA].Interior.ColorIndex = xlNone
      'Vérification Doublon ID'
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range("aa2", [aa65000].End(xlUp))
         mondico.Item(c.Value) = mondico.Item(c.Value) + 1
      Next c
      For Each c In Range("aa2", [aa65000].End(xlUp))
        If mondico.Item(c.Value) > 1 Then c.Interior.ColorIndex = 6
      Next c
    End Sub
    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
    29
    30
    31
    32
    33
    Sub Vérif_pl()
     
    Dim cell As Range
     
    For Each cell In Sheets("déploiement").Range("c1:c" & Sheets("déploiement").Range("c65000").End(xlUp).Row)
     'Recherche avec Ma dans l'inventaire'
    Set c = Sheets("Extract_Full_DCOL_EUR_FR_201303").Range("k:k").Find(cell, LookIn:=xlValues, LookAt:=xlWhole)
     If Not c Is Nothing Then
     'Renvoi le modele '
     Sheets("déploiement").Cells(cell.Row, 19) = Sheets("Extract_Full_DCOL_EUR_FR_201303").Cells(c.Row, 13)
      'Renvoi le Type'
     Sheets("déploiement").Cells(cell.Row, 13) = Sheets("Extract_Full_DCOL_EUR_FR_201303").Cells(c.Row, 12)
     'Renvoi la configuration'
     Sheets("déploiement").Cells(cell.Row, 12) = Sheets("Extract_Full_DCOL_EUR_FR_201303").Cells(c.Row, 25)
    End If
    Next cell
    For Each cell In Sheets("déploiement").Range("j1:j" & Sheets("déploiement").Range("j65000").End(xlUp).Row)
     'Recherche avec ID dans l'inventaire'
    Set c = Sheets("Extract_Full_DCOL_EUR_FR_201303").Range("aa:aa").Find(cell, LookIn:=xlValues, LookAt:=xlWhole)
     If Not c Is Nothing Then
     'Renvoi Mail '
     Sheets("déploiement").Cells(cell.Row, 9) = Sheets("Extract_Full_DCOL_EUR_FR_201303").Cells(c.Row, 32)
      'Renvoi Nom '
     Sheets("déploiement").Cells(cell.Row, 6) = Sheets("Extract_Full_DCOL_EUR_FR_201303").Cells(c.Row, 28)
     'Renvoi Prénom '
     Sheets("déploiement").Cells(cell.Row, 7) = Sheets("Extract_Full_DCOL_EUR_FR_201303").Cells(c.Row, 29)
     'Renvoi Entité '
     Sheets("déploiement").Cells(cell.Row, 5) = Sheets("Extract_Full_DCOL_EUR_FR_201303").Cells(c.Row, 1)
    'Renvoi Profil'
     Sheets("déploiement").Cells(cell.Row, 11) = Sheets("Extract_Full_DCOL_EUR_FR_201303").Cells(c.Row, 26)
    End If
    Next cell
    End Sub
    Merci !

Discussions similaires

  1. [XL-2003] Changer la couleur des cellules sans conditionnelle et sans VBA
    Par Bacube dans le forum Excel
    Réponses: 5
    Dernier message: 13/06/2012, 14h07
  2. Réponses: 4
    Dernier message: 11/08/2011, 10h46
  3. Réponses: 2
    Dernier message: 09/09/2009, 14h08
  4. Changer la couleur des cellules
    Par Herman dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 07/07/2008, 17h56
  5. [NetBeans] Changer la couleur des commentaires
    Par Lorenzox dans le forum NetBeans
    Réponses: 3
    Dernier message: 15/12/2004, 08h50

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