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
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
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:
- Aide sur une macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Calculer une moyenne sur excel - Guide
- Trier sur excel - Guide
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
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
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
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
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
effectivement avec le fichier ce sera mieux, tu peux le joindre à partir de ce lien
https://www.cjoint.com/
quelle colonne dois tu tester
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
http://cjoint.com/13av/CDxwa6bDaaA.htm
je t'ai mis en jaune exactement les colonnes qui doivent être analysées
Merci beaucoup
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
23 avril 2013 à 22:30
Re,
ce qui pose problème sont tes cellules fusionnées, je regarde ce qui peut être fait
ce qui pose problème sont tes cellules fusionnées, je regarde ce qui peut être fait
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
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
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
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
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
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?
je ne sais pas si c'est très clair tu comprends?
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
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
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
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
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
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
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.
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.
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
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
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
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 !
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 !
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!!!!
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!!!!
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
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
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