[VBA Excel 2K] Comparaison

Résolu/Fermé
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 - 23 juil. 2009 à 10:12
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 - 24 juil. 2009 à 08:35
Bonjour,
Je voudrais savoir comment comparer les valeurs de deux ranges de cellules.
Je m'explique avec un exemple :
J'ai une colonne avec
1
2
3
4
5
Et une autre avec
7
4
2
Et je voudrais comparer de les deux colonnes de tel sorte que excel m'affiche une msgbox disant
"7 n'est pas dans la liste de la premiere colonne"

Merci d'avance :)
A voir également:

8 réponses

ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
23 juil. 2009 à 13:57
Salut
J'ai peut être une solution mais c'est un peu de la bidouille
Disons que tu compares ta deuxième colonne à ta première...

Dans un premier temps tu utilise une troisième colonne qui référence les cellules de la deuxième colonne qui ne sont pas dans la première:

For i = x to y
'x correspond au numéro de la première ligne utile de la deuxième colonne et y le numéro de la dernière
For j = w to z
'w correspond au numéro de la première ligne utile de la première colonne et z le numéro de la dernière
if Sheets("Nomdela feuille").cells(i,2)=Sheets("Nomdela feuille").cells(j,1) then
Sheets("Nomdela feuille").cells(i,3)=1
end if
next j
next i

Cette étape va définir toute les cellules qui existent dans les deux colonnes
ensuite tu recherche dans la troisième colonne les cellules vides et tu affiche une msg box signifiant l'abscence de ta valeur dans la liste:

Dim val as string
'On crée une variable val qui prend la valeur du contenu de la cellule (i,2)

for i = x to y
Val=Sheets("Nomdela feuille").cells(i,2).value
if Sheets("Nomdela feuille").cells(i,3)="" then
msg box(Val & "présent dans la deuxième colonne n'est pas dans la première")
end if
next i

Voilà, c'est un peu long et un peu tordu mais ça doit marché...
Tu troiuvera peut être plus court avec d'autres personnes...
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
23 juil. 2009 à 14:00
donc, disons que 1 2 3 4 5 est respectivement en A1 A2 A3 A4 A5 et 7 4 3 est en B1 B2 B3

ValeurNonComune = ""
B = 1

ValCherche = Worksheets("Feuil1").Cells(B, 2)
Do While ValCherche <> ""
With Worksheets("Feuil1").Range("a1:a500")
Set trouvé1 = .Find(ValCherche, LookIn:=xlValues)
If trouvé1 Is Nothing Then
ValeurNonComune = ValeurNonComune & ValCherche & ";"
End If
End With
B = B + 1
ValCherche = Worksheets("Feuil1").Cells(B, 2)

Loop
MsgBox Left(ValeurNonComune, Len(ValeurNonComune) - 1) & " introuvable"
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
23 juil. 2009 à 14:35
Je comprends rien à ton code :'(
xlValues ? qu'est-ce ?
"Set" Qu'est-ce ?
Je dois remplacer "ValCherche et Valcommune" par quelque chose ?
Cell(b,2) => Qu'indique le "2" ?
Le B de B= B+1 à un rapport avec le B de Cell(B,2) ?
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
23 juil. 2009 à 14:43
xlValues ? qu'est-ce ?

il va chercher la valeur de la cellule.. donc meme si c'est une formule, il prendra le resultat de cette formule

"Set" Qu'est-ce ?

Set me sert à affecter le résultat de l objet .find à trouvé1

Je dois remplacer "ValCherche et Valcommune" par quelque chose ?

Non il se débrouille tout seul

Cell(b,2) => Qu'indique le "2" ?

La 2ème colonne (en l occurrence B, mais tu peux donner un nom à cette colonne)


Le B de B= B+1 à un rapport avec le B de Cell(B,2) ?

ben oui, c'est la meme variable B.. elle sert à changer de ligne.. passer de B1 à B2...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
23 juil. 2009 à 14:48
Je retire ce que j'ai dis, j'ai supprimer deux lignes de codes que j'avais écris -_- indispensable
J'te dis si j'ai encore un soucis dans 2 min :p
Merci JJsteing
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
23 juil. 2009 à 15:04
Je pense qu'il y a un soucis dans ton code, dans le cas ou "ValeurNonComune" est vide :
MsgBox Left(ValeurNonComune, Len(ValeurNonComune) - 1) & " introuvable" ne peut pas marcher.
Pour corriger ça, j'ai mis un "If ValeurNonComune <> "" Then" juste avant =)

Tout fonctionne comme je le voulais ! Merci !!! =) J'en apprends tous les jours avec toi !
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 08:33
ok, J'ais pas dit que mon code était parfait, mais je pense qu il a le mérite de marcher et d etre assez simple. Apres, il faut l adapter à ce que tu veux en faire ;)

Au plaisir de t aider si tu as encore besoin ;)
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
24 juil. 2009 à 08:35
Alors ça pour marcher, il marche ! J'suis aux anges ^^
0