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 :

Recherche de valeur identique dans un tableau [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Points : 45
    Points
    45
    Par défaut Recherche de valeur identique dans un tableau
    Bonjour

    Pouvez vous m'aider svp. Je suis complètement novice en VBA Excel. Je recherche une macro qui colorise le fond des cellules dans une feuille d'un classeur suivant une référence de produit. La feuille comporte 60 lignes. A l'intérieur, des références sont identiques. Je souhaite pouvoir repérer tous les articles que je recherche en colorisant le fond des cellules ou ils se trouvent en indiquant le nom du produit à la macro et pouvoir revenir ensuite à son état initial. Merci de votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Points : 104
    Points
    104
    Par défaut
    Avant les macros, tu peux regarder du côté de la mise en forme conditionnelle!!
    Tu selectionnes le contenu de ton tableau (en les grisants)
    tu va dans accueil==>mise en forme conditionnelle==>
    ==>nouvelles regles==>Appliquer valeur unique ou aux doublons
    ==> tu ajoutes une couleur de fond

    Tous les doublons sont mis en evidences!! Et tu peux créer d'autres régles
    sur les mêmes cellules..

    Bon courage.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Points : 45
    Points
    45
    Par défaut
    Merci pour ta réponse mais ce n'est pas exactement ce que je recherche. Je ne souhaite pas que tous les doublons s'affichent d'une couleur. Je veux seulement ceux qui m'intéressent. Exemple je souhaite voir seulement les doublons du produit A, tous les produits A contenu dans la feuille se colorisent. Ensuite les cellules reprennent leur couleurs initiales.

  4. #4
    Membre régulier
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Points : 104
    Points
    104
    Par défaut
    essayes ceci:
    dans un tableau de 4 cases, notes a dans cellule B3 b dans cellule C3
    a dans cellule B4 et b dans cellule C4.

    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
    Sub test_def()
    Dim constante As String
     
    constante = "a" 'constante de recherche exemple dans une inputbox
     
        Range("B3:C4").Select ' a remplacer par une plage definie =>contenu du tableau
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:=constante
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .color = 65535 'couleur de ton choix
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = True
     
        Application.wait Now + TimeValue("00:00:05")
     
        Range("B3:C4").Select
        Selection.FormatConditions.Delete
     
     
    End Sub

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Points : 45
    Points
    45
    Par défaut
    C'est vraiment ce que je cherche! Bravo et merci.
    Par contre, peux-tu me dire stp comment modifier ton code pour retirer la condition de temps. Les cellules doivent rester coloriser et revenir à la couleur initiale quand je le souhaite. Je pense que je dois couper ta macro en 2 parties. Une pour modifier la condition de la mise en forme et l'autre partie pour revenir à l'état standard?
    Pour l'inputbox, il faut donc que je créer un userform avec la liste de mes produits et au clic "ok" ta macro se déclenche?

  6. #6
    Membre régulier
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Points : 104
    Points
    104
    Par défaut
    Tu as trouvé tout seul, il faut diviser cette macro en deux et enlever l'option
    temps (wait).

    Pour la deuxieme demande, effectivement la creation d'une userform est de rigueur avec un choix de liste déroulante.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Points : 45
    Points
    45
    Par défaut
    Je venais de tester avec la macro en 2 parties. Cela fonctionne. Je vais donc essayer de faire cette userform.
    A la place de constante = "b" je dois mettre constante = listbox?
    Merci pour ton aide et surtout ta rapidité de réponse. J'ai d'autres problèmes en VBA j'espère que tu m'apporteras des solutions comme celle-ci.

  8. #8
    Membre régulier
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Points : 104
    Points
    104
    Par défaut
    Exemple:

    Création d'une userform (nom=form) + un bouton, dans le code de cette userform tu colles:

    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
    Private Sub CommandButton1_Click()
     
    Unload form
     
    Sheets("feuil2").Select
     
    On Error Resume Next
        Range("B3:C4").Select ' a remplacer par une plage definie =>contenu du tableau
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:=ComboBox1.Value
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .color = 65535 'couleur de ton choix
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = True
     
     
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
    On Error Resume Next
        Range("B3:C4").Select
        Selection.FormatConditions.Delete
     
    Dim Tablo() As String
    Dim Plage As Range, Cell As Range
    Dim i As Integer
     
    With Sheets("Feuil2")
    Set Plage = .Range("A1:A4")
    End With
     
    ReDim Tablo(0 To Plage.Rows.Count - 1)
    For Each Cell In Plage
    Tablo(i) = Cell.TEXT
    i = i + 1
    Next
     
    Me.ComboBox1.List = Tablo()
     
    End Sub
    Et dans un module tu colles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub lancement()
    form.Show
    End Sub
    Tu Alimentes ta liste sur la feuil2 de "A1 à A4" .
    Eh là ta constante devient ta combobox1.value !!

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Points : 45
    Points
    45
    Par défaut
    Cela fait 2h que je cherche à faire mon userform et je ne trouvais pas comment faire! Vue le code j'aurai pu y passer la nuit sans rien trouver!
    J'ai remplacé le nom des feuilles et les plages de cellules par ceux de mon vrai tableau. La combobox ne charge pas la liste de mes produits?
    La listes des produits se trouve sur la feuille "composants" de A1 à A500.
    La condition de format de cellule se fera sur la feuille "réalisable" dans la plage des cellules D4 à L268.


    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
    Private Sub CommandButton2_Click()
    Unload ConditionCellules
    Sheets("Réalisable").Select
    On Error Resume Next
        Range("D4:L268").Select ' a remplacer par une plage definie =>contenu du tableau
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:=ComboBox1.Value
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 65535 'couleur de ton choix
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = True
     
     
     
     
    End Sub
     
    Private Sub UserForm_Initialize()
    On Error Resume Next
        Range("D4:L268").Select
        Selection.FormatConditions.Delete
     
    Dim Tablo() As String
    Dim Plage As Range, Cell As Range
    Dim i As Integer
     
    With Sheets("COMPOSANTS")
    Set Plage = .Range("A1:A500")
    End With
     
    ReDim Tablo(0 To Plage.Rows.Count - 1)
    For Each Cell In Plage
    Tablo(i) = Cell.text
    i = i + 1
    Next
     
    Me.ComboBox1.List = Tablo()
     
    End Sub

  10. #10
    Membre régulier
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Points : 104
    Points
    104
    Par défaut
    Ta liste à charger doit être dans une colonne à part de ton tableau, ce sont les constantes a,b,c,d etc... dans tons cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = .Range("A1:A500")
    ajoutes le nom de ta feuille pour eviter l'embrouille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = .Range("feuil1!A1:A500")
    ton combobox1 se charge (liste deroulante click sur la barre!)

    pour résumer il te faut un userform(boite de dialogue) , dedans tu mets une liste deroulante(combobox1) et un bouton (commandboutton).

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Points : 45
    Points
    45
    Par défaut
    J'ai bien créé un Userform avec combobox et bouton commande. Mes produits (constante) se trouves sur la feuille "composants" de A1 à A500 et sont indépendants de la feuille "réalisable" ou se trouvent les cellules à chercher. L'userform se charge bien mais rien dans la combobox? Je le charge avec un bouton commande sur la feuille et la macro lancement.
    J'ai mis le nom de la feuille comme tu me dis.

  12. #12
    Membre régulier
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Points : 104
    Points
    104
    Par défaut
    Regardes avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("D4:L268").Select ' a remplacer par une plage definie =>contenu du tableau
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
    Formula1:=ComboBox1.Value
    Formula1:=ComboBox1.Value=> verifies ici si tu as le bon nom?

    Moi j'ai j'ai fait une "zone de liste modifiable" de la boite à outils et non une "zone de liste"!!

    J'ai un essai ici et c'est nickel d'ailleurs merci pour l'idée! je met cette macro dans ma bibliotheque.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Points : 45
    Points
    45
    Par défaut
    De rien pour l'idée. Si tu veux j'ai des tonnes d'idées!

    Moi aussi j'ai mis une zone de liste modifiable. J'ai bien le bon nom au niveau de formula1. Mais ça ne charge rien. Si je rentre un des codes produits que je cherche, ça colorie bien la cellule. Mais la combobox ne charge rien!

    Cela fonctionne !
    Tu es génial. Merci beaucoup.
    J'ai juste changé de feuille pour trouver mes produits. Je ne comprends pas pourquoi.
    Par contre je n'avais pas fait attention, mais toutes les mises en formes conditionnelles des cellules sélectionnées se trouvent effacées après l'utilisation de la macro.
    Bon je continue mon fichier. Je pense que j'aurai de nouveau besoin d'aide. Car des idées comme celle-ci j'en ai d'autres. Je ne suis qu'au début de mon travail.

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

Discussions similaires

  1. Comptez le nombre de valeurs identiques dans un tableau
    Par Rafapouf dans le forum Langage
    Réponses: 7
    Dernier message: 25/09/2014, 11h18
  2. supprimer valeur identique dans un tableau
    Par drick35 dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2014, 16h46
  3. [Débutant] Repérer des valeurs identiques dans un tableau.
    Par Olimpe dans le forum MATLAB
    Réponses: 28
    Dernier message: 14/11/2013, 13h37
  4. [WD-2003] Compter le nombre de valeurs identiques dans un tableau word
    Par borocam dans le forum VBA Word
    Réponses: 4
    Dernier message: 20/01/2010, 18h19
  5. recherche de valeur identique dans un tableau
    Par jean tof dans le forum Langage
    Réponses: 9
    Dernier message: 20/06/2006, 13h33

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