Aide sur une macro excel

Résolu/Fermé
toopey77 - 23 avril 2013 à 21:55
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 - 29 avril 2013 à 14:24
bonsoir à tous ;)

je voulais tout d'abord remercier tout les helper et tout le monde qui participe à ce forum d'aide c'est vraiment génial!

Voilà ce qui m'amène, j'ai un fichier de plusieurs centaines de données et je souhaite supprimer 2 lignes entière si il y a 2 cellules identiques

je voudrais vous faire parvenir le fichier mais je ne sais pas comment faire pour le moment ;)

Merci encore
A voir également:

12 réponses

Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
28 avril 2013 à 21:24
Re,

remplace l'ancien code par celui ci, qui fonctionne avec ou sans cellule fusionnées,

les dates colonne F sont elles croissantes de haut vers le bas


Private Sub CommandButton1_Click()
Dim i As Long
Range("I2:I100").FormulaR1C1 = "=COUNTIF(RC3:R100C[-6],RC[-6])"
For i = 1 To 100
If Cells(i, 9) >= 2 Then Range(Cells(i, 9), Cells(i + 1, 9)).EntireRow.Delete
Next i
[I:I].ClearContents
End Sub
1
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
23 avril 2013 à 21:58
Salut,

effectivement avec le fichier ce sera mieux, tu peux le joindre à partir de ce lien

https://www.cjoint.com/

quelle colonne dois tu tester
0
RE-Mike, et hop voici le lien de mon doc

http://cjoint.com/13av/CDxwa6bDaaA.htm

je t'ai mis en jaune exactement les colonnes qui doivent être analysées


Merci beaucoup
0
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
23 avril 2013 à 22:30
Re,

ce qui pose problème sont tes cellules fusionnées, je regarde ce qui peut être fait
0
merci beaucoup Mike-31

je te précise juste une chose:

ce fichier est un fichier de récapitulation
je l'alimente avec de nouvelles données chaque jour.

ce que j'essaye d'obtenir c'est une macro qui viendra effacer les lignes correspondant à celle que je mets à jour (si cette ref a déjà été renseignée précédemment).

les cellules peuvent être dé-fusionné mais il y a tjr les 2 lignes correspondante à effacer quand même.
bref j'espere que cela t'aide et merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
23 avril 2013 à 22:44
Re,

cela change tout, si je comprends bien il s'agit de supprimer les nouvelles lignes qui viendraient en doublons, c'est cela

Et comment viennent ces infos dans ce tableau manuellement, macro ou formule
0
Non non, les infos se rajoute via une macro et il faut supprimer (si il y a un doublon dans la colonne C) l'ancien enregistrement.

je ne sais pas si c'est très clair tu comprends?
0
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
24 avril 2013 à 08:28
Re,

essaye ce bout de code voir

Sub SupDoublon()
'
Doublon = Range("C65000").End(xlUp).Value
If Application.CountIf(Range("C2:C" & Range("C65000").End(xlUp).Row), Doublon) > 1 Then
Range("C65000").End(xlUp).EntireRow.Select
Selection.EntireRow.Delete
End If
End Sub

0
Bonjour Mike-31 et merci encore.

Je viens d'essayer la macro... c'est un bon début mais si elle trouve un doublon elle supprime la ligne que je rajoute... or moi je souhaiterais qu'elle supprimer l'ancienne ligne...

si cela peut t'aider en colonne F j'ai la date d'enregistrement de la ligne (format date jj/mm/aaaa) peut être qu'on pourrait annuler la ligne en doublon la plus ancienne?

Merci en tout cas
0
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
Modifié par Mike-31 le 24/04/2013 à 19:10
Re,

je remet ma réponse, la première s'est perdu, je ne la vois pas

colle ce code dans les propriétés de ta feuille à la place du dernier, si tu as des données colonne I dit le moi avant et dis moi quelle colonne je peux utiliser. Ce code s'applique colonne C de la ligne 2 à 100

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Range("I2:I100").FormulaR1C1 = "=COUNTIF(RC3:R100C[-6],RC[-6])"
For i = 1 To 100
If Cells(i, 9) >= 2 Then Range(Cells(i, 9), Cells(i - 1, 9)).EntireRow.Delete
Next i
[I:I].ClearContents
End Sub


Si le code fonctionne, il faudra certainement mettre le code dans un bouton activeX afin de pouvoir travailler sur la feuille et déclencher manuellement la macro

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
24 avril 2013 à 21:12
Re,

comme tu as une cellule fusionnée en tête de ligne du tableau que j'ai zappée, ce qui supprime 4 lignes il faut simplifier le code, pour un bouton activex par exemple

Private Sub CommandButton1_Click()
Dim i As Long
Range("I2:I100").FormulaR1C1 = "=COUNTIF(RC3:R100C[-6],RC[-6])"
For i = 1 To 100
If Cells(i, 9) >= 2 Then Cells(i, 9).EntireRow.Delete
Next i
[I:I].ClearContents
End Sub
0
re Mike-31...

excuses moi du retard...
j'ai tester cette dernière macro... a moins que je ne sache pas l'utiliser... elle ne fonctionnes pas...en tout cas pas avec mon fichier snif!

tu me dis que les cellules fusionnées posent problème... dans ce cas... pourrait-on défusionner les cellules et inventer une macro qui fasse le calcul suivant:

elle vérifie si il y a des cellules identique dans la colonne C... si il y en a elle prend la macro la plus ancienne en se basant sur la date renseignée dans la colonne F....
et elle efface la ligne ou il y a le doublon le plus ancien + la ligne juste en dessou....

je te précise que sur le fichier original... les colonnes sont toutes prise sauf A et B.

je te laisse un fichier pour que tu puisses tester si tu le veux bien.

http://cjoint.com/13av/CDCt6NbFuGp.htm

Merci beaucoup de ton aide, merci vraiment !
0
juste une précision...
je remarque que la macro possède une limite Range("I2:I100") mais mon tableau est amené à avoir bien bien plus de ligne...
dois-je allonger la fourchette?

merci beaucoup
0
SSuuupppeeerrrr !!!!!


Merci beaucoup Mike-31.
ça marche parfaitement !

je suis intéressé pour apprendre les macros de façon plus approfondis, tu me conseillerais de commencer par ou?

Merci encore!!!!
0
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
29 avril 2013 à 14:24
Re,

Déjà bien connaitre Excel, ensuite se créer des besoins et les régler par VBA et suivant ton niveau, te procurer une notice pas trop compliquée au départ.
Ensuite tu t'inscris comme membre sur un forum informatique exemple sur Comment ça Marche bien sur, suivre des discussions et essayer de les solutionner par toi même et les corriger avec les réponses qui sont données.
Tu peux également exposer un problème rencontré sur le forum et ne pas perdre de vue les aides intégrés et n'oublie pas Google est ton ami ou tu trouveras inévitablement des réponses
0