Code VBA - Equivalent RECHERCHEV

Résolu/Fermé
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 - Modifié par Theo.R le 2/02/2015 à 11:27
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 - 4 févr. 2015 à 13:17
Bonjour,

J'ai dans mon doc excel les données suivantes :

- une plage H2:H50000 dans la 3ème feuille qui contient une liste de codes (et de cellules vides), je veux dénombrer les codes n'étant pas dans un référentiel (Cf. donnée suivante), et ce pour l'instant SANS tenir compte des doublons (exemple si j'ai un même code 3 fois dans cette liste et qui n'est pas dans le référentiel, je veux compter 3 et non 1).

- une plage A3:A1000 dans la 7ème feuille qui comporte mon référentiel de codes, soit une liste sans doublons (mais qui peut contenir des vides)

- Je veux afficher mon résultat par Macro VBA dans la cellule M9 de la première feuille.

J'ai créé le code suivant, qui me donne un résultat. Malheureusement ce n'est pas le même que celui que j'obtiens en faisant une RECHERCHEV "à la main"..

Quelqu'un saurait-il ce qui ne convient pas dans mon code au regard de mes données ?

Sub CompteurAnomaliesRef()

'Le "Compteur" sera mon résultat final, le but est qu'il augmente de 1 à chaque code non référencé, les doublons aussi.
Dim Compteur As Long
Compteur = 0

'ma variable i sert à balayer les cellules H2:H50000 une à une pour trouver les codes non référencés
For i = 2 To 50000

'Je définis les plages que je vais utiliser
Dim Rg As Range, Qui As String, Plage As String
Qui = Sheets(3).Range("H" & i).Value
Plage = "A3:A1000"

'Ne pas considérer les cellules vides dans la colonne H2:H50000:
If Qui <> "" Then

'Je fais une recherche dans le référentiel, si elle est concluante, alors le compteur augmente de 1
Set Rg = Sheets(7).Range(Plage).Find(Qui)
If Rg Is Nothing Then
Compteur = Compteur + 1
End If
End If

Next i

'Une fois tous les codes en colonne H2:H500000 examinés, je renseigne mon résultat final dans la celllule voulue
Sheets(1).Range("M9").Value = Compteur

End Sub


Merci d'avance :-)

4 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
3 févr. 2015 à 17:05
Bonjour tous,
J'ai découvert que dans la liste [Référentiel] des codes se trouvent avec des vides à la fin, par exemple [03AAH ] et dans la liste des codes à vérifier c'est [03AAH] (sans les 5 vides à la fin).
Conséquence votre formule le compte comme vrai ce qui veux dire que la différence avec la solution de Gyrus (salutations) est à rechercher dans ce sens.

1
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
3 févr. 2015 à 19:24
Voilà qui explique beaucoup de choses !

Merci beaucoup d'avoir pris la peine d'étudier ce cas qui ne relever pas de VBA ou formules au final ^^' ..

La formule est bonne, je vais modifier directement le référentiel qui est mal saisi ;-)

Bonne soirée
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425 > Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016
3 févr. 2015 à 22:07
Bonjour Theor.R,
Je refais un test perso avec fonction suivante : [
=SI(ESTNA(RECHERCHEV(F2;$D$2:$D$801;1;0));0;1)
] ainsi que la procédure VBA (avec modification de la ligne : [
If Not Rg Is Nothing Then]
) le résultat obtenu est de 1631 pour les deux cas.
Salutations.
Le Pingou
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425 > Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016
4 févr. 2015 à 11:19
Bonjour Theor.R,
Petite correction, j'ai fait le contraire de votre demande et vous pries de m'en excuser, les résultats corrects sont :
Non correspondant au référenciés est de 1617
Correspondant au référenciés est de 1631
Total codes à vérifier est de 3248
Salutations.
Le Pingou
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31 > Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024
4 févr. 2015 à 13:17
Oui j'avais trouvé ça aussi ;)

Merci encore pour votre aide à tous !
0