Suppression de lignes entières sur 2 feuilles d'un classeur [Résolu/Fermé]

Signaler
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
-
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
-
Bonjour à tous!

J'ai une question sur comment supprimer 2 lignes entières avec une valeur qui se retrouve aussi sur une autres feuille du classeur.

Dans mon fichier, j'ai une feuille de compilation s'appelant "Coordonnées" et 4 autres feuilles: CPTU, FORAGE, Piézomètres et Inclinomètre. La plupart de mes opérations se font à partir de la feuille Coordonnées.

J'ai un Userbox qui apparaît lorsque j'appui sur la touche DEL du clavier et j'ai 2 choix: effacer la cellule seulement ou bien supprime la ligne entière. Les 2 options fonctionnent bien présentement sur la page active.

Ce que veux, c'est que lorsque je clic sur l'option "ligne entière", il supprime la ligne correspondante à la valeur sélectionnée dans la feuille Coordonnée et qu'il supprime aussi la ligne correspondante à la valeur trouvée dans une des autres feuilles du classeur.

Pour ce faire, j'ai repris un code que j'avais déjà dans mon fichier qui fait le remplacement de la valeur. J'ai veux le modifier pour lui faire supprimer la ligne entière dans la feuille correspondante à l'endroit où se retrouve la valeur.
Toute la macro fonctionne jusqu'à la ligne suivant que je doit modifier:
valueRange.Replace nvalue, NewVal, lookat:=xlWhole, searchorder:=xlByColumns

Mais je ne suis pas arrivé, j'ai seulement réussi à supprimer tout les lignes de la feuille où se trouvais la valeur avec
 EntireRow.delete
.

Voici tout mon code:
Private Sub CommandButton2_Click()

Dim nvalue As String
Dim valueRange As Range

nvalue = ActiveCell.Value

If InStr(1, nvalue, "C") = 1 Or InStr(1, nvalue, "M") = 1 Then
                Set valueRange = Sheets("CPTU").Columns(1)
                
            ElseIf InStr(1, nvalue, "F") = 1 Then
                Set valueRange = Sheets("FORAGE").Columns(1)
                
            ElseIf InStr(1, nvalue, "Z") = 1 Or InStr(1, nvalue, "FZ") = 1 Then
                Set valueRange = Sheets("Piézomètres").Columns(2)
               
            ElseIf InStr(1, nvalue, "I") = 1 Then
                Set valueRange = Sheets("Inclinomètres").Columns(2)
                
            Else
                Set valueRange = Nothing
                MsgBox "La valeur n'a pas été trouvé dans les autres feuilles! Mettre à jours les feuillets sur la page d'accueil!", vbCritical
            End If
            
                If Not valueRange Is Nothing Then
                   valueRange.Replace nvalue, NewVal, lookat:=xlWhole, searchorder:=xlByColumns
                End If
                
Selection.EntireRow.Delete
end
end sub

1 réponse

Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
1
Bonjour,

J'ai finalement réussi à trouver la solution!

J'ai changé la ligne
valueRange.Replace nvalue, NewVal, lookat:=xlWhole, searchorder:=xlByColumns
pour
valueRange.Find(nvalue, lookat:=xlWhole, searchorder:=xlByColumns).EntireRow.Delete


Et ça fonctionne!