OVH Cloud OVH Cloud

suppression de cellules dans une ligne

11 réponses
Avatar
GaelB
Bonjour =E0 tous!
Apr=E8s plusieurs proc=E9dures, j'obtiens un fichier avec des=20
donn=E9es en lignes. Je souhaite supprimer certaines=20
cellules redondantes. Je peux avoir d'une centaine =E0=20
plusieurs milliers de lignes.
Exemple:
secteur etablissement n=B0 secteur etablissement nb due oe
10 xxxx 123 10 xxxx 50 25 10
20 yyyy 321 20 yyyy 15 10 50
97 azaa 852 97 azaa 85 52 63

Quelqu'un peut il m'indiquer comment supprimer les=20
cellules en double dans une ligne puis passer =E0 la ligne=20
suivante? Je ne trouve pas de solution =E0 cela sur le net,=20
=E0 moins que je m'y prenne comme un manche.
Cordialement,=20
Ga=EBl

10 réponses

1 2
Avatar
AV
A travers ton exemple on ne comprends pas très bien ce qui est redondant et ce
qu'il faut supprimer
La colonne entière ?

AV
Avatar
GaelB
Bonjour Alain!
Je souhaite supprimer les cellules en double sur une
ligne, secteur et établissement en cellules A2 et B2 après
avoir vérifié quelles correspondent bien aux cellules D2
et E2. Puis l'on passe à la ligne suivante.
J'envisage ceci comme une vérification, ligne après ligne,
avant de passer à des tri secteur par secteur.
Cordialement,
Gaël
-----Message d'origine-----
A travers ton exemple on ne comprends pas très bien ce
qui est redondant et ce

qu'il faut supprimer
La colonne entière ?

AV


.



Avatar
AV
Pas du tout sur d'avoir saisi ce que tu entends par "supprimer les cellules en
double"
Alors à tester :

Sub zzz()
For i = 2 To [A65536].End(3).Row
If Cells(i, "A") & Cells(i, "B") = Cells(i, "D") & Cells(i, "E") Then
Range("A" & i & ":B" & i) = ""
End If
Next
End Sub

AV
Avatar
Frédo P.
Bonjour GaelB
Le code si dessous a mettre dans le code de feuille, a les propiétés de
mettre en gras les redondances se trouvant au dessus de la cellule
sélectionnée, si cela peut te servir

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
For Each c In Selection
If Evaluate("or(" & c.Address & "=" & c.End(xlUp).Address & ":" &
c.Offset(-1, 0).Address & ")") and c<>"" Then
With c.Font
.Bold = True
End With
Else
With c.Font
.Bold = False
End With
End If
Next c
End Sub

--
Frédéric


"GaelB" a écrit dans le message de
news: 023101c3d926$94dc8350$
Bonjour Alain!
Je souhaite supprimer les cellules en double sur une
ligne, secteur et établissement en cellules A2 et B2 après
avoir vérifié quelles correspondent bien aux cellules D2
et E2. Puis l'on passe à la ligne suivante.
J'envisage ceci comme une vérification, ligne après ligne,
avant de passer à des tri secteur par secteur.
Cordialement,
Gaël
-----Message d'origine-----
A travers ton exemple on ne comprends pas très bien ce
qui est redondant et ce

qu'il faut supprimer
La colonne entière ?

AV


.



Avatar
Bonjour Alain!
C'est à moi d'être plus clair dans mes explications. Je
travaille à partir de 2 fichiers que je trie par ordre
croissant de n° établissement, puis je copie colle sur une
feuille. Il arrive que pour des raisons que je ne maîtrise
pas le nombre de lignes dans les fichiers ne soit pas
identique. L'idée est donc d'avoir une procédure qui
fasse: si A2 et B2 sont identiques à D2 et E2 alors
supprime D2 et E2 puis passe à la ligne suivante, sinon si
ce n'est pas le cas passe à la ligne suivante.
En tout cas je teste ta proposition.
Gaêl
-----Message d'origine-----
Pas du tout sur d'avoir saisi ce que tu entends
par "supprimer les cellules en

double"
Alors à tester :

Sub zzz()
For i = 2 To [A65536].End(3).Row
If Cells(i, "A") & Cells(i, "B") = Cells
(i, "D") & Cells(i, "E") Then

Range("A" & i & ":B" & i) = ""
End If
Next
End Sub

AV


.



