Microsoft 365 Recherche d'une ou de plusieurs valeurs et suppression d'une cellule à la ligne de ces dernières

ArthurSOAD

XLDnaute Nouveau
Bonjour à tous,

Petit soucis sur le code suivant :

VB:
Sub test()

    With ActiveSheet.Range("B4:D300")
        Set r = .Find("rebut")
        If Not r Is Nothing Then
            firstAddress = r.Address
            Do
            Range("E" & r.Rows).Value = ""
            Set r = .FindNext(rebut)
            Loop While Not r Is Nothing
        End If
    End With

End Sub

Il est censé rechercher dans une plage de valeur, le mot "rebut" et de supprimer la ligne de la colonne E où se trouve rebut (ex : si rebut se trouve ligne 5, la cellule E5 est effacée) ; je souhaite le répéter à chaque fois que l'on trouvera le mot dans la feuille

Problème : Je tombe dans une boucle infinie, impossible de m'en sortir
Des idées ?

Merci d'avance,
Arthur
 

chris

XLDnaute Barbatruc
Bonjour
VB:
Sub test()

    With ActiveSheet.Range("B4:D300")
        Set r = .Find("rebut")
        If Not r Is Nothing Then
            firstAddress = r.Address
            Do
            r.ClearContents
            Set r = .FindNext
            Loop While Not r Is Nothing
        End If
    End With

End Sub

Un filtre et un effacement sur les lignes filtrées ou un cherche remplace général de rebut par rien seraient sans doute tout aussi efficaces que du VBA...
 

ArthurSOAD

XLDnaute Nouveau
Je cherche à l'automatiser à la fin de tâches précises réalisés par et pour des non-utilisateurs d'excel. Un filtre ou un cherche remplace qu'il faudrait faire à chaque fois ne répondrait donc pas à mon besoin, j'aurai dû le préciser, merci tout de même

De plus, sur le code que vous avez fourni, la cellule effacée est la cellule qui contient le mot rebut; je cherche pour ma part à effacer le contenu d'une cellule appartenant à une autre colonne (d'où l'utilisation de r.Rows)

-> En gros si dans la colonne " commentaires " d'une des feuilles excels (variant de B à D) : le mot rebut est inscrit alors la date d'intervention en A de cette même ligne est effacée
 
Dernière édition:

chris

XLDnaute Barbatruc
Re

Les actions cités peuvent aussi se faire par VBA...

Eh bien utilise Offset
r.(offset(0,x) ou x est la valeur positive ou négative qui décale par rapport à la colonne de r

Mais tu devrais alors chercher sur une colonne, pas 3 colonnes il me semble, sauf si rebut peut être sur 3 colonnes
la colonne " commentaires " d'une des feuilles excels (variant de B à D)
VB:
Cells(r.row,5).ClearContents
sinon
 

ArthurSOAD

XLDnaute Nouveau
J'ai essayé avec offset cependant je n'arrive pas à selectionner seulement la ligne où se trouve rebut (cela efface toute la plage)

VB:
With ActiveSheet.Range("A7:b9")
    Set rebut = .Find("rebut")
    If Not rebut Is Nothing Then
        firstAddress = rebut.Address
        Do
            Set rebut = .FindNext(rebut)
        Range(.Offset(0, 1), .Offset(0, 2)).ClearContents
    
       
        Loop While Not rebut Is Nothing And rebut.Address <> firstAddress
    End If
End With
 

chris

XLDnaute Barbatruc
re

Tu n'as pas utilisé ce que j'ai indiqué :
Cells(r.row,5).ClearContents

ou rebut si tu n'as pas utilisé r

on s'y perd un peu dans tes plages fluctuantes mais on se base sur la cellule trouvée, pas sur la plage de recherche
 

Discussions similaires

Statistiques des forums

Discussions
315 134
Messages
2 116 613
Membres
112 811
dernier inscrit
shade1452