VBA - liste sans doublon

Bonjour,

J'ai une petite macro qui permet de compter le nombre d'occurence dans une colonne et de reporter le résultat à côté. le problème est quand la colonne est vide il reporte quand même une valeur...

Le but étant juste que si il y a rien à compter, qu'il fasse aucun rapport.

Voici le code:

Sub test()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each cc In Range(Sheets("Matrice").Range("A2"), Sheets("Matrice").Range("A65000").End(xlUp))
    temp = cc
    mondico(temp) = mondico(temp) + 1
  Next cc
  Sheets("Matrice").[D2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  Sheets("Matrice").[E2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
End Sub

Merci d'avance

Bonjour

Ajoute une condition :

Sub test()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each cc In Range(Sheets("Matrice").Range("A2"), Sheets("Matrice").Range("A65000").End(xlUp))
    If cc <> "" Then
       temp = cc
       mondico(temp) = mondico(temp) + 1
    End If
  Next cc
  Sheets("Matrice").[D2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  Sheets("Matrice").[E2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
End Sub

Bye !

bonjour

pourquoi pas une formule de type SOMMEPROD ? ou un TCD ?

tu as 4 listes, on ne sait pas leur rôle..

faute d'explications plus précises (je veux compter le nombre de NC contenues dans la colonne ZZZ sous condition de WWWW) impossible de te faire la formule

Bonjour jmd,

il récupère il compte quand même le mot de la première colonne.

Ben en fait c'est que j'ai un tableau avec plus de 30 tableau de ce style à calculer, et je préfère le VBA pour les mise à jours qui sont plus simple et prenne moins de place qu'un TCD

Merci en tout cas de ton aide

re

je ne comprends pas :

  • la 1ère colonne contient des dates et pas de mots.
  • tu dis avoir des problèmes avec la colonne I
  • tu as 30 tableaux : pourquoi ne pas les réunir (en ajoutant si besoin une colonne de référencement) ? ou bien faire des SOMMEPROD ou bien des TCD ?

joins au moins 2 tableaux (supprime les zones inutiles pour ta question) et écris en clair ce que tu souhaites obtenir.

bonjour,

Essaie :

Sub test()
Dim i&, k&, mondico, temp
With Sheets("Matrice")
i = .Cells(65535, 1).End(xlUp).Row
If i > 1 Then
Set mondico = CreateObject("Scripting.Dictionary")
For k = 2 To i
temp = .Cells(k, 1)
mondico(temp) = mondico(temp) + 1
Next
.[D2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
.[E2].Resize(mondico.Count, 1) = Application.Transpose(mondico.items)
End If
End With
End Sub

A+

Bonjour Galopin01,

Merci beaucoup ça fonctionne nickel

Rechercher des sujets similaires à "vba liste doublon"