Avatar
GaelB
Bonjour Frédéric!
Je suppose que pour le faire sur la même ligne, j'écris
c.Offset(0, 0.
Je teste et merci.
Gaël
-----Message d'origine-----
Bonjour GaelB
Le code si dessous a mettre dans le code de feuille, a
les propiétés de

mettre en gras les redondances se trouvant au dessus de
la cellule

sélectionnée, si cela peut te servir

Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)

For Each c In Selection
If Evaluate("or(" & c.Address & "=" & c.End(xlUp).Address
& ":" &

c.Offset(-1, 0).Address & ")") and c<>"" Then
With c.Font
..Bold = True
End With
Else
With c.Font
..Bold = False
End With
End If
Next c
End Sub

--
Frédéric


"GaelB" a écrit
dans le message de

news: 023101c3d926$94dc8350$
Bonjour Alain!
Je souhaite supprimer les cellules en double sur une
ligne, secteur et établissement en cellules A2 et B2 après
avoir vérifié quelles correspondent bien aux cellules D2
et E2. Puis l'on passe à la ligne suivante.
J'envisage ceci comme une vérification, ligne après ligne,
avant de passer à des tri secteur par secteur.
Cordialement,
Gaël
-----Message d'origine-----
A travers ton exemple on ne comprends pas très bien ce
qui est redondant et ce

qu'il faut supprimer
La colonne entière ?

AV


.




.




Avatar
Frédo P.
Celle ci regarde sur la ligne les doublons en entrée entr la colonne B et
G(2et7)
Private Sub Worksheet_Change(ByVal c As Excel.Range)

For Each c In Range(Cells(c.Row, 2), Cells(c.Row, 7))
If Evaluate("or(" & c.Address & "=" & c.Offset(0, 1).Address & ":" &
c.Offset(0, 7 - c.Column).Address & ")") Or _
Evaluate("or(" & c.Address & "=" & c.Offset(0, 1 - c.Column).Address & ":" &
c.Offset(0, -1).Address & ")") Then
With c.Font
.Bold = True
End With
Else
With c.Font
.Bold = False
End With
End If
Next c
End Sub


--
Frédéric


"GaelB" a écrit dans le message de
news: 08ee01c3d9bd$f70349a0$
Bonjour Frédéric!
Je suppose que pour le faire sur la même ligne, j'écris
c.Offset(0, 0.
Je teste et merci.
Gaël
-----Message d'origine-----
Bonjour GaelB
Le code si dessous a mettre dans le code de feuille, a
les propiétés de

mettre en gras les redondances se trouvant au dessus de
la cellule

sélectionnée, si cela peut te servir

Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)

For Each c In Selection
If Evaluate("or(" & c.Address & "=" & c.End(xlUp).Address
& ":" &

c.Offset(-1, 0).Address & ")") and c<>"" Then
With c.Font
..Bold = True
End With
Else
With c.Font
..Bold = False
End With
End If
Next c
End Sub

--
Frédéric


"GaelB" a écrit
dans le message de

news: 023101c3d926$94dc8350$
Bonjour Alain!
Je souhaite supprimer les cellules en double sur une
ligne, secteur et établissement en cellules A2 et B2 après
avoir vérifié quelles correspondent bien aux cellules D2
et E2. Puis l'on passe à la ligne suivante.
J'envisage ceci comme une vérification, ligne après ligne,
avant de passer à des tri secteur par secteur.
Cordialement,
Gaël
-----Message d'origine-----
A travers ton exemple on ne comprends pas très bien ce
qui est redondant et ce

qu'il faut supprimer
La colonne entière ?

AV


.




.




Avatar
Gilgamesh
"GaelB" a écrit dans le message de
news:

Exemple:
secteur etablissement n° secteur etablissement nb due oe
10 xxxx 123 10 xxxx 50 25 10
20 yyyy 321 20 yyyy 15 10 50
97 azaa 852 97 azaa 85 52 63


-- Si tu possèdes un identifiant unique par établissement (de sorte que tu
n'a qu'à tester cette valeur pour être sûr que c'est celui là et pas un
autre), je serais tenter de procéder comme suit :

- tes données sont sur une feuille "donnée brute". Tu possède une colonne
"Identifiant donnée brutes"
- tu télécharges l'ensemble de macro complémentaire "morefun" dans laquelle
il y a une fonction VALEURS.UNIQUES

Tu peux voir un lien vers ce "pack" sur cette page (consacrée d'ailleurs au
pb des doublons)
http://longre.free.fr/pages/form/doublons.htm

- tu ouvres une autre feuille "donnnées sans doublon"
-
col1 col2
n° Identifiant dédoublonné
1 =INDEX(VALEURS.UNIQUES(Identifiant_donnée_brut;1);col1)
2 =INDEX(VALEURS.UNIQUES(Identifiant_donnée_brut;1);col1)
3 etc.
..
n

Et pour les autres colonne (Col_donnée_brutes_n) tu rappatries les données
avec un
=INDEX(Col_donnée_brutes_n;EQUIV(Identifiant_dédoublonné;colonne
Identifiant_données_brutes;0))

Y'a peut être plus simple, mais je pense que ça c'est assez "propre".

A+
Avatar
GaelB
Bonjour!
Merci pour les infos, je vais consulter et mettre en
oeuvre.
A +
GaëlB
-----Message d'origine-----

"GaelB" a écrit
dans le message de

news:

Exemple:
secteur etablissement n° secteur etablissement nb due oe
10 xxxx 123 10 xxxx 50 25
10

20 yyyy 321 20 yyyy 15 10
50

97 azaa 852 97 azaa 85 52
63



-- Si tu possèdes un identifiant unique par établissement
(de sorte que tu

n'a qu'à tester cette valeur pour être sûr que c'est
celui là et pas un

autre), je serais tenter de procéder comme suit :

- tes données sont sur une feuille "donnée brute". Tu
possède une colonne

"Identifiant donnée brutes"
- tu télécharges l'ensemble de macro
complémentaire "morefun" dans laquelle

il y a une fonction VALEURS.UNIQUES

Tu peux voir un lien vers ce "pack" sur cette page
(consacrée d'ailleurs au

pb des doublons)
http://longre.free.fr/pages/form/doublons.htm

- tu ouvres une autre feuille "donnnées sans doublon"
-
col1 col2
n° Identifiant dédoublonné
1 =INDEX(VALEURS.UNIQUES
(Identifiant_donnée_brut;1);col1)

2 =INDEX(VALEURS.UNIQUES
(Identifiant_donnée_brut;1);col1)

3 etc.
...
n

Et pour les autres colonne (Col_donnée_brutes_n) tu
rappatries les données

avec un
=INDEX(Col_donnée_brutes_n;EQUIV
(Identifiant_dédoublonné;colonne

Identifiant_données_brutes;0))

Y'a peut être plus simple, mais je pense que ça c'est
assez "propre".


A+





.



Avatar
Bonjour Frédéric!
Je teste de ce pas.
A+
GaëlB
-----Message d'origine-----
Celle ci regarde sur la ligne les doublons en entrée entr
la colonne B et

G(2et7)
Private Sub Worksheet_Change(ByVal c As Excel.Range)

For Each c In Range(Cells(c.Row, 2), Cells(c.Row, 7))
If Evaluate("or(" & c.Address & "=" & c.Offset(0,
1).Address & ":" &

c.Offset(0, 7 - c.Column).Address & ")") Or _
Evaluate("or(" & c.Address & "=" & c.Offset(0, 1 -
c.Column).Address & ":" &

c.Offset(0, -1).Address & ")") Then
With c.Font
..Bold = True
End With
Else
With c.Font
..Bold = False
End With
End If
Next c
End Sub


--
Frédéric


"GaelB" a écrit
dans le message de

news: 08ee01c3d9bd$f70349a0$
Bonjour Frédéric!
Je suppose que pour le faire sur la même ligne, j'écris
c.Offset(0, 0.
Je teste et merci.
Gaël
-----Message d'origine-----
Bonjour GaelB
Le code si dessous a mettre dans le code de feuille, a
les propiétés de

mettre en gras les redondances se trouvant au dessus de
la cellule

sélectionnée, si cela peut te servir

Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)

For Each c In Selection
If Evaluate("or(" & c.Address & "=" & c.End(xlUp).Address
& ":" &

c.Offset(-1, 0).Address & ")") and c<>"" Then
With c.Font
..Bold = True
End With
Else
With c.Font
..Bold = False
End With
End If
Next c
End Sub

--
Frédéric


"GaelB" a écrit
dans le message de

news: 023101c3d926$94dc8350$
Bonjour Alain!
Je souhaite supprimer les cellules en double sur une
ligne, secteur et établissement en cellules A2 et B2
après


avoir vérifié quelles correspondent bien aux cellules D2
et E2. Puis l'on passe à la ligne suivante.
J'envisage ceci comme une vérification, ligne après
ligne,


avant de passer à des tri secteur par secteur.
Cordialement,
Gaël
-----Message d'origine-----
A travers ton exemple on ne comprends pas très bien ce
qui est redondant et ce

qu'il faut supprimer
La colonne entière ?

AV


.




.




.





1 2