Code VBA - Equivalent RECHERCHEV
Résolu
Theo.R
Messages postés
585
Statut
Membre
-
Theo.R Messages postés 585 Statut Membre -
Theo.R Messages postés 585 Statut Membre -
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 :-)
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
-
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.