Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Ne pas Compter les doublons

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
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+
 
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
 
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 ::
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
3 K
N
Réponses
0
Affichages
1 K
Nicolas
N
C
Réponses
2
Affichages
2 K
caroline
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…