Suppression de lignes entières sur 2 feuilles d'un classeur

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 16 mars 2015 à 19:04
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 17 mars 2015 à 13:59
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
A voir également:

1 réponse

bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
17 mars 2015 à 13:59
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!
0