Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
GBI a gentiment donner ce code pour mes doublons, le problème maintenant, il n'y a plus deux mais 4 voir 5 identiques que j'aimerai mettre sur la même ligne.
Si je rentre ce code il me supprime les 3/4/5 lignes !!!
Quelqu'un pourrait-il m'aider pour transforme le code pour qu'il prenne en compte les cinq lignes pour les mettre sur une, sachant que j'ai plus de 85000 ligne sur mon fichier (exemple le 88 en pj)
Je vous remercie grandement car vous pouvez pas savoir à quels point vous avez pu m'aider car je suis incapable de le faire.
Function nom(nom_prenom)
Application.Volatile
nom = nom_prenom
For n = 1 To Len(nom_prenom)
If Mid(nom_prenom, n, 1) = " " And LCase(Mid(nom_prenom, n + 2, 1)) = Mid(nom_prenom, n + 2, 1) Then
nom = Left(nom_prenom, n - 1)
Exit Function
End If
Next n
End Function
Function prenom(nom_prenom)
Application.Volatile
prenom = ""
For n = 1 To Len(nom_prenom)
If Mid(nom_prenom, n, 1) = " " And LCase(Mid(nom_prenom, n + 2, 1)) = Mid(nom_prenom, n + 2, 1) Then
prenom = Mid(nom_prenom, n + 1)
Exit Function
End If
Next n
End Function
Sub retraitement_doublons()
Dim derlig As Long
derlig = Sheets(1).Range("A65536").End(xlUp).Row
For i = derlig To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then
Range(Cells(i, 32), Cells(i, 42)).Copy _
Destination:=Cells(i - 1, 44)
Cells(i, 1).EntireRow.Delete
End If
Next i
Salut Sylvie64 et le forum
Utilises les balises de code (#)
Si j'ai compris ton problème, tu fais un tri de ta colonne 1 (A), puis tu applique la macro :
Code:
Sub retraitement_doublons()
Dim derlig As Long
derlig = Sheets(1).Range("A65536").End(xlUp).Row
For i = derlig To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then
Range(Cells(i, 32), Cells(i, 42)).Copy _
Destination:=Cells(i - 1, 44)
Cells(i, 1).EntireRow.Delete
End If
Next i
End Sub
La macro me dit que si la cellule A d'une ligne est égale à la cellule A de la ligne précédente, on colle les cellules AF:AP (colonnes 32 à 42), à partir de la cellule AR (colonne 44) de la ligne précédente, puis on efface la ligne de A.
Ce que tu demandes, c'est que les données soient conservées, même en cas de nouveau doublon.
Question : est-ce que la colonne AF contient toujours quelque chose ?
Si c'est le cas, il suffit de faire un test, et si la colonne est pleine, on saute 12 colonnes et on teste de nouveau.
N'ayant pas chargé le fichier, je ne peux que supposer que les colonnes après AP sont vides => Donc, c'est de AF à dernière colonne non vide de la ligne qu'il faut copier.
Petit rappel : les dépanneurs sont rarement utilisateurs du fichier => ce qui est évident ne l'est jamais que pour ceux qui utilisent le fichier => Il faut expliquer ce qui est évident.
Je n'ai pas cherché à copier le fichier, à cause de la demande de Banzai64.
Ce qui serait le plus simple, serait de prendre les 4/5 lignes concernées et de faire un exemple Avant/Après avec les données au départ, et après la transformation par la macro.
A+
Bonsoir merci de vous être penché sur mon problème,
Banzai64
Il y avait une grosse erreur de ma part désolé !!!🙁
donc pour le numéro 88 de la colonne A, les lignes 24/25/26/27 doivent ce trouver sur la même ligne
que la 23, j'y ai mis des couleurs pour l'explication sur la pièce jointe, plus facile pour moi.
Puis ces lignes doivent être supprimer,sachant qu'il y a plus de 85000 lignes sur mon fichier et
je ne dois pas avoir de lignes vides.
Gorfael
C'est bien cela trier la colonne A, pour ne plus avoir de chiffres en doubles voir plus !!!
Il faut prendre les cellules de AF à AQ et les mettres à la suite de la première ligne en AR à BC
Ainsi de suite (pour les personnes qui se sont mariés plusieurs fois)
Question : est-ce que la colonne AF contient toujours quelque chose ? Non pas toujours, cela est possible
qu'il ni est pas eu de mariage.
Attention les couleurs ne me servent à rien car après je convertie mon fichier en csv pour le mettre
sur mon site.
Salut Sylvie64 et le forum
Comme il y a beaucoup d'inconnues, une macro à tester :
Code:
Sub Test()
Dim X As Long, Y As Long
For X = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If Cells(X, "A") = Cells(X - 1, "A") Then
Y = Cells(X - 1, Columns.Count).End(xlToLeft).Column
Y = IIf(Y < 32, 32, ((1 + Int((Y - 32) / 12)) * 12) + 32)
Range(Cells(X, 32), Cells(X, Columns.Count).End(xlToLeft)).Copy Cells(X - 1, Y)
Rows(X).Delete
End If
Next X
End Sub
Je n'ai pas inclus le tri, juste essayé de répondre.
Pour expliquer mon raisonnement :
On teste de la dernière de A non vide à la 2me, par pas de -1 (nécessaire quand on supprime des lignes)
si ligne<>ligne-1 (pour A, avec X la ligne testée) on passe à la suivante, sinon (les 2 A sont identiques), pour la ligne-1, on calcule la dernière colonne non vide (End(xlToLeft).column) : 2 possibilités (IIf)
y<32, on met y à 32
Y>= 32 on calcule à partir de 32 toutes les 12 colonnes et on prend celle derrière la dernière non vide (ouf 🙂)
on colle en Y ligne-1 toutes les cellules de ligne de 32 à dernière non vide
Après on efface la ligne
Le problème, c'est qu'on colle 12 infos, qu'elles soient présentes ou non => donc, à tester.
A+
Nota : Je n'ai pas mis de rambarde pour protéger contre des colonnes supérieures à 256 (par pas de 12, il y a de la marge (18 doublons), mais il faut peut-être prévoir cette erreur, si on est sur une version antérieure à 2007)
Excellent !!! c'est ce que je voulais, mais j'ai voulu le faire sur mon fichier à plus de 85000 ligne, il n'y a que la 1ère ligne qui se double !!!!
Et impossible de faire un copier/coller de mon fichier sur celui que vous m'avez donné !!!
Gorfael
Je viens de mettre le code sur mon fichier et là !!! c'est cool cela fonctionne !!!!! il a mis un peu plus de 9mn pour tout convertir et après vérification cela à l'air d'être bon.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD