Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recherche de présence de caractères en double

15 réponses
Avatar
jip
Bonjour
J'ai un tableau excel 2010 de 12500 lignes environ contenant des donn=E9es =
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=E9paration "-" pour intervalle et ";" pour autre cote)

J'aimerais savoir si des =E9l=E9ments sont r=E9p=E9t=E9s 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 =EAtre seul dans la cellule, il peut =EAtre 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
=20

10 réponses

1 2
Avatar
DanielCo
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
Avatar
jip
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.
Avatar
DanielCo
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.
Avatar
jip
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
Avatar
DanielCo
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
Avatar
jip
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
Avatar
DanielCo
elance cette macro et donne-moi les 3 valeurs affichées :

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



Quelle est ta version d'Excel ?
Avatar
jip

Quelle est ta version d'Excel ?



Excel 2010
Avatar
DanielCo
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
Avatar
jip
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.
1 2