recherche de présence de caractères en double

Le
jip
Bonjour
J'ai un tableau excel 2010 de 12500 lignes environ contenant des données =
de ce type :

16X/8/BIS ; 17X/1 - 17X/6

10B/281 - 10B/295

47J/115 - 47J/117 ; 47J/121 - 47J/122 ; 47J/123/1 - 47J/123/3 ; 47J/124/4 -=
47J/124/7 ; 47J/125/14 - 47J/125/17 ; 47J/125/19 ; 47J/125/8 - 47J/125/12 =
; 47J/126/24 - 47J/126/29

etc
(séparation "-" pour intervalle et ";" pour autre cote)

J'aimerais savoir si des éléments sont répétés dans le tableau
Exemple "10B/281 - 10B/295" apparait-il quelque part en doublon ? Mais ce n=
'est pas une recherche de doublon il me semble car ce "10B/281 - 10B/295" p=
eut ne pas être seul dans la cellule, il peut être par exemple au milie=
u de "15J/287/1 - 15J/287/2 ; 15J/288/1 - 15J/288/2 ; 15J/289/1 - 15J/289/2=
; 10B/281 - 10B/295 ; 15J/290/1 - 15J/290/4 ; 15J/291/1 - 15J/291/2".
Je ne vois pas de solution ?
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #26373009
Bonjour,
Je ne vois qu'une solution par macro. Est-ce que cela te gênes ?
Danieel
jip a émis l'idée suivante :
Bonjour
J'ai un tableau excel 2010 de 12500 lignes environ contenant des données de
ce type :

16X/8/BIS ; 17X/1 - 17X/6

10B/281 - 10B/295

47J/115 - 47J/117 ; 47J/121 - 47J/122 ; 47J/123/1 - 47J/123/3 ; 47J/124/4 -
47J/124/7 ; 47J/125/14 - 47J/125/17 ; 47J/125/19 ; 47J/125/8 - 47J/125/12 ;
47J/126/24 - 47J/126/29

etc
(séparation "-" pour intervalle et ";" pour autre cote)

J'aimerais savoir si des éléments sont répétés dans le tableau
Exemple "10B/281 - 10B/295" apparait-il quelque part en doublon ? Mais ce
n'est pas une recherche de doublon il me semble car ce "10B/281 - 10B/295"
peut ne pas être seul dans la cellule, il peut être par exemple au milieu de
"15J/287/1 - 15J/287/2 ; 15J/288/1 - 15J/288/2 ; 15J/289/1 - 15J/289/2 ;
10B/281 - 10B/295 ; 15J/290/1 - 15J/290/4 ; 15J/291/1 - 15J/291/2". Je ne
vois pas de solution ? Merci
jip
Le #26373025
Le lundi 19 octobre 2015 11:36:20 UTC+2, DanielCo a écrit :
Bonjour,
Je ne vois qu'une solution par macro. Est-ce que cela te gênes ?
Danieel



Cela ne me gêne pas, merci d'avance.
DanielCo
Le #26373027
Essaie la macro suivante. Si elle te convient, on remplacera les messages par
une copie des doublons sur une autre feuille :
Sub doublons()
Dim C As Range, Tabl(100000) As String, Ctr As Long
Ctr = -1
For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
ligne = Split(C.Value, " ; ")
For Each Item In ligne
If Not IsNumeric(Application.Match(Item, Tabl, 0)) Then
Ctr = Ctr + 1
Tabl(Ctr) = Item
Else
MsgBox "doublon : " & Item
End If
Next Item
Next C
End Sub

Daniel
jip a utilisé son clavier pour écrire :
Le lundi 19 octobre 2015 11:36:20 UTC+2, DanielCo a écrit :
Bonjour,
Je ne vois qu'une solution par macro. Est-ce que cela te gênes ?
Danieel



Cela ne me gêne pas, merci d'avance.
jip
Le #26373026
Le lundi 19 octobre 2015 13:34:02 UTC+2, DanielCo a écrit :
Essaie la macro suivante. Si elle te convient, on remplacera les messages par
une copie des doublons sur une autre feuille :



Erreur d'éxécution '13'
Incompatibilité de type
sur la ligne
If Not IsNumeric(Application.Match(Item, Tabl, 0)) Then
DanielCo
Le #26373035
Erreur d'éxécution '13'
Incompatibilité de type
sur la ligne
If Not IsNumeric(Application.Match(Item, Tabl, 0)) Then



Relance cette macro et donne-moi les 3 valeurs affichées :
Sub doublons()
Dim C As Range, Tabl(100000) As String, Ctr As Long
Ctr = -1
For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
ligne = Split(C.Value, " ; ")
For Each Item In ligne
On Error GoTo FinErr
If Not IsNumeric(Application.Match(Item, Tabl, 0)) Then
Ctr = Ctr + 1
Tabl(Ctr) = Item
Else
MsgBox "doublon : " & Item
End If
Next Item
Next C
FinErr:
MsgBox "Ligne : " & C.Row
MsgBox Item
MsgBox Ctr
End Sub
Daniel
jip
Le #26373034
Le lundi 19 octobre 2015 14:34:02 UTC+2, DanielCo a écrit :
> Erreur d'éxécution '13'
> Incompatibilité de type
> sur la ligne
> If Not IsNumeric(Application.Match(Item, Tabl, 0)) Then

Relance cette macro et donne-moi les 3 valeurs affichées :



Ligne 1
2X/1 - 2X/11
-1
DanielCo
Le #26373033
elance cette macro et donne-moi les 3 valeurs affichées :

Ligne 1
2X/1 - 2X/11
-1



Quelle est ta version d'Excel ?
jip
Le #26373037

Quelle est ta version d'Excel ?



Excel 2010
DanielCo
Le #26373041
Excel 2010



Alors :
Sub doublons()
Dim C As Range, Dico As Object, Ligne
Set Dico = CreateObject("Scripting.dictionary")
For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
Ligne = Split(C.Value, " ; ")
For Each Item In Ligne
If Not Dico.exists(Item) Then
Dico.Add Item, Item
Else
MsgBox "doublon : " & Item
End If
Next Item
Next C
End Sub
Daniel
jip
Le #26373045
Le lundi 19 octobre 2015 15:18:39 UTC+2, DanielCo a écrit :
> Excel 2010

Alors :
Sub doublons()
Dim C As Range, Dico As Object, Ligne
Set Dico = CreateObject("Scripting.dictionary")
For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
Ligne = Split(C.Value, " ; ")
For Each Item In Ligne
If Not Dico.exists(Item) Then
Dico.Add Item, Item
Else
MsgBox "doublon : " & Item
End If
Next Item
Next C
End Sub
Daniel



Merci, ça fonctionne, même si les doublons sont affichés un par un, j e les note, il n'y en a pas trop...heureusement
Merci beaucoup.
Publicité
Poster une réponse
Anonyme