[VBA Excel 2K] Comparaison

Résolu
LeDénicheur Messages postés 624 Statut Membre -  
LeDénicheur Messages postés 624 Statut Membre -
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 :)

8 réponses

  1. ben13.51 Messages postés 115 Statut Membre 7
     
    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
  2. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  3. LeDénicheur Messages postés 624 Statut Membre 366
     
    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
  4. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. LeDénicheur Messages postés 624 Statut Membre 366
     
    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
  7. LeDénicheur Messages postés 624 Statut Membre 366
     
    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
  8. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  9. LeDénicheur Messages postés 624 Statut Membre 366
     
    Alors ça pour marcher, il marche ! J'suis aux anges ^^
    0