OVH Cloud OVH Cloud

Doublons partiels ( conditions au -3 caractères identiques)

7 réponses
Avatar
Swoap
Bonjour a tous.

Je suis entrain de découvrir VBA pour les macros et j'avoue c'est
FANTASTIQUE!
Cependant je bute encore sur beaucoup de choses.

J'explique:
si dans une colonne X on retrouve des mots quasi-identique( + de 3
caractères se suivant identiques) je souhaiterais supprimer les lignes où se
trouve ces doublons. Je precise que ma colonne X contient des noms classé
par ordre alphabétique est donc on peut avoir a la suite par exemple
AURILIS, AURILIS HUILE....

Je sais pas si je suis assez clair, je suis a votre disposition

Merci d'avance

7 réponses

Avatar
Daniel
Bonsoir.
Essaie :

Sub test()
Dim Zon As String, Derligne As Long, c As Range
Dim ResAdr As String, Plage As Range
Range("A1").Select
Derligne = Range("A65536").End(xlUp).Row
Do While ActiveCell.Row <> Derligne
For i = 1 To Len(ActiveCell.Value) - 2
Zon = Mid(ActiveCell.Value, i, 3)
Set c = Range("A:A").Find(Zon)
If Not c Is Nothing Then
ResAdr = c.Address
Do
Set c = Range("A:A").FindNext(c)
Var = c.Address
If c.Address <> ActiveCell.Address Then c.Value =
"!!!§§§!!!"
Loop While Not c Is Nothing And c.Address <> ResAdr
End If
Next i
ActiveCell.Offset(1, 0).Select
Loop
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
If c.Value = "!!!§§§!!!" Then c.Delete
Next c
End Sub

Cordalement.
Daniel
"Swoap" a écrit dans le message de news:
%
Bonjour a tous.

Je suis entrain de découvrir VBA pour les macros et j'avoue c'est
FANTASTIQUE!
Cependant je bute encore sur beaucoup de choses.

J'explique:
si dans une colonne X on retrouve des mots quasi-identique( + de 3
caractères se suivant identiques) je souhaiterais supprimer les lignes où
se trouve ces doublons. Je precise que ma colonne X contient des noms
classé par ordre alphabétique est donc on peut avoir a la suite par
exemple AURILIS, AURILIS HUILE....

Je sais pas si je suis assez clair, je suis a votre disposition

Merci d'avance



Avatar
Hervé
Bonsoir Swoap,

La proc ci-dessous supprime toutes les lignes issu du filtrage. Pour tester,
adapte la plage dans la proc "FiltrerPuisSupprimer" (dans l'exemple
"C2:I24") ainsi que la feuille (ici la feuille active), le numéro de colonne
dans la plage (ici 5 pour la colonne G car la plage commence à la colonne
C), et le critère de recherche (ici "AUR"). Fait un test sur une copie de
ton classeur et non sur l'original afin de voir si cela te convient.
Pour tester, mets le curseur dans la proc "FiltrerPuisSupprimer" puis touche
F5 ou le bouton "Exécuter sub" :

Sub Supprimer(Fe As Worksheet, _
Plage As Range, _
NumCol_Dans_Plage As Integer, _
Texte As String)

With Plage
.AutoFilter NumCol_Dans_Plage, "*" & Texte & "*"
End With

Application.DisplayAlerts = False
Fe.AutoFilter.Range.Delete
Application.DisplayAlerts = True

Set Plage = Nothing
End Sub


Sub FiltrerPuisSupprimer()
Dim Fe As Worksheet
Dim Plage As Range
Dim Critere As String
Dim Colonne As Integer

Set Fe = ActiveSheet
Set Plage = Fe.Range("C2:I24")
Colonne = 5
Critere = "AUR"

'la plage commence à C2 pour éviter
'la suppression de la ligne des noms
'de champs.
'ATTENTION, le numéro de colonne est
'le numéro que la colonne a dans la
'plage, qui n'est donc pas forcément
'celui quelle a dans la feuille. Ici,
'le numéro 5 correspond à la colonne
'7 de la feuille(colonne G)
Supprimer Fe, _
Plage, _
Colonne, _
Critere
End Sub

Hervé.

"Swoap" a écrit dans le message de news:
%
Bonjour a tous.

