H
hasardeux
Guest
Bonsoir tout le monde,
Je vous soumettre sous-dessous une macro qui me permet de:
- Mettre la colonne L en format Numérique
- De remlpacer les cellules contenant la valeur 0 par A
- Un msgbox s'affiche pour demander la valeur à chercher pour détruire ensuite les cellules concernant
- et puis de me supprimer toutes les lignes dont la cellule de la colonne A contient la valeur A après demande de confirmation
Mais, je rencontre 2 problèmes auxquels, je voudrais avoir des solutions astucieuses:
1- Eviter de traiter toute la colonne A (ce qui alourdir la macro) en se limitant juste de L2 à la dernière cellule remplie de la colonne L (qqch comme end(xlUp)
2- Si j'ai deux cellules consécutives contenant la valeur A, la macro ne supprime qu'une seule ligne. il faut exécuter la macro une 2ème fois pourqu'elle supprime l'autre ligne. comment éviter cela.
Merci beaucoup pour vos aides.
voici la macro:
Sub ChercherEtDetruire()
Dim RECHERCHE As String
Dim c As Range
Columns("L:L").Select
Selection.NumberFormat = "#,##0.00"
Selection.Replace What:="0", Replacement:="A", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False
RECHERCHE = InputBox("Votre recherche ? (attention aux Majuscules/Minuscules) ")
Range("L2").End(xlDown).Select
Set MaSelection = Range("L2:L65536")
Set Maplage = MaSelection
With Maplage
Set c = .Find(RECHERCHE, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50
'c.EntireRow.Delete (et non çà marche pas ici !!!, çà plante le "FindNext" puisque la ligne a été virée
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Alerte = MsgBox("Toutes les cellules grisées vont être supprimmées", vbYesNo, "Warning")
If Alerte = vbYes Then
For Each Cell In Maplage
If Cell.Interior.Pattern = xlPatternGray50 Then
Cell.EntireRow.Delete
End If
Next
Else: Alerte = vbNo
Maplage.Select
Selection.Interior.ColorIndex = xlNone
End If
Range("a1").Select
Set Maplage = Nothing
End Sub
Je vous soumettre sous-dessous une macro qui me permet de:
- Mettre la colonne L en format Numérique
- De remlpacer les cellules contenant la valeur 0 par A
- Un msgbox s'affiche pour demander la valeur à chercher pour détruire ensuite les cellules concernant
- et puis de me supprimer toutes les lignes dont la cellule de la colonne A contient la valeur A après demande de confirmation
Mais, je rencontre 2 problèmes auxquels, je voudrais avoir des solutions astucieuses:
1- Eviter de traiter toute la colonne A (ce qui alourdir la macro) en se limitant juste de L2 à la dernière cellule remplie de la colonne L (qqch comme end(xlUp)
2- Si j'ai deux cellules consécutives contenant la valeur A, la macro ne supprime qu'une seule ligne. il faut exécuter la macro une 2ème fois pourqu'elle supprime l'autre ligne. comment éviter cela.
Merci beaucoup pour vos aides.
voici la macro:
Sub ChercherEtDetruire()
Dim RECHERCHE As String
Dim c As Range
Columns("L:L").Select
Selection.NumberFormat = "#,##0.00"
Selection.Replace What:="0", Replacement:="A", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False
RECHERCHE = InputBox("Votre recherche ? (attention aux Majuscules/Minuscules) ")
Range("L2").End(xlDown).Select
Set MaSelection = Range("L2:L65536")
Set Maplage = MaSelection
With Maplage
Set c = .Find(RECHERCHE, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50
'c.EntireRow.Delete (et non çà marche pas ici !!!, çà plante le "FindNext" puisque la ligne a été virée
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Alerte = MsgBox("Toutes les cellules grisées vont être supprimmées", vbYesNo, "Warning")
If Alerte = vbYes Then
For Each Cell In Maplage
If Cell.Interior.Pattern = xlPatternGray50 Then
Cell.EntireRow.Delete
End If
Next
Else: Alerte = vbNo
Maplage.Select
Selection.Interior.ColorIndex = xlNone
End If
Range("a1").Select
Set Maplage = Nothing
End Sub