affichage des informations communes

rak

XLDnaute Junior
Bonsoir tous le monde


je me trouve face à un cas qui me demande votre aide :confused::confused:
je m'explique je veux comparer deux plages de cellules , pour cela j'ai essayé de creer une macro permettant d'afficher sur un fond rouge les données communes entre les deux plages,mais cela ne marche pas.

dont voici le code et le fichier ci joint

Dim Plage1 As Range, Plage2 As Range, VValeur As Integer
Dim Compteur As Integer
Dim Nbrecellules1 As Integer, Nbrecellules2 As Integer

Set Plage1 = Range("A5", [A5].End(xlDown))
Set Plage2 = Range("C5", [C5].End(xlDown))

Nbrecellules1 = Plage1.Count
Nbrecellules2 = Plage2.Count

Range("A5").Select
For Compteur = 1 To Nbecellules1
VValeur = Selection.Value
If WorksheetFunction.CountIf(Plage2, VValeur) > 0 Then
With Selection.Interior
.ColorIndex = 3
End With
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Next
Range("C5").Select
For Compteur = 1 To Nbecellules2
VValeur = Selection.Value
If WorksheetFunction.CountIf(Plage1, VValeur) > 0 Then
With Selection.Interior
.ColorIndex = 3
End With
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Next
Merci encore une nouvel fois de votre aide
:cool:
End Sub
 

Pièces jointes

  • EXPL.xlsm
    18.6 KB · Affichages: 77
  • EXPL.xlsm
    18.6 KB · Affichages: 81
  • EXPL.xlsm
    18.6 KB · Affichages: 77
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : affichage des informations communes

Bonsoir rak,

On partira du principe que tu sais qu'une mise en forme conditionnelle aurait permis de faire la même chose!? ... Pour le reste, il suffirait que, dans ton code, les variables ne changent pas de nom en cours de route :D nbrecellules1 devient nbecellules1 (idem avec sa grande soeur nbrecellules2) ... on peut dire qu'elles manquent d'r' (oui, je sais, c'est mauvais, ... mais il est tard!)

Bonne nuit,
 

Marlysa

XLDnaute Nouveau
Re : affichage des informations communes

Bonjour,

Pas besoin de macro pour cela. Une simple mise en forme COnditionnelle convient:

Mise en forme conditionnelle
Utiliser une formule pour déterminer quelle formule ...
=ESTNA(RECHERCHEV(C6;$A$5:$A$12;1;FAUX))
Appliquer La mise en forme voulue (Dans l'exemple un fond vert).
 

Pièces jointes

  • EXPL.xlsm
    18.7 KB · Affichages: 78
  • EXPL.xlsm
    18.7 KB · Affichages: 83
  • EXPL.xlsm
    18.7 KB · Affichages: 69

Modeste

XLDnaute Barbatruc
Re : affichage des informations communes

Bonjour Marlysa,

Une MFC aurait suffi en effet ... c'était d'ailleurs le sens du début de mon message
On partira du principe que tu sais qu'une mise en forme conditionnelle aurait permis de faire la même chose!?

Par ailleurs, tant qu'à essayer de simplifier, il me semble qu'on pouvait utiliser:
"la formule est" --> =NB.SI($A$5:$A$12;$C5), sur la plage C5:C150. Enfin, la demande était: mettre les doublons en couleur ... ta proposition fait l'inverse, si je lis bien!?
 

rak

XLDnaute Junior
Re : affichage des informations communes

Bonjour lorsque j'essaie de mettre des valeurs du type 1aaa23gf laformule vba ne marche pas et mindique. Erreur 13 pourriez vous maidez merci
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : affichage des informations communes

Bonjour rak,

Tu as déclaré VValeur As Integer ... tenter d'y stocker du texte provoque une erreur, inévitablement!
Dans ton code, tu as des ".Select" à chaque itération dans ta boucle "For", ça ne provoque pas d'erreur, mais risque de ralentir ton code sensiblement. Par ailleurs, tu pourrais éviter de stocker la valeur de la cellule dans une variable avant de faire un CountIf. Tu pourrais donc simplifier ta première boucle de la manière suivante:
VB:
With Sheets("Feuil2")
For Compteur = 1 To Nbrecellules1
If WorksheetFunction.CountIf(Plage2, .Range("A" & Compteur + 4)) > 0 Then
    .Range("A" & Compteur + 4).Interior.ColorIndex = 3
End If
Next
End With
Idem avec la seconde boucle (je te laisse le soin d'adapter)

Ceci dit, encore une fois, une MFC ferait exactement la même chose!
 

rak

XLDnaute Junior
Re : affichage des informations communes

Bonjour Modeste

Merci de ta reponse ; j'ai essayé plusieurs fois mais cela ne marche pas:confused::confused:, voici mon exemple ci dessous .



Pouriez vous me venir m'aidez :cool:

merci
 

Pièces jointes

  • exemple2.xlsx
    89.6 KB · Affichages: 87
  • exemple2.xlsx
    89.6 KB · Affichages: 92
  • exemple2.xlsx
    89.6 KB · Affichages: 88

Modeste

XLDnaute Barbatruc
Re : affichage des informations communes

Bonjour rak, le forum,

Que quelqu'un t'aide, ce doit être possible, mais
- Tu ne dis pas si tu continues à chercher une solution via macro ou MFC (comme tu n'as pas remis le code dans le fichier, faut-il en déduire que tu choisirais la MFC :confused:)
- Si c'est la MFC qui t'intéresse, tu as préfixé la discussion avec [Toutes versions], mais les fichiers que tu déposes sont des fichiers Excel 2007 ... dont une des particularités est que les possibilités de MFC sont "démultipliées". Que faut-il choisir?
- Dans ton premier fichier, les items de la plage1 étaient uniques dans cette même plage ... Ce n'est plus le cas, cette fois-ci. Il faudrait donc que tu re-précises ce qu'il faut détecter et où?


P.S.: tant qu'à faire, il faudrait préciser aussi pourquoi, dans ton dernier fichier, il n'y a aucun doublon!? Les caractères encodés sont identiques mais les emplacements des espaces sont différents entre Plage1 et Plage2 :eek:

1PA7 A3 H CA 5 04 A0 80 est donc différent de 1P A7 A3 H CA 5 04 A0 80 ... Sont-ce ceux-là qu'il faudrait repérer ou s'agit-il d'une "coquille"
 
Dernière édition:

rak

XLDnaute Junior
Re : affichage des informations communes

Bonjour Modeste

Désoler pour le manque:confused:de pécision de ma part ( dis donc à 5h du mat je suis veraiment fatiguué loo:confused::confused:l) ;
Alors je recherche une solution que ce soit une mfc ou macro , les données entre les deux plages de données
1PA7 A3 H CA 5 04 A0 80 est égale à 1P A7 A3 H CA 5 04 A0 80 il sa'git donc bien d'une coquille.
Pour ma part ayant peut de connaissance en mfc je voulais essayer une macro mais celle ci c'est retrouvé innefficace meme avec les modification conseillées
Ajout du code ci dessous :
Code vba:
With Sheets("Feuil2")
For Compteur = 1 To Nbrecellules1
If WorksheetFunction.CountIf(Plage2, .Range("A" & Compteur + 4)) > 0 Then
.Range("A" & Compteur + 4).Interior.ColorIndex = 3
End If
Next
End With


Merci et encore une fois édsolé du manque d'information:confused:
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 445
Membres
103 213
dernier inscrit
Poupoule