Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/10/2011, 18h34   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
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.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 11h11   #2
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
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.
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 12h18   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
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.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 15h03   #4
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
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 :
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
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 15h57   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
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?
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 16h07   #6
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
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.
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 16h17   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
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.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 19h05   #8
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Exemple:

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

Code :
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 :
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 !!
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 19h42   #9
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
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 :
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
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 20h04   #10
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
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 :
Set Plage = .Range("A1:A500")
ajoutes le nom de ta feuille pour eviter l'embrouille:
Code :
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).
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 20h21   #11
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
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.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 20h58   #12
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Regardes avec:

Code :
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.
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 21h35   #13
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
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.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h26.


 
 
 
 
Partenaires

Hébergement Web