Suppression lignes selon valeur cellule
Résolu
Evedll
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
Evedll Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
Evedll Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai essayé de saisir des lignes VBA pour supprimer un nombre de ligne (6 ou 7 en fonction des données) selon une valeur trouvée dans la colonne A ("Noé v2017") qui revient en boucle. Je ne sais pas faire de boucle malgré mes différentes recherches donc j'ai trouvé l'astuce d'utiliser la touche F4 après savoir lancé ma macro afin qu'elle se répète en boucle (je sais ce n'est pas ce qu'il faut faire mais en attendant mieux...). Est-il possible de m'aider à créer cette boucle.
Par la suite, si c'est possible, j'aimerai pouvoir effectuer la même manipulation en entrant dans une boite de dialogue le nom de ma recherche ("Noé v2017" ==>" Noé v2018"...) et dans une autre boite de dialogue le nombre de ligne à supprimer (5, 6 ou 7 selon mon fichier). En attendant, je modifie manuellement cette macro selon mes besoins.
Donc pour récapituler, il doit trouver le texte "Noé v201..." et à partir de cette cellule, supprimer un nombre de ligne x.
L'éditeur de macro ne permet pas cette manipulation.
Je vous remercie de bien vouloir m'aider.
Dans cette attente, je continue mes recherches
Cordialement
Evelyne
J'ai essayé de saisir des lignes VBA pour supprimer un nombre de ligne (6 ou 7 en fonction des données) selon une valeur trouvée dans la colonne A ("Noé v2017") qui revient en boucle. Je ne sais pas faire de boucle malgré mes différentes recherches donc j'ai trouvé l'astuce d'utiliser la touche F4 après savoir lancé ma macro afin qu'elle se répète en boucle (je sais ce n'est pas ce qu'il faut faire mais en attendant mieux...). Est-il possible de m'aider à créer cette boucle.
Sub Supp_Lignes_Noe() ' ' 'Range("A1").Select Columns("A:A").Select 'ActiveCell.Columns("A:A").EntireColumn.Select Selection.Find(What:="Noé v2017", After:=ActiveCell).Activate ActiveCell.Offset(0, 0).Range("1:7").EntireRow.Select Selection.Delete Shift:=xlUp 'Selection.ClearContents End Sub
Par la suite, si c'est possible, j'aimerai pouvoir effectuer la même manipulation en entrant dans une boite de dialogue le nom de ma recherche ("Noé v2017" ==>" Noé v2018"...) et dans une autre boite de dialogue le nombre de ligne à supprimer (5, 6 ou 7 selon mon fichier). En attendant, je modifie manuellement cette macro selon mes besoins.
Donc pour récapituler, il doit trouver le texte "Noé v201..." et à partir de cette cellule, supprimer un nombre de ligne x.
L'éditeur de macro ne permet pas cette manipulation.
Je vous remercie de bien vouloir m'aider.
Dans cette attente, je continue mes recherches
Cordialement
Evelyne
A voir également:
- Vba supprimer des lignes en fonction d'une valeur
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Fonction si et - Guide
- Partager des photos en ligne - Guide
- Comment supprimer une application préinstallée sur android - Guide
3 réponses
Bonjour
Function FindAll(ByVal sText As String, ByRef oRange As Range, ByRef arMatches() As String) As Boolean ' -------------------------------------------------------------------------------------------------------------- ' FindAll - To find all instances of the1 given string and return the row numbers. ' If there are not any matches the function will return false ' -------------------------------------------------------------------------------------------------------------- On Error GoTo Err_Trap Dim rFnd As Range ' Range Object Dim iArr As Integer ' Counter for Array Dim rFirstAddress ' Address of the First Find ' ----------------- ' Clear the Array ' ----------------- Erase arMatches Set rFnd = oRange.Find(what:=sText, LookIn:=xlValues, lookAt:=xlPart) If Not rFnd Is Nothing Then rFirstAddress = rFnd.Address Do Until rFnd Is Nothing iArr = iArr + 1 ReDim Preserve arMatches(iArr) arMatches(iArr) = rFnd.Row 'rFnd.Address pour adresse complete ' rFnd.Row Pour N° de ligne Set rFnd = oRange.FindNext(rFnd) If rFnd.Address = rFirstAddress Then Exit Do ' Do not allow wrapped search Loop FindAll = True Else ' ---------------------- ' No Value is Found ' ---------------------- FindAll = False End If ' ----------------------- ' Error Handling ' ----------------------- Err_Trap: If Err <> 0 Then MsgBox Err.Number & " " & Err.Description, vbInformation, "Find All" Err.Clear FindAll = False Exit Function End If End Function Sub deleteByValue() Dim arMatches() As String Dim valcherch As String Dim Sh As Worksheet Dim rng As Range Set Sh = ThisWorkbook.Sheets("Feuil1") Set rng = Sh.Range("A1:A100") valcherch = "Noé v2017" bFound = FindAll(valcherch, rng, arMatches()) If bFound = True Then nbElemTrouve = UBound(arMatches) For i = 1 To nbElemTrouve Debug.Print (arMatches(i)) 'ici tu peux mettre le code de suppression '... Next End If End Sub
Je viens de voir que le miens pourrait te causer des difficultés....
En effet, il faudra faire la boucle en partant de la fin (comme dans l'exemple de ThauTheme ) cas sinon les Numéros de lignes ne seront plus les bons au fur et à mesure que tu les supprimera )
Oui j'ai essayé ce matin avec un peu de mal. Je vais donc voir celui de ThauTheme.
Cependant, je te remercie beaucoup de m'aider car je n'ai jamais appris et c'est difficile seule mais je progresse avec l'aide de vous tous.
Cordialement
Evelyne