Macro - service de sécurité ?

  • Initiateur de la discussion Initiateur de la discussion Synopsis
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Synopsis

Guest
Bonjour,
J'utilise pour la première fois le forum, et malgré mes recherches, je n'ai pas trouvé un indice pouvant me servir.
Je souhaite créer une macro qui 'balaie' une colonne d'une autre feuille et qui, lorsqu'elle détecte une occurence précise (un nom, une référence) supprime la ligne contenant cette fameuse occurence.
J'avoue ne pas être à la hauteur de ce dilemne.

Merci de vos éclaircissements.
 
Bonsoir

Tu pourrais essayer ceci

Dim occurence As String 'je suppose qu'il s'agit de texte
Dim C as Range
Dim derlign As Integer, I as Integer

occurence = InputBox('que cherchez vouis ?')
derlign = WorkSheets('Feuil2').Range('A65536').End(XlUp).Row 'je suppose que les occurences sont dans la colonne A de la feuille 2

For I = 1 To derlign
If Range('A' & I).Value = occurence Then
Row(I).Delete
End If
Next I

Bon courage
 
Bonsoir Jacques, Synopsis, le Forum

Attention Jacques, non pas qu'il te manque un s à ton instruction :

Rows(I).Delete

Mais si notre ami a plusieurs fois une occurence précise à la suite (exemple sur 20 lignes d'affilées)... Et bien ce genre de code n'éradiquera pas toutes ces occurrences répétitives....

Ce phénomène est dû à 'Rows(I).Delete' qui, quand cette instruction est utilisée au cours d'un boucle de type 'for I to LastLign', finit par faire un décalage, ce qui est logique, on enlève des rows alors que le 'compteur' de la boucle tourne....

Donc on peut s'y prendre à l'envers :

Sub Jacques_Corrected()

Dim Occurence As String 'je suppose qu'il s'agit de texte
Dim C As Range
Dim DerLign As Integer, I As Integer

Occurence = InputBox('que cherchez vouis ?')
DerLign = Worksheets('Feuil2').Range('A65536').End(xlUp).Row
'je suppose que les occurences sont dans la colonne A de la feuille 2

   
For I = DerLign To 1 Step -1
       
If Range('A' & I).Value = Occurence Then
            Rows(I).Delete
       
End If
   
Next I

End Sub


Une autre astuce que j'ai montrée à l'époque à mon ami et compatriote @Christophe@ dans ce Fil : Lien supprimé

Consite à faire comme ceci :

Sub Eradicator()
Dim Cell As Range
Dim Occurence As String

Occurence = InputBox('que cherchez vouis ?')

   
For Each Cell In Range(Range('A1'), Range('A65536').End(xlUp))
       
If UCase(Cell) = UCase(Occurence) Then
            Cell.ClearContents
       
End If
   
Next Cell
Sheets('Feuil2').Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub


Bonne Soirée
[ol]@+Thierry[/ol]
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
1
Affichages
1 K
G
  • Question Question
2
Réponses
16
Affichages
4 K
GauthierCollas
G
M
Réponses
1
Affichages
1 K
Max60150
M
H
Réponses
20
Affichages
2 K
B
  • Question Question
Réponses
5
Affichages
1 K
Barbefeuillue
B
J
Réponses
9
Affichages
2 K
Joshua1
J
L
Réponses
9
Affichages
2 K
Retour