XL pour MAC (RESOLU) Macro Pour Contrôler cohérence cellules

luno123

XLDnaute Occasionnel
Bonjour,

J'ai un contrôle récurrent que j'effectue sur des données importées (onglet BASE) de notre ERP. Des soucis d'affectation peuvent exister. Pour un contrôle rapide et efficace `, je souhaiterais:
- 1. j'alimente l'onglet BASE
- 2. Je lance un contrôle automatique qui vérifiera à partir de la feuille REFERENCE, que toutes les lignes de la colonne C (Analytique Tiers Articles) de BASE ont été codifiées selon la feuille REFERENCE. Par exemple si dans BASE, une ligne de 1ENERGIE comporte en ANALYTIQUE TIERS ARTICLES autres que les codifications PRAMBOPO; PRINBOGC; PRAMBBCH; PRRCBOGC; PRSCBBCH , toute la ligne sera colorée en rouge.
Ainsi, je n'aurai qu'à sélectionner toutes les lignes en rouge pour modifier l'erreur.
NB: il faudrait se garder la possibilité de rajouter ou supprimer des lignes dans la feuille REFERENCE sans perturber la macro.

Merci d'avance pour votre aide précieuse.

Luno
 

Pièces jointes

  • Contrôle CA.xlsx
    17.3 KB · Affichages: 26

luno123

XLDnaute Occasionnel
Inspecteur Columbo, il s'agit sans doute d'une erreur.
C'est aussi peut être ce que recherche à voir Luno.
Je mets le fichier (à voir si ok)
Bruno
@ Bruno

Comme l'inspecteur m'a mis sur la piste, j'ai effectué un petit contrôle.
Pour alimenter la feuille REFERENCE, j'ai fait copie-coller des colonnes B (SEGMENTS) et D (Reference) de l'onglet Base.
Donc normalement, quand je lance la macro, je ne devrais avoir aucune cellule jaune. Et pourtant, j'en ai. S'agit-il des doublons?
 

Columbo

XLDnaute Nouveau
Bonjour Luno&Bruno,
J'ai compris qu'on devait mettre en couleur les lignes de l'onglet Base lorsqu'il ne trouve pas la combinaison Segment+Référence.
Je rejoins Luno, lorsqu'on lance la macro, elle devrait retourner aucun résultat coloré pour cet exemple car toutes les combinaisons de l'onglet Base sont présentes dans l'onglet Référence.
 

luno123

XLDnaute Occasionnel
Bonjour Luno&Bruno,
J'ai compris qu'on devait mettre en couleur les lignes de l'onglet Base lorsqu'il ne trouve pas la combinaison Segment+Référence.
Je rejoins Luno, lorsqu'on lance la macro, elle devrait retourner aucun résultat coloré pour cet exemple car toutes les combinaisons de l'onglet Base sont présentes dans l'onglet Référence.
Effectivement inspecteur,et pour s'assurer que la macro fonctionne bien, on peut s'amuser à modifier dans l'onglet BASE, une ou deux références qu'on pourrait nommer BRUNO & COLUMBO sur deux lignes, que la macro ne devrait pas trouver dans la feuille REFERENCE
 

Columbo

XLDnaute Nouveau
Bonjour Bruno&Luno,
Merci pour le code, il fonctionne bien.
Un petit détail : lorsque je fais une modif sur les lignes 2, 3, 4, 5, 6 de l'onglet Base, la couleur se met bien en orange.
Par contre lorsque je fais une modif en plein milieu, la couleur ne se met pas à jour sur les lignes modifiées.
 

Columbo

XLDnaute Nouveau
Luno, Bruno,
Je précise que je ne suis pas un spécialiste de VBA.
Voici le code que j'ai réussi à modifier (avec mes notions).
@Bruno, je rencontre un problème pour mettre les lignes en couleurs :
Lorsque toutes les références sont dans les 2 onglets, toutes les cellules vides de l'onglet base se mettent en orange.
Lorsque je modifie la ligne 2 et à partir de la ligne 190 jusqu'à la fin pour qu'elles tombent en #N/A, elles ne sont pas toutes mises en couleur.
Range("A2:G2", Range("A2:G2").End(xlDown)).Interior.Color = RGB(255, 192, 0)
J'ai l'impression que le "End(xlDown))" ne fait pas son travail correctement.
Est-ce que tu as une idée de pourquoi la macro réagit de cette manière?
Merci
 

Pièces jointes

  • Contrôle CA-THE END-v2.xlsm
    28.7 KB · Affichages: 2

youky(BJ)

XLDnaute Barbatruc
J'ai pas tout compris Columbo >>en plein milieu
De toute façon j'avais oublié une ligne dans ma macro et qui change les trucs.
C'est sur que tu portes bien ton nom et tu me lâche pas les basquettes
Bruno
 

Pièces jointes

  • Contrôle CA-THE END.xlsm
    28 KB · Affichages: 5

Columbo

XLDnaute Nouveau
Bravo Bruno, le code fonctionne très bien.
Lorsque je parlais de faire des tests en plein milieu, il s'agit de modification que j'apportais au mileu de l'onglet Base de manière à forcer la macro à mettre en couleur.
Quand je vais dire ça à ma femme :)
 

youky(BJ)

XLDnaute Barbatruc
Ben Columbo pour tes 1er messages chapeau....
Inscrit depuis seulement hier . . .
Très belle enquête menée digne de la série TV
Donc bienvenu sur XLD , je souhaite encore te voir dévoiler les mystères de ce qui nous échappe.
Au plaisir de te retrouver sur d'autres post.
Bruno
 

youky(BJ)

XLDnaute Barbatruc
Re, bonjour les amis,
Hier soir j'ai écris la macro dans la précipitation sans trop réfléchir.
Je remets le fichier avec une macro performante.
J'utilise le dictionnaire de vba.
Je laisse le soin à Columbo de décortiquer le code.
Bruno
ici le code modifié
VB:
Sub test()
Set dico = CreateObject("Scripting.Dictionary")
With Feuil2
bas = .[B65000].End(3).Row
For k = 2 To bas
tx = .Cells(k, 1) & .Cells(k, 2)
 dico.Item(tx) = dico.Item(tx)
Next
End With
For k = 2 To [B65000].End(3).Row
tx = Cells(k, 2) & Cells(k, 4)
If Not dico.Exists(tx) Then Range("A" & k & ":E" & k).Interior.Color = 49407
Next
Range("A1:E" & bas).AutoFilter Field:=3, Criteria1:=RGB(255, _
        192, 0), Operator:=xlFilterCellColor
End Sub
 

Pièces jointes

  • Contrôle CA-THE END(2).xlsm
    28.3 KB · Affichages: 4

luno123

XLDnaute Occasionnel
Re, bonjour les amis,
Hier soir j'ai écris la macro dans la précipitation sans trop réfléchir.
Je remets le fichier avec une macro performante.
J'utilise le dictionnaire de vba.
Je laisse le soin à Columbo de décortiquer le code.
Bruno
ici le code modifié
VB:
Sub test()
Set dico = CreateObject("Scripting.Dictionary")
With Feuil2
bas = .[B65000].End(3).Row
For k = 2 To bas
tx = .Cells(k, 1) & .Cells(k, 2)
dico.Item(tx) = dico.Item(tx)
Next
End With
For k = 2 To [B65000].End(3).Row
tx = Cells(k, 2) & Cells(k, 4)
If Not dico.Exists(tx) Then Range("A" & k & ":E" & k).Interior.Color = 49407
Next
Range("A1:E" & bas).AutoFilter Field:=3, Criteria1:=RGB(255, _
        192, 0), Operator:=xlFilterCellColor
End Sub
Bonjour Bruno, Bonjour Columbo,

il y a une erreur quand je lance la macro sur cette partie:
Set dico = CreateObject("Scripting.Dictionary")
With Feuil2
bas = .[B65000].End(3).Row
For k = 2 To bas
tx = .Cells(k, 1) & .Cells(k, 2)
dico.Item(tx) = dico.Item(tx)
Next
End With
For k = 2 To [B65000].End(3).Row
tx = Cells(k, 2) & Cells(k, 4)
If Not dico.Exists(tx) Then Range("A" & k & ":E" & k).Interior.Color = 49407
Next
Range("A1:E" & bas).AutoFilter Field:=3, Criteria1:=RGB(255, _
192, 0), Operator:=xlFilterCellColor
End Sub
 

Statistiques des forums

Discussions
312 185
Messages
2 086 012
Membres
103 093
dernier inscrit
Molinari