Bonjour,
Comment faire pour supprimer une ligne dans Excel a l'aide de VBA.
Merci par avance .
Bonjour,
Comment faire pour supprimer une ligne dans Excel a l'aide de VBA.
Merci par avance .
Pour supprimer une ligne Excel avec VBA, il y a plusieurs possibilités :
- appuyer sur F1
ou
- appuyer ici
ou
- tomber sur quelqu'un de gentil qui ne part pas manger maintenant![]()
De rien,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Rows(i).Select Selection.Delete Shift:=xlUp
Merci, pour ta réponse. En fait je dois te dire que je ne suis pas vraiment un developpeur VBA, mais plutot JAVA.
J'ai actuellement une feuille excell, ou je dois effacer certaines lignes. Je dois normalement commencer a partir de la deuxième ligne, et si cette ligne possède les critères pour être effacé, je dois vérifier la ligne précédente pour voir si elle a des caractéristiques commune avec la ligne en cours, et si oui, les deux lignes sont supprimés, sinon seulement la ligne en cours l'est.
Et la j'avoue que mes connaissance en Java ne m'aide pas trop ici.
Je ne sais pas si j'ai été assez clair, si oui, peux tu m'orienter un peu stp.
Merci par avance.
C'est pas encore l'heure, alors une idée : Montre ton code qu'on puisse adater, c'est plus rapide que d'avoir à tout réécrire![]()
Déjà, jète un oeil là pour connaître la dernière ligne de la plage à examiner.
Une fois que tu connais la dernière ligne, on pourra en déduire la plage.
Avec la plage, on peut faire une boucle. Pour l'idée :
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub EffacerLesDoublons() 'efface deux lignes à la fois Dim Plage As Range, Cell As Range Set Plage = Range("A2:A18") For Each Cell In Plage If Cell.Value = Cell.Offset(-1, 0) Then Cell.Offset(-1, 0).EntireRow.Delete Cell.EntireRow.Delete End If Next Set Plage = Nothing End Sub
Edit
Pour établir la plage avec DerniereLigne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DerniereLigne = 18 'Set Plage = Range("A2:A18") 'que tu remplaces par Set Plage = Range("A2:A" & DerniereLigne)
J'y vois un peu plus clair.
Je n'ai pas encore entrer de code car je ne voulais pas n'importe quoi.
En fait ma feuille est constitué de colonnes allant de A jusqu'a O.
Voici en gros l'algorithme.
On doit parcourir la feuille en entier en commençant par la ligne numéro 2.
Pour chaque ligne x (x représentant le numéro de la ligne), voir si le contenu de la colonne B (Bx), voir si Bx<>"01" :
Si c'est le cas alors voir si le contenu de Cx-1=Cx (équivalent a voir si le contenu de la colonne C de la ligne précédente est égale au contenu de la Colonne C de la ligne en cours, c'est également pour cela que l'on commence a partir de la ligne numéro 2) &&(ET logique) voir si Dx-1=Dx (même explication que précedemment)
Si c'est deux condition sont vérifiées alors effacer la ligne x et la ligne x-1 soit la ligne en cours et la ligne précédente.
Sinon effacer uniquement la ligne en cours celle ou la valeur de Bx="01".
Continuer jusqu'a la fin de la feuille.
J'espère avoir été un peu plus clair. En tout cas merci pour votre aide.
Regarde si les conditions sont les bonnes (tu mets une fois <> "01" puis "celle ou la valeur de Bx="01"
Et puis tu testes
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub EffacerLesDoublons() 'efface deux lignes à la fois ou une seule... Dim Plage As Range, Cell As Range DerniereLigne = 18 'Set Plage = Range("B2:B18") Set Plage = Range("B2:B" & DerniereLigne) For Each Cell In Plage If Cell.Value = "01" Then 'ou <> "01" ? If Cell.Offset(0, 1).Value = Cell.Offset(-1, 1).Value _ And Cell.Offset(0, 2).Value = Cell.Offset(-1, 2).Value Then Cell.Offset(-1, 0).EntireRow.Delete Cell.EntireRow.Delete Else Cell.EntireRow.Delete ' si Cell.value = "01" End If End If Next Set Plage = Nothing End Sub
Génial. C'est parfaitement ça.
Comment faire pour intégrer ce programme sur ma feuille excel stp.
Merci.
Partager