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 d'insertion de couleur en fonction du contenu [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut macro d'insertion de couleur en fonction du contenu
    Bonjour,

    j'aurais voulu avoir de l'aide pour une macro qui me permettrais de mettre en différente couleur (bleu, jaune ou gris) suivant se qui est écrit sur une nomenclature.
    actuellement je le fait à la main ligne par ligne grâce à ne macro couleur classique se qui m'évite les manipulations souris mais cette manip me prend encore beaucoup trop de temps

    j'ai essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each c In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
        If c = "3                8" then ...........
    le problème c'est que ce n'est pas la valeur complète de la ligne mais que le début
    en fait je voudrait que tout se qui commence de A1 à Axxxx par "3 8" soit de la couleur jaune tout se qui commence par "4 P" soit de couleur bleue

    et ainsi de suite quelqu'un pourrait m'aider svp ?

    merci d'avance

  2. #2
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Une piste à adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        Dim n&, c As Range
        n = Cells(Application.Rows.Count, 1).End(xlUp).Row
        For Each c In Range(Cells(1, 1), Cells(n, 1))
            If c Like "1*" Then
                c.Interior.Color = RGB(255, 0, 0)
            ElseIf c Like "2*" Then
                    c.Interior.Color = RGB(0, 255, 0)
            ElseIf c Like "3*" Then
                    c.Interior.Color = RGB(0, 0, 255)
            End If
        Next
    End Sub
    Il te reste a choisir tes couleurs, et les tests via l'opérateur Like.
    [chaine_de_caracteres] Like "3 8*" va être vrai si [chaine_de_caracteres] commence par "3 8".
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Autre piste: un format conditionnel simple doit faire l'affaire aussi .... même sous 2003 je pense
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  4. #4
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    merci beaucoup,

    ça marche presque niquel juste un problème

    j'ai mis :

    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
    Sub macrocouleur()
    '
    ' Macrocouleur Macro
    '
    ' Touche de raccourci du clavier: Ctrl+h
     
        Dim n&, c As Range
        n = Cells(Application.Rows.Count, 1).End(xlUp).Row
        For Each c In Range(Cells(1, 1), Cells(n, 1))
            If c Like "5                C*" Then
                c.Interior.Color = 15773696
            ElseIf c Like "3                8*" Then
                    c.Interior.Color = 65535
     
            End If
        Next
    End Sub
    il me met bien ce qui est en "5 C" en bleu
    tout se qui est en "3 8" en jaune mais aussi certaine autres lignes comme des "5 2" en jaune
    et ce n'est juste ma cellule qui est de couleur et j'aimerais toute la ligne

    et j'ai une deuxième problématique
    je veux que toutes les lignes portant "5 C" soit en bleu sauf celles ayant une ligne en dessous portant du texte


    je suis désolé si j'embête ....

  5. #5
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    en fait la macro est fait pour mon entreprise et elle est partagé pour tout nos postes ( entre 3 et 7)
    je l'ai fait pour éviter toutes les manipulations de modification à la main qui nous prenaient un temps fou et dont les novices en informatique ne savent pas faire

    j'ai déjà effectué toutes les mise en formes (bordures, tailles des colonnes etc...)
    nous avons aussi un fichier à joindre qui à été rajouté sur simple CTRL+E

    mais impossible de rajouté les couleurs qui nous permettrais un gain de temps énorme

  6. #6
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour,

    Tu peux tester ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
        Dim n&, c As Range
        n = Cells(Application.Rows.Count, 1).End(xlUp).Row
        For Each c In Range(Cells(1, 1), Cells(n, 1))
            If c Like "3 8*" Then
                c.EntireRow.Interior.Color = 65535
            ElseIf c Like "5 C*" And Cells(c.Row + 1, 1) = "" Then
                c.EntireRow.Interior.Color = 15773696
            End If
        Next
    End Sub
    Par contre
    et j'ai une deuxième problématique
    je veux que toutes les lignes portant "5 C" soit en bleu sauf celles ayant une ligne en dessous portant du texte
    ici je ne teste que sur la colonne 1
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  7. #7
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    voici un exemple d'une nomenclature la couleur saumon est la couleur que nous remplissons par nous même (contrôle de pièce)
    par contre j'aurais aimer que le jaune et le bleu soit mis automatiquement via macro (je ne sais pas si c'es possible)

    c'est toujours plus simple en voyant le fichier

    ENOMFILTRED.xls

  8. #8
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    je viens de tester

    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 macrocouleur()
    '
    ' Macrocouleur Macro
    '
    ' Touche de raccourci du clavier: Ctrl+h
     
        Dim n&, c As Range
        n = Cells(Application.Rows.Count, 1).End(xlUp).Row
        For Each c In Range(Cells(1, 1), Cells(n, 1))
            If c Like "3                8******" Then
                c.EntireRow.Interior.Color = 65535
            ElseIf c Like "4                8******" Then
                c.EntireRow.Interior.Color = 65535
            ElseIf c Like "5                8******" Then
                c.EntireRow.Interior.Color = 65535
            ElseIf c Like "5                C*" Then
                c.EntireRow.Interior.Color = 15773696
            ElseIf c Like "5                 C*" And Cells(c.Row + 1, 1) Like "CDE*" Then
            c.EntireRow.Interior.Color = RGB(255, 255, 255)
            ElseIf c Like "5                C*" And Cells(c.Row + 1, 1) Like "OT*" Then
            c.EntireRow.Interior.Color = RGB(255, 255, 255)
            End If
        Next
    End Sub
    il ne veux rien savoir
    et un problème que je n'avais pas pensé....

    le"5 8" comporte le jaune mais aussi le bleu par contre les lignes bleue ne comporte au max que 4 chiffres les ligne jaunes 7 tout le temps j'ai essayer comme si dessus en aoutant des "*" mais il prend en compte les espaces ...

  9. #9
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    BOnjour,


    Juste de passage et j'en profite pour poser une question:

    Qu'elle est l'utilité de mettre une "*" ?
    C'est pas la première fois que je vois ca et je ne sais pas qu'est ce que ca veut dire en langage VBA...
    Merci d'avance
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  10. #10
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    je pense après ce n'est que ma vision ^^'

    que le "*" sert à préciser qu'il y a une suite derrière le chiffre ou la lettre

    après on va attendre les professionnels

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Voir l'aide sur le like ... se lit comme
    "si ça commence par 2 (et peut importe ce qu'il y a derrière"

    ? 1 Caractère
    * Zéro ou plus Caractère
    # Nombre entre 0 et 9
    [charlist] 1 caractère dans la charlist
    ....
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  12. #12
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    alors pour la condition, je ferais plus comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub colorize()
    Dim char1 As String, char2 As String, c As Range
     
    For Each c In Range("A5:A" & Cells(5, 1).End(xlDown).Row)
        char1 = Left(c, 1)
        char2 = Left(Trim(Right(c, Len(c) - 1)), 1)
        If char1 = "5" And char2 = "C" Then
            c.EntireRow.Interior.Color = 655525
        End If
    Next
     
    End Sub
    Alleï Bonjour chez vous!

  13. #13
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour le fil

    L'opérateur Like trouve typiquement sont utilisation dans ce cas.
    Par contre j'ai l'impression qu'à chaque réponse la problématique se complexifie ^^

    Sylvainarcil tu devrais résumer (et de façon exhaustive) dans quel cas tu veux mettre de la couleur.
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  14. #14
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci pour l'info du like

    j'ai donc fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim n&, c As Range
        n = Cells(Application.Rows.Count, 1).End(xlUp).Row
        For Each c In Range(Cells(1, 1), Cells(n, 1))
            If c Like "3                8######" Then
                c.EntireRow.Interior.Color = 65535
            ElseIf c Like "4                8######*" Then
                c.EntireRow.Interior.Color = 65535
            ElseIf c Like "5                8######*" Then
                c.EntireRow.Interior.Color = 65535
    et il ne me prend plus les lignes ayant une 3 ou 4 chiffres

    mon dernier problème car la tout est ok sauf ça,
    c'est de mettre en bleu toutes les lignes où il n'y a pas un texte en dessous du type "CDE" ou "OT" celles avec les lignes en dessous comportant du texte autre qu'un article doivent rester blanches
    comme par exemple

    5 792 (1) FIL DE CABLAGE PVC NORMES UL+CSA NOIR AWG14 (2,5MM2) 100,00
    5 876 (1) EMBOUT SIMPLE TYPE MOYEN ROUGE SECTION:1MM2 AWG18 400,00
    les deux lignes vont être bleues

    mais

    5 C6171766 (0) CABLE PLAT ASI NOIR 2X1.5 100,00
    CDE N° : 21505699/2 pour le : 17/07/2015 : Livrée OT validé N° : 2012690609 le : 15/07/2015 OT validé N° : 2012690609 le : 15/07/2015
    les lignes doivent rester banches


    je suis d'accord avec toi antonysansh ^^' en fait je m'aperçois au fur et à mesure de l'avancement que ça se complexifie

  15. #15
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    c'est simple

    Il faut tester "CDE" ou "OT" ensuite, tu colories la ligne courante et la ligne précédente
    Alleï Bonjour chez vous!

  16. #16
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    je n'y avais pas penser comme cela mais oui je vais tester comme ça

    question bête

    j'ai fait une manip' qui m'a changer mon curseur d'écriture sous vba en un rectangle noir je ne peux plus faire espace .... comment revenir au curseur de base ?

  17. #17
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    je pense comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.cursor=xldefault
    Alleï Bonjour chez vous!

  18. #18
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    je rentre le code où ?

    image ci-jointe
    Nom : Sans titre.jpg
Affichages : 109
Taille : 343,4 Ko

    au lieu d'avoir le curseur d'écriture standard (la ligne simple) je me retrouve avec ce gros patté la il m'est impossible d'utiliser la touche espace maintenant ....

  19. #19
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    ah oui ok, j'avais pas vu ça comme ça
    appuie sur la touche 'Insert' de ton clavier.
    ça devrait rentrer dans l'ordre
    Alleï Bonjour chez vous!

  20. #20
    Futur Membre du Club
    Homme Profil pro
    passion
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : passion

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    niquel merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] Ajouter couleur en fonction de la valeur en macro
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 26/01/2015, 15h16
  2. [AC-2010] Couleur en Fonction du contenu d'une zone de texte
    Par leirbag1 dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/01/2014, 09h33
  3. [VBA-E] Lancement d'une macro en fonction du contenu d'une cellule
    Par Zak Blayde dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2007, 15h13
  4. Insertion de couleurs dans un TEdit
    Par Bouillon dans le forum Delphi
    Réponses: 8
    Dernier message: 24/10/2006, 12h50
  5. [VBA-E] Nom et couleur bouton fonction d'une cellule
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2006, 17h00

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