Je suis entrain de découvrir VBA pour les macros et j'avoue c'est
FANTASTIQUE!
Cependant je bute encore sur beaucoup de choses.

J'explique:
si dans une colonne X on retrouve des mots quasi-identique( + de 3
caractères se suivant identiques) je souhaiterais supprimer les lignes où
se trouve ces doublons. Je precise que ma colonne X contient des noms
classé par ordre alphabétique est donc on peut avoir a la suite par
exemple AURILIS, AURILIS HUILE....

Je sais pas si je suis assez clair, je suis a votre disposition

Merci d'avance



Avatar
Youky
Sub enlevesurplus()
col = 1 'col indique le N° de colonne ,ici A
lig = 1
While Cells(lig, col) <> ""
lig = lig + 1
nnn = Left(Cells(lig, col), 3) '3 lettres, à voir si 4
For k = lig + 1 To 10000
If Cells(k, col) = "" Then Exit For
If Left(Cells(k, col), 3) = nnn Then Rows(k).Delete '3 lettres, à voir si 4
Next
Wend
End Sub
Indique bien la colonne, le reste doit faire
cela supprime les lignes ou les 3 premieres lettres se retrouvent
Bienvenu à la prise de tête du VBA
Youky
"Swoap" a écrit dans le message de news:
%
Bonjour a tous.

Je suis entrain de découvrir VBA pour les macros et j'avoue c'est
FANTASTIQUE!
Cependant je bute encore sur beaucoup de choses.

J'explique:
si dans une colonne X on retrouve des mots quasi-identique( + de 3
caractères se suivant identiques) je souhaiterais supprimer les lignes où
se trouve ces doublons. Je precise que ma colonne X contient des noms
classé par ordre alphabétique est donc on peut avoir a la suite par
exemple AURILIS, AURILIS HUILE....

Je sais pas si je suis assez clair, je suis a votre disposition

Merci d'avance



Avatar
JB
Bonjour,

http://cjoint.com/?deilydQGU5

début = 1
col = 1
seq = 3
fin = [A65000].End(xlUp).Row
For i = début To fin
For j = 1 To Len(Cells(i, col)) - (seq - 1)
temp = Mid(Cells(i, col), j, 3)
For k = i + 1 To fin
If Cells(k, col) Like "*" & temp & "*" Then Cells(k,
col).EntireRow.Delete
Next k
Next j
Next i

Cordialement JB
Avatar
Seng HUA
Bonjour à tous,

En parcourant le forum, j'ai vu la macro de Daniel ci contre, que j'esssaye
d'adapter pour supprimer les doublons identiques ( même n° références, même
mtant en positives & négatives ), je m'explique, j'ai une feuille qui peut
contenir jusqu'à 10000 lignes de données, j'ai corrigé :

Derligne=Range("A65536") en range("F65536").End(xlUp) ' les références des
produits sont sur les colonnes F et les montants en colonnes H.

Ma question est, comment adapter le reste de la macro, si après le tri, j'ai
2 lignes identiques en mtant & référence, pour supprimer les 2 lignes.

Merci d'avance.

seng


"Daniel" a écrit dans le message de news:
%
Bonsoir.
Essaie :

Sub test()
Dim Zon As String, Derligne As Long, c As Range
Dim ResAdr As String, Plage As Range
Range("A1").Select
Derligne = Range("A65536").End(xlUp).Row
Do While ActiveCell.Row <> Derligne
For i = 1 To Len(ActiveCell.Value) - 2
Zon = Mid(ActiveCell.Value, i, 3)
Set c = Range("A:A").Find(Zon)
If Not c Is Nothing Then
ResAdr = c.Address
Do
Set c = Range("A:A").FindNext(c)
Var = c.Address
If c.Address <> ActiveCell.Address Then c.Value =
"!!!§§§!!!"
Loop While Not c Is Nothing And c.Address <> ResAdr
End If
Next i
ActiveCell.Offset(1, 0).Select
Loop
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
If c.Value = "!!!§§§!!!" Then c.Delete
Next c
End Sub

Cordalement.
Daniel
"Swoap" a écrit dans le message de news:
%
Bonjour a tous.

Je suis entrain de découvrir VBA pour les macros et j'avoue c'est
FANTASTIQUE!
Cependant je bute encore sur beaucoup de choses.

