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 :

Copie de cellules soumis à une mise en forme conditionnelle


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Novembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 30
    Points : 22
    Points
    22
    Par défaut Copie de cellules soumis à une mise en forme conditionnelle
    Bonjour,
    J’ai une série de cellules avec une mise en forme conditionnelle. Cette série de cellules sont copiées par la suite dans une autre feuille.
    Je voudrai que cette copie garde la couleur de fond (ex : orange ou blanc), mais sans copier la condition.
    Est-ce possible ?
    Voici mon code actuel :

    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
    Sub Valider()
    ' Enregistrement_Données
    '
    Sheets("Feuille1").Activate
        Rows("13:13").Select
        Selection.Insert Shift:=xlDown
        Range("A13").Select
        Sheets("Feuille2").Select
        Range("Z2:AZ2").Select
        Selection.Copy
        Sheets("Feuille1").Activate
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Sheets("Feuille2").Select
        Range("B6,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,B21,B22,B23,B24,B25").Select
        Selection.ClearContents
        Range("B6").Select
     
    End Sub
    Merci pour votre aide

  2. #2
    Membre à l'essai
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Novembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Bonjour à tous,

    Est-ce que l'un d’entre vous aurait une solution ou une petite idée?

    Merci d'avance

  3. #3
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Points : 1 925
    Points
    1 925
    Billets dans le blog
    5
    Par défaut
    Bonjour nadyves,

    Pour t'orienter:

    lire la propriété couleur d'une mise en forme conditionnelle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i = Range("a1").FormatConditions(1).Interior.Color
    affecter un autre par la valeur de i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("x").Interior.Color = i
    supprimer un format conditionnel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("a1").FormatConditions(1).Delete

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Novembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Bonjour à tous,

    Je te remercie NVCfrm pour ta réponse.

    Je n’arrive pas à grand-chose, cela colorie bien les cellules sans garder les conditions, mais malheureusement pour moi cela colorie toutes les cellules.
    Je vous joins mon classeur Excel, pour vous aider à mieux comprendre mes attentes.

    La feuille "Données" sert à prendre une série de mesure et m’indique les valeurs qui ne sont pas dans les spécifications. Puis pour passer à une autre série, je valide avec le bouton "Valider le master Roll". Les valeurs sont stockées dans la feuille "Base_Données", c’est là que je voudrai conserver les cellules hors tolérance en couleur sans les conditions. Car les séries qui suivent, elles n’ont pas forcément les mêmes tolérances.

    Merci encore pour votre aide.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2012
    Messages : 75
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Simple suggestion
    Je pense que vous devriez alléger votre code en évitant les activate, select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Sheets("Données").Select
        Range("Z2:BE2").Select
        Selection.Copy .....
    Aide en ligne :
    Cet exemple montre comment copier les formules des cellules A1 à D4 de la feuille Sheet1 dans les cellules E5 à H8 de la feuille Sheet2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Sheet1").Range("A1:D4").Copy Destination:=Worksheets("Sheet2").Range("E5")
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Ws As Worksheet, WsDest As Worksheet
    Set Ws = Worksheets("Données")
    Set WsDest = Worksheets(("Base_Données")
     
     Ws.Range("Z2:BE2").Copy WsDest.[Z5]
     
    ' Libère la mémoire
    Set Ws = Nothing: Set WsDest = Nothing
    Votre code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Sheets("Données").Select
        Range("B6,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,B21,B22,B23,B24,B25,J6").Select
        Selection.ClearContents
    Ce code donnera le même résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Ws As Worksheet
     
    Set Ws = Worksheets("Données")   
     Ws.Range("B6,B8:B25,J6").ClearContents
     
    ' Libère la mémoire
    Set Ws = Nothing
    _______________
    Cordialement
    Albert

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Novembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Bonjour à tous,

    Toujours pas de solution à mon petit problème

    Je te remercie Sogestion, je ne suis pas un expert en VBA, je vais utiliser tes suggestions pour simplifier mes codes.

    Si quelqu'un a d'autres conseil où solution, je suis preneur.

    Merci à vous

  7. #7
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2012
    Messages : 75
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    En regardant vos procédures, je pense que vous devriez être attentif à

    Optimisation des variables

    Déclarations des variables

    La déclaration du type de variable est une première optimisation extrêmement classique et indispensable.
    Afin de n'oublier aucune déclaration, utiliser en tête de module ou de Form etc... la fonction :

    Option Explicit
    _______________________
    Cordialement
    Albert

  8. #8
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2012
    Messages : 75
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Désolé mais j'aurais du vous donner le lien de la source

    OPTIMISATION EN VISUAL BASIC APPLICATION

    http://fordom.free.fr/tuto/OPTIMISATION.htm
    _________________
    Cordialement
    Albert

  9. #9
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Points : 1 925
    Points
    1 925
    Billets dans le blog
    5
    Par défaut
    bonsoir,
    c'était prévisible!

    Tu veux conserver la couleur renvoyée par la MFC sans la MFC ?
    J'utilise peu les mises en forme dans mes programmes. Encore moins la MFC.
    Un peu tordu
    D'habitude depuis longtemps quand je veux un format volatile, je fais ma propre fonction.

    L'objet FormatCondition ne renvoi pas dans les propriété un Variant contenant le(s) résultat(s) booléan. Il faut le créer.

    Les developpeurs de M$ nous réserve cette tâche.

    Quelqu'un peut-il me dire quelle propriété renvoi la couleur MFC d'une cellule sous MFC ?

    Une curiosité tout de même : Pourquoi le Tri Excel lit bien les couleurs des cellules sous FormatConditionnel et une variable ne peut pas lire ce format volatile ?


    Pour revenir à ton problème je te propose d'adapter ceci:

    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
    Sub Valider()
    ' Enregistrement_Données
    '
        Dim r As Range, couleur, conditions, i, Test
     
        Set r = Worksheets("Feuille2").Range("A2:X2")
     
        couleur = r.FormatConditions(1).Interior.ColorIndex
        Test = r.FormatConditions(1).Formula1
        r.Offset(, r.Columns.Count + 2).FormulaLocal = Test
        conditions = r.Offset(, r.Columns.Count + 2)
        r.Offset(, r.Columns.Count + 2).ClearContents
        r.FormatConditions(1).Delete
     
        For i = 1 To UBound(conditions, 2)
            If conditions(1, i) Then r.Interior.ColorIndex = couleur
        Next
     
     
        Stop
     
        Range("B6,B8:B25").ClearContents
     
    End Sub
    Bien entendu il faut t'assurer que l'Offset ne contient pas des données utiles.

    A toi de jouer ?

  10. #10
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Points : 1 925
    Points
    1 925
    Billets dans le blog
    5
    Par défaut
    une petite correction de la ligne 16

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If conditions(1, i) Then r.cells(1,i).Interior.ColorIndex = couleur

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    Je pense que je peux t'aider, vérifier bien que t'as met le $ dans les colonnes des cellules de base ou y a la mise en forme conditionnelle car c si pas le cas t'as nouveau mise en forme s'affiche jamais

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    un essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub supp_MFC()
        Dim pl As Range, c As Range
        Set pl = Cells.SpecialCells(xlCellTypeAllFormatConditions)
        If Not pl Is Nothing Then
            For Each c In pl
                c.Interior.Color = c.DisplayFormat.Interior.Color
                c.Font.Color = c.DisplayFormat.Font.Color
                ' + autres attributs Font si besoin, Bold etc
            Next c
            pl.FormatConditions.Delete
        End If
    End Sub
    eric

Discussions similaires

  1. Detecter si une cellule possede une mise en forme
    Par hedidev1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2015, 16h13
  2. Réponses: 3
    Dernier message: 30/10/2014, 15h58
  3. Copie d'une mise en forme conditionnelle
    Par jnauche dans le forum Excel
    Réponses: 3
    Dernier message: 24/09/2008, 15h04
  4. Cellules avec une mise en forme conditionnelle
    Par Peanut dans le forum Excel
    Réponses: 2
    Dernier message: 31/07/2008, 13h47
  5. Réponses: 6
    Dernier message: 07/08/2006, 11h26

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