Suppressions doublons sur plusiers colonnes
Résolu/Fermé
RANDRIANARISOA0
Messages postés
16
Date d'inscription
mercredi 24 avril 2013
Statut
Membre
Dernière intervention
2 février 2020
-
Modifié le 5 oct. 2019 à 18:51
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 5 oct. 2019 à 22:31
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 5 oct. 2019 à 22:31
A voir également:
- Suppressions doublons sur plusiers colonnes
- Comment faire des colonnes sur word - Guide
- Supprimer les doublons excel - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Doublons photos - Guide
6 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
5 oct. 2019 à 21:13
5 oct. 2019 à 21:13
Bonjour
Une solution avec macro
https://mon-partage.fr/f/aigLnklp/
Cdlmnt
Une solution avec macro
https://mon-partage.fr/f/aigLnklp/
Cdlmnt
RANDRIANARISOA0
Messages postés
16
Date d'inscription
mercredi 24 avril 2013
Statut
Membre
Dernière intervention
2 février 2020
5 oct. 2019 à 21:39
5 oct. 2019 à 21:39
Bon ,
Votre fichier exemple marche certe ,
mais dans le cas ou j'aurais par exemple dans la colonne janvier plus de 5000 lignes ,fevrier 4000 lignes mars 6000 lignes etc ....ca se passerait comment,
Cordialement
Votre fichier exemple marche certe ,
mais dans le cas ou j'aurais par exemple dans la colonne janvier plus de 5000 lignes ,fevrier 4000 lignes mars 6000 lignes etc ....ca se passerait comment,
Cordialement
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié le 5 oct. 2019 à 21:49
Modifié le 5 oct. 2019 à 21:49
pareil pourvu qu'il y ait moins de 65000 lignes par colonnes
il faudra aussi afficher le résultat dans une autre feuille
et ça prendra certainement un peu plus de temps pour l'ecécution
Cdlmnt
il faudra aussi afficher le résultat dans une autre feuille
et ça prendra certainement un peu plus de temps pour l'ecécution
Cdlmnt
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié le 5 oct. 2019 à 21:46
Modifié le 5 oct. 2019 à 21:46
quelques explications
Cdlmnt
Public Sub ok() Dim dico As Object, cle, n As Long, lifin As Long Dim t(), li As Long, co As Long, i As Long ' dictionnaire de toutes les valeurs "uniques" Set dico = CreateObject("scripting.dictionary") ' dernière ligne de la feuille lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row ' nombre de lignes du tableau t (qui aura 12 colonnes) n = lifin - 1 ReDim t(1 To n, 1 To 12) ' boucle sur les colonnes For co = 1 To 12 'initialisation de l'indice de la colonne co du tableau t i = 0 ' boucle sur les lignes de la colonne co For li = 2 To lifin ' valeur lue cle = Cells(li, co) ' si cle n'est pas dans dico ' on l'ajoute ' on incremente i ' on place cle en ligne i colonne co du tableau t If Not dico.exists(cle) Then dico.Add cle, 1 i = i + 1 t(i, co) = cle End If Next li Next co ' affichage de t à partir de A20 (ligne 20, colonne 1) Cells(20, 1).Resize(n, 12) = t End Sub
Cdlmnt
RANDRIANARISOA0
Messages postés
16
Date d'inscription
mercredi 24 avril 2013
Statut
Membre
Dernière intervention
2 février 2020
5 oct. 2019 à 21:51
5 oct. 2019 à 21:51
Ma dernier question,
au lieu de
comment le faire a partir de la derniere ligne renseigne non vide dans la plage
concerne
Cordialement
au lieu de
Cells(20, 1).Resize(n, 12) = t
comment le faire a partir de la derniere ligne renseigne non vide dans la plage
concerne
Cordialement
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
5 oct. 2019 à 21:59
5 oct. 2019 à 21:59
lis les commentaires !
' dernière ligne de la feuille
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Cdlmnt
' dernière ligne de la feuille
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Cdlmnt
RANDRIANARISOA0
Messages postés
16
Date d'inscription
mercredi 24 avril 2013
Statut
Membre
Dernière intervention
2 février 2020
5 oct. 2019 à 22:08
5 oct. 2019 à 22:08
je lis certe les explications mais si par exemple dans la colonne 4 c'est a dire avril qu'il y a la derniere ligne non vide donc ca se passe comment ou peut etre colonne 11 novembre
Codlt
Codlt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
RANDRIANARISOA0
Messages postés
16
Date d'inscription
mercredi 24 avril 2013
Statut
Membre
Dernière intervention
2 février 2020
5 oct. 2019 à 21:58
5 oct. 2019 à 21:58
j'ai ajouter un code comme ca dans votre code
est ce que ca va seulement cibler la derniere ligne renseigne dans la colonne A ou dans la plage toute entier,
Cordialement
Option Explicit
Public Sub ok()
Dim dico As Object, cle, n As Long, lifin As Long, derlig As Long, ws As Worksheet
Dim t(), li As Long, co As Long, i As Long
Set ws = ThisWorkbook.Worksheets("feuil1")
Set dico = CreateObject("scripting.dictionary")
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
derlig = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
n = lifin - 1
ReDim t(1 To n, 1 To 12)
For co = 1 To 12
i = 0
For li = 2 To lifin
cle = Cells(li, co)
If Not dico.exists(cle) Then
dico.Add cle, 1
i = i + 1
t(i, co) = cle
End If
Next li
Next co
Cells(derlig, 1).Resize(n, 12) = t
End Sub
est ce que ca va seulement cibler la derniere ligne renseigne dans la colonne A ou dans la plage toute entier,
Cordialement
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié le 5 oct. 2019 à 22:04
Modifié le 5 oct. 2019 à 22:04
derlig = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
derniere ligne de la colonne A : c'est toi qui le dit !
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
dernière ligne renseignée de la feuille
derniere ligne de la colonne A : c'est toi qui le dit !
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
dernière ligne renseignée de la feuille
RANDRIANARISOA0
Messages postés
16
Date d'inscription
mercredi 24 avril 2013
Statut
Membre
Dernière intervention
2 février 2020
Modifié le 5 oct. 2019 à 22:24
Modifié le 5 oct. 2019 à 22:24
Option Explicitd'accord j'ai compris il suffit que je remplace 20 par lifin+1 et le resultat sera juste en dessous de la derniere ligne renseigne
Public Sub ok()
Dim dico As Object, cle, n As Long, lifin As Long
Dim t(), li As Long, co As Long, i As Long
Set dico = CreateObject("scripting.dictionary")
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
n = lifin - 1
ReDim t(1 To n, 1 To 12)
For co = 1 To 12
i = 0
For li = 2 To lifin
cle = Cells(li, co)
If Not dico.exists(cle) Then
dico.Add cle, 1
i = i + 1
t(i, co) = cle
End If
Next li
Next co
Cells(n + 3, 1).Resize(n, 12) = t
End Sub
C'est ca non!
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié le 5 oct. 2019 à 22:32
Modifié le 5 oct. 2019 à 22:32
il suffit que je remplace 20 par lifin+1 et le resultat sera juste en dessous de la derniere ligne renseigne
exact !
Là, je plie boutique
bon dimanche
exact !
Là, je plie boutique
bon dimanche
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
5 oct. 2019 à 22:23
5 oct. 2019 à 22:23
1. mais si par exemple dans la colonne 4 c'est a dire avril qu'il y a la derniere ligne non vide donc ca se passe comment ou peut etre colonne 11 novembre
je ne comprends pas bien ta question
Est ce que ça correspond à ceci ?
https://mon-partage.fr/f/YAyVEUQD/
2. S'il y a beaucoup de lignes on peut accélérer un peu à condition qu'après la première cellule vide d'une colonne, il n'y ait plus rien
Cdlmnt
je ne comprends pas bien ta question
Est ce que ça correspond à ceci ?
https://mon-partage.fr/f/YAyVEUQD/
2. S'il y a beaucoup de lignes on peut accélérer un peu à condition qu'après la première cellule vide d'une colonne, il n'y ait plus rien
Cdlmnt
RANDRIANARISOA0
Messages postés
16
Date d'inscription
mercredi 24 avril 2013
Statut
Membre
Dernière intervention
2 février 2020
5 oct. 2019 à 22:31
5 oct. 2019 à 22:31
Merci bien de votre aide,
ce que je cherchait ca fait 5 jours ,heureseument que vous avez lu mon sujet
Merci au plaisir
ce que je cherchait ca fait 5 jours ,heureseument que vous avez lu mon sujet
Merci au plaisir
5 oct. 2019 à 21:30
,
Mais aurait tu l'amabilite s'il sIl te plait de me m'expliquer le code,
bon je m'y connais un peu en VBA , mais bon juste pour te demander si c'est possible
Cordialement