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 :

Colorier ligne après recherche dans combobox [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieurs systèmes avioniques
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieurs systèmes avioniques

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Par défaut Colorier ligne après recherche dans combobox
    Bonjour,

    Suite à une recherche effectuée dans une combobox, je veux colorer la ligne trouvée.

    La combobox ne recherche que la valeur dans la colonne A, et je veux colorier la ligne jusqu'à la colonne E.

    Problème : La fonction Range ne permet de colorier que seulement deux cellules.

    Quelle instruction puis-je utiliser pour colorier toute les cellules jusqu'à la colonne E ?

    Mon bout de code :

    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
    Private Sub ComboBox1_Change()
     
        Application.ScreenUpdating = False
     
        Range("A3:A912").Interior.ColorIndex = 2
     
        If ComboBox1 <> "" Then
            For ligne = 3 To 912
                If Cells(ligne, 1) Like "*" & ComboBox1 & "*" Then
                    Range(Cells(ligne, 1), Cells(ligne, 2)).Interior.ColorIndex = 43
                End If
            Next
        End If
     
    End Sub
    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    salut ds1tox,

    tu veux colorier de A à E?
    donc ton erreur est ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(ligne, 1), Cells(ligne, 2)).
    si ligne=3
    donc cells(3,1) = A3
    et cells(3,2) = B3

    Pour colorier jusqu'à E j'aurais fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(ligne, 1), Cells(ligne, 5)).
    donc ici cells(3,5) = E3

    Où alors j'ai pas bien compris????
    Seb

  3. #3
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Range(cell1,cell2) => cellules de cell1 à cell2
    et non Cell1 et cell2

    Cdlt

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieurs systèmes avioniques
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieurs systèmes avioniques

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Par défaut
    Merci pour vos réponses, c'est exactement ça.

    En revanche j'ai un soucis quand j'efface ce que je recherche dans la combobox, les colonnes restent coloriées...


    J'ai tenté un ClearFormats qui ne marche pas.

    Y'a t-il une fonction qui pourrait m'effacer la couleur des cellules quand : Combobox.value = "" ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Re,

    Si comboxbox=""
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.Pattern = xlNone
    seb

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieurs systèmes avioniques
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieurs systèmes avioniques

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Par défaut
    J'ai essayé ça mais il tjrs pas. Y'a quelque chose que je dois zapper !


    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
    Private Sub ComboBox1_Change()
     
        Application.ScreenUpdating = False
     
        Range("A3:A912").Interior.ColorIndex = 2
     
        If ComboBox1 <> "" Then
            For ligne = 3 To 912
     
                If Cells(ligne, 1) Like "*" & ComboBox1 & "*" Then
                Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.ColorIndex = 43
     
     
                        If ComboBox1.Value = "" Then
                        Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.Pattern = xlNone
                        End If
     
                End If
     
            Next
        End If
     
    End Sub

    La fonction Range ne correspond peut-être pas à ce que je veux faire...

  7. #7
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    re,
    Dans ta première partie de code tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A3:A912").Interior.ColorIndex = 2
    parce que j'imagine que tu veux sans remplissage hors ici tu lui dis de mettre ton range à la couleur blanche, mais blanc est une couleur donc il faut passer par xlNone

    sinon pour le reste j'aurai fait comme ça, mais j'ai pas 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
    19
    20
    21
    Private Sub ComboBox1_Change()
     
        Application.ScreenUpdating = False
     
        Range("A3:A912").Interior.ColorIndex = xlNone
     
        If ComboBox1.Text <> "" Then
            For ligne = 3 To 912
     
                If Cells(ligne, 1) Like "*" & ComboBox1 & "*" Then
                Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.ColorIndex = 43
     
     
                        If ComboBox1.Text= "" Then
                        Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.Pattern = xlNone
                        End If
     
                End If
     
            Next
        End If
    Si tu veux tu peux posté ton fichier, c plus simple

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieurs systèmes avioniques
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieurs systèmes avioniques

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Par défaut
    Bon je découvre VBA, il y a peut être des choses qui vont te surprendre mais je bidouille comme je peux .

    Et du coup je suis parti sur autre chose j'ai mis un deuxième bouton "Clear" on va dire, qui efface tous les fonds de la feuille (encore bidouille).

  9. #9
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    re,

    Bon voilà ce que tu recherches si j'ai bien compris
    colle ce code à la place du tien
    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
    34
    35
    36
    37
    38
    39
    40
    41
    'Sub CommandButton1_Click()
    Sub ComboBox1_Change()
    Dim ligne As Double
    Dim produit, result
     Application.ScreenUpdating = False
     
        Range("A3:E912").Interior.ColorIndex = xlNone
     
        If ComboBox1.Text <> "" Then
            For ligne = 3 To 912
     
                If Cells(ligne, 1) Like "*" & ComboBox1 & "*" Then
                Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.ColorIndex = 43
     
     
                        If Not IsEmpty(ComboBox1.Text) Then
     
                        Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.Pattern = xlNone
                        End If
     
                End If
     
            Next
        End If
     
    With Sheets("Stock")
    produit = ComboBox1.Value
    On Error Resume Next
    Set result = Range("A3:A912").Find(what:=produit, lookat:=xlWhole)
    On Error GoTo 0
            If result Is Nothing Then
            MsgBox "Non trouvé"
            Else
            '--- >>> INUTILE  >>>  Range(result, result).Select
     
    ActiveWindow.ScrollRow = result.Row
    ActiveWindow.ScrollColumn = result.Column
            End If
     
    End With
    End Sub
    J'ai modifier cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("A3:E912").Interior.ColorIndex = xlNone
    ici tu enlèves le remplissage "vert" de ton tableau

    La sub est un Change comme çà pas besoin d'appuyer sur le bouton recherche

    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not IsEmpty(ComboBox1.Text) Then
                        Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.Pattern = xlNone
                        End If
    et ici je supprime le remplissage "vert"
    Dit moi si c bon

    seb

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieurs systèmes avioniques
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieurs systèmes avioniques

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Par défaut
    Bonjour,

    Alors le code me trouve bien la ligne concernée, mais ne le colorie pas en vert.

    Comme ta du voir j'ai mis un bouton "nouvelle recherche" qui met tous à 0. Cette solution, bien que pas très pratique, fonctionne. Je reviendrai dessus plus tard il faut que j'avance.
    Je mettrai la solution si je la trouve

    Merci en tout cas du temps passé .

  11. #11
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Salut,

    Oui il là colorie bien en vert mais on ne le voit pas trop rapide, quand tu le lances en pas à pas (F8), tu le verras
    Maintenant quand veux-tu enlever le remplissage vert exactement?
    seb

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieurs systèmes avioniques
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieurs systèmes avioniques

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Par défaut
    En fait, ce que je voudrais c'est que la ligne se mette en vert quand l'information entrée dans ma combobox correspond à une valeur dans la colonne A et que le remplissage s'enlève quand j'efface ce qu'il y a dans la combobox.

    Malgré les différentes solutions proposées et les tests que j'ai fait, la cellule en colonne A redevient bien blanche mais le reste de la ligne reste verte.

    En fait je veux juste effectuer une recherche sur la page pour vérifier quel matériel est disponible ou pas.

  13. #13
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    re,
    remplace ton code par celui-là
    ca devrai correspondre à ta demande
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Option Compare Text
    Dim ligne As Double
     
    Sub ComboBox1_Change()
     
    Dim produit, result
     Application.ScreenUpdating = False
     
        Range("A3:E912").Interior.ColorIndex = xlNone
     
        If ComboBox1.Text <> "" Then
            For ligne = 3 To 912
     
                If Cells(ligne, 1) Like "*" & ComboBox1 & "*" Then
                Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.ColorIndex = 43
     
                End If
     
            Next
        End If
     
    With Sheets("Stock")
    produit = ComboBox1.Value
    On Error Resume Next
    Set result = Range("A3:A912").Find(what:=produit, lookat:=xlWhole)
    On Error GoTo 0
            If result Is Nothing Then
            MsgBox "Non trouvé"
            Else
            '--- >>> INUTILE  >>>  Range(result, result).Select
     
    ActiveWindow.ScrollRow = result.Row
    ActiveWindow.ScrollColumn = result.Column
            End If
     
    End With
    End Sub
     
    Sub CommandButton2_Click()
    Dim cell
     
    For Each cell In ActiveSheet.Range("A3:E912") 'UsedRange
        With cell.Interior
     
            If .ColorIndex = 43 Then
            .ColorIndex = xlNone
            End If
            'If Not IsEmpty(ComboBox1.Text) Then
     
                        'Range(Cells(ligne, 1), Cells(ligne, 5)).Interior.Pattern = xlNone
                        'End If
        End With
     
    Next
    'ComboBox1.ListIndex = -1
    Range("A3").Select
    End Sub
    seb

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieurs systèmes avioniques
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieurs systèmes avioniques

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Par défaut
    Champion Seb !!! ça correspond très bien à mes attentes !

    Il y a juste une chose, à chaque fois que j'efface mon texte de la combo, j'ai mon message "non trouvé" qui s'affiche...

    J'ai pas encore regardé d'où venait le problème mais en tout cas merci je tournais en rond!!

  15. #15
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Re,
    C normal car quand tu effaces le combo lui relance la sub combobox-change parce que pour lui tu saisis une autre valeur donc la sub se lance et comme il n y a rien de saisi dans le combo il ne trouve rien.

    Pour palier a cela il faut changer la sub change et mettre en clic avec bouton "recherche"
    Ou alors mettre une condition if valeur combo isempty alors rien faire.
    Seb

  16. #16
    Membre averti
    Homme Profil pro
    Ingénieurs systèmes avioniques
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieurs systèmes avioniques

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Par défaut
    Re seb,

    Je reviens a ce que je voulais faire au début! Parfait!

    Merci a toi!

  17. #17
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    RE,

    C parfait alors, bon courage pour le suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Excel]: formatter en couleurs RGB
    Par doringen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2007, 16h54
  2. Excel, changer la couleur d'une cellule ?
    Par marot_r dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/06/2006, 21h19
  3. Export Excel - Gestion des couleurs
    Par Shansson dans le forum Access
    Réponses: 7
    Dernier message: 21/04/2006, 15h25
  4. Réponses: 1
    Dernier message: 08/03/2006, 20h07
  5. [VBA EXCEL] changer la couleur du texte de cellules
    Par dume75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/02/2006, 23h08

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