J'explique:
si dans une colonne X on retrouve des mots quasi-identique( + de 3
caractères se suivant identiques) je souhaiterais supprimer les lignes où
se trouve ces doublons. Je precise que ma colonne X contient des noms
classé par ordre alphabétique est donc on peut avoir a la suite par
exemple AURILIS, AURILIS HUILE....

Je sais pas si je suis assez clair, je suis a votre disposition

Merci d'avance







Avatar
Daniel
Bonjour.
Essaie :

Sub test()
Dim Ref As String, Montant As Double
Range("F1").Select
Do While ActiveCell <> ""
If ActiveCell.Value = Ref And ActiveCell.Offset(0, 2) = Montant Then
ActiveCell.EntireRow.Delete
Else
Ref = ActiveCell.Value
Montant = ActiveCell.Offset(0, 2).Value
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub

Cordialement.
Daniel
"Seng HUA" a écrit dans le message de news:
440a96da$0$1154$
Bonjour à tous,

En parcourant le forum, j'ai vu la macro de Daniel ci contre, que
j'esssaye d'adapter pour supprimer les doublons identiques ( même n°
références, même mtant en positives & négatives ), je m'explique, j'ai une
feuille qui peut contenir jusqu'à 10000 lignes de données, j'ai corrigé :

Derligne=Range("A65536") en range("F65536").End(xlUp) ' les références des
produits sont sur les colonnes F et les montants en colonnes H.

Ma question est, comment adapter le reste de la macro, si après le tri,
j'ai 2 lignes identiques en mtant & référence, pour supprimer les 2
lignes.

Merci d'avance.

seng


"Daniel" a écrit dans le message de news:
%
Bonsoir.
Essaie :

Sub test()
Dim Zon As String, Derligne As Long, c As Range
Dim ResAdr As String, Plage As Range
Range("A1").Select
Derligne = Range("A65536").End(xlUp).Row
Do While ActiveCell.Row <> Derligne
For i = 1 To Len(ActiveCell.Value) - 2
Zon = Mid(ActiveCell.Value, i, 3)
Set c = Range("A:A").Find(Zon)
If Not c Is Nothing Then
ResAdr = c.Address
Do
Set c = Range("A:A").FindNext(c)
Var = c.Address
If c.Address <> ActiveCell.Address Then c.Value =
"!!!§§§!!!"
Loop While Not c Is Nothing And c.Address <> ResAdr
End If
Next i
ActiveCell.Offset(1, 0).Select
Loop
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
If c.Value = "!!!§§§!!!" Then c.Delete
Next c
End Sub

Cordalement.
Daniel
"Swoap" a écrit dans le message de news:
%
Bonjour a tous.

Je suis entrain de découvrir VBA pour les macros et j'avoue c'est
FANTASTIQUE!
Cependant je bute encore sur beaucoup de choses.

J'explique:
si dans une colonne X on retrouve des mots quasi-identique( + de 3
caractères se suivant identiques) je souhaiterais supprimer les lignes
où se trouve ces doublons. Je precise que ma colonne X contient des noms
classé par ordre alphabétique est donc on peut avoir a la suite par
exemple AURILIS, AURILIS HUILE....

Je sais pas si je suis assez clair, je suis a votre disposition

Merci d'avance











Avatar
Swoap
Bonjour et merci a tous!
J'ai bien avancé grave a vous , juste j'ai essayé de faire une bouble avec
la macro de youki, mais j'ai du mal a placer les do, do while, loop... si
quelqu'un peut m'expliquer. Le but du jeu est de répéter l'action de youky
jusqu'a ce qu'il n'existe plus de doublons partiels.

Merci encore de votre aide

"Swoap" a écrit dans le message de news:
%
Bonjour a tous.

Je suis entrain de découvrir VBA pour les macros et j'avoue c'est
FANTASTIQUE!
Cependant je bute encore sur beaucoup de choses.

J'explique:
si dans une colonne X on retrouve des mots quasi-identique( + de 3
caractères se suivant identiques) je souhaiterais supprimer les lignes où
se trouve ces doublons. Je precise que ma colonne X contient des noms
classé par ordre alphabétique est donc on peut avoir a la suite par
exemple AURILIS, AURILIS HUILE....

Je sais pas si je suis assez clair, je suis a votre disposition

Merci d'avance