Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion perrmi
  • Date de début Date de début

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 !

perrmi

XLDnaute Occasionnel
bonjour,

A partir d'1 colonne de nombres de 2 chiffres.(12-25-32-52...)
j'aimerais extraire les nombres communs de cette colonne qui possedent les meme chiffres.
ici par excemple 25 et 52
voir fichier joint
merci
perrmi
 

Pièces jointes

Dernière édition:
Bonjour à tous

Effectivement, Job75 :
1) Ma proposition ne prend pas systématiquement en charge les doublons
2) Lorsqu'on travaille avec des nombres, souvent, c'est plus simple de faire sans INDEX(.....;LIGNE(....)) et de faire directement avec PETITE.VALEUR(....)
3) Le plus sympa, cela serait de trouver une solution plus polyvalente, traitant des nombres plus grands, avec 3, 4 ou un nombre quelconque de chiffres. Avec des formules, cela me parait peu possible. Avec du VBA, c'est certainement faisable.

@ plus
 
Re, bonjour Laetitia 🙂
3) Le plus sympa, cela serait de trouver une solution plus polyvalente, traitant des nombres plus grands, avec 3, 4 ou un nombre quelconque de chiffres. Avec des formules, cela me parait peu possible. Avec du VBA, c'est certainement faisable.
Oui tout à fait faisable et pas trop difficile si on utilise cette fonction personnalisée pour classer les chiffres :
Code:
Function Classer(n As String) As String
Dim i%, a
If Len(n) < 2 Or Not n Like String(Len(n), "#") Then Exit Function
ReDim a(1 To Len(n))
For i = 1 To UBound(a): a(i) = Mid(n, i, 1): Next
tri a, 1, UBound(a)
Classer = Replace(Join(a, ""), 0, "#") 'NB.SI ignore les zéros non significatifs
End Function

Sub tri(a, gauc, droi)  ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Elle est entrée dans une colonne auxiliaire (à masquer).

Le tableau est organisé en tableau Excel pour qu'elle se recopie automatiquement.

Les formules de la MFC et de l'extraction sont très simples.

Fichier joint.

Finalement tout ça est très intéressant, pour la peine je mets un "J'aime" au post #1.

A+
 

Pièces jointes

Dernière édition:
Bonjour perrmi, le forum,

La solution précédente n'est pas très rapide car le calcul des fonctions NB.SI prend du temps.

Pour aller vite on utilisera le Dictionary avec cette macro dans le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo, doublon(), d As Object, i&, x$
If FilterMode Then ShowAllData 'si la feuille est filtrée
tablo = [T].Resize([T].Rows.Count + 1) 'tableau, plus rapide, au moins 2 éléments
ReDim doublon(1 To UBound(tablo) - 1, 1 To 1)
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(doublon)
    x = Classer(CStr(tablo(i, 1))) 'appelle la fonction
    If x <> "" Then
        If d.exists(x) Then
            doublon(d(x), 1) = tablo(d(x), 1)
            doublon(i, 1) = tablo(i, 1)
        Else
            d(x) = i 'mémorise la ligne
        End If
    End If
Next
Application.EnableEvents = False
[M] = doublon
Application.EnableEvents = True
End Sub
Fichiers (2).

Il n'y a plus de formules, ni en colonne A ni en colonne B (qu'on ne peut pas effacer manuellement).

Le traitement des 1000 nombres se fait chez moi en 0,09 seconde.

A+
 

Pièces jointes

Dernière édition:
- 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
19
Affichages
676
Réponses
3
Affichages
176
Réponses
4
Affichages
258
Réponses
10
Affichages
268
Réponses
1
Affichages
187
Réponses
9
Affichages
304
W
Réponses
23
Affichages
428
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…