Aide pour remodeler le code

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 !

Sylvie64

XLDnaute Occasionnel
Bonjour,

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.

Merci pour votre aide

Sylvie
 
Re : Aide pour remodeler le code

Personne pour m'aider à modifier ce code ?😱

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


End Sub
 
Re : Aide pour remodeler le code

Bonjour

Un petit souci avec ton fichier
D'après ce que j'ai compris
Il faut copier les données de AF-AQ une fois vers AR...
ensuite vers BO ...

C'est à dire copier une zone de 12 colonnes dans une zone de 23 colonnes

Je pense (à tort peut-être) qu'il y a une erreur dans le fichier et que la zone de réception des données doivent être de largeur identique

Avant de continuer j'aimerais connaitre ta réponse
 
Dernière édition:
Re : Aide pour remodeler le code

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+
 
Re : Aide pour remodeler le code

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.

J'espère avoir mieux expliquer.

Un grand merci pour votre aide.
 
Re : Aide pour remodeler le code

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)
 
Dernière édition:
Re : Aide pour remodeler le code

Banzai64

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.

Un très grand merci à vous deux

Sylvie
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 problème d'index
Réponses
19
Affichages
497
Réponses
23
Affichages
665
Réponses
7
Affichages
299
Retour