XL 2013 Ne pas Compter les doublons

stf4-67

XLDnaute Nouveau
Bonjour

Je recherche une âme charitable qui pourrait m'aider a me dépatouiller avec excel 2013

J'ai une feuille de calcul avec des trajets entre différentes villes

A1 ville de départ A2 Ville d'arrivé
Paris Rome
Rome Nice
Lille Paris
Nice Lille

Etc

Je cherche a comptabiliser dans une cellule indépendante le nombre de ville unique présentent dans les colonnes.

J'ai appliqué une Mise en forme conditionnelle pour afficher les valeurs en double mais ne n'arrive pas a les compter de façon unique .

Auriez vous une solution a me proposer pour répondre a mon besoin ?

merci d'avance de votre aide
 
Solution
Bonjour stf4-67, le forum,
VB:
Sub Villes_Lettre()
Dim tablo, lettre$, d As Object, e
tablo = [A1:B50] 'à adapter
lettre = "P" 'majuscule, modifiable
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
For Each e In tablo
    If UCase(Left(e, 1)) = lettre Then d(e) = ""
Next
MsgBox IIf(d.Count, Join(d.keys, vbLf), "Aucune ville"), , "Villes lettre " & lettre & IIf(d.Count, " : " & d.Count, "")
End Sub
Bon week-end.

job75

XLDnaute Barbatruc
Bonjour stf4-67, bienvenue sur XLD, Roblochon,

A priori c'est A1 ville de départ B1 Ville d'arrivée non ?

Donc exécutez cette macro qui traite les colonnes A et B :
VB:
Sub CompteVillesUniques()
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
For Each c In ActiveSheet.UsedRange.Resize(, 2).Offset(1) '1ère et 2ème colonnes sans les en-têtes
    If c <> "" Then d(c.Value) = ""
Next
MsgBox d.Count & " villes uniques", , "Comptage"
End Sub
A+
 

job75

XLDnaute Barbatruc
S'il y a beaucoup de villes un tableau VBA (matrice) est nettement plus rapide :
VB:
Sub CompteVillesUniques()
Dim d As Object, tablo, e
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
tablo = ActiveSheet.UsedRange.Resize(, 2).Offset(1) 'matrice, plus rapide
For Each e In tablo
    If e <> "" Then d(e) = ""
Next
MsgBox d.Count & " villes uniques", , "Comptage"
End Sub
 

stf4-67

XLDnaute Nouveau
Merci JOB75 , votre macro fonctionne a merveille ,2 petites questions si vous me le permettez
Comment définir d'une par une sélection A1:B50 plutôt que l'ensemble des colonnes ? et d'autre part comment faire pour afficher les villes dont la lettre comment par P dans la boite de dialogue avec le nombre total de ville ?
merci ::
 

job75

XLDnaute Barbatruc
Bonjour stf4-67, le forum,
VB:
Sub Villes_Lettre()
Dim tablo, lettre$, d As Object, e
tablo = [A1:B50] 'à adapter
lettre = "P" 'majuscule, modifiable
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
For Each e In tablo
    If UCase(Left(e, 1)) = lettre Then d(e) = ""
Next
MsgBox IIf(d.Count, Join(d.keys, vbLf), "Aucune ville"), , "Villes lettre " & lettre & IIf(d.Count, " : " & d.Count, "")
End Sub
Bon week-end.
 

Discussions similaires

Réponses
5
Affichages
739
Réponses
7
Affichages
731

Statistiques des forums

Discussions
312 490
Messages
2 088 881
Membres
103 981
dernier inscrit
vinsalcatraz