XL 2016 Suppression de lignes d'un onglet à un autre sous conditions

dridriboulot

XLDnaute Nouveau
Bonjour à tous,

J'ai parcouru le forum en vain et je n'ai pas trouvé de réponse à ma question.

J'explique le problème et je joindrai un fichier exemple pour visualiser le tout.

Dans le premier onglet "résidus", j'ai 2 colonnes :
- une qui est le numéro d'identification
- l'autre qui représente les résidus issus d'une régression.

Dans le 2ème onglet "base_de_donnees", j'ai:
- le numéro d'identification
- l'année
- le coefficient de variation

Mon objectif est de supprimer toutes les lignes de l'onglet "base_de_donnees" qui ont leurs numéros d'identification qui apparait dans le premier onglet.

Par exemple, le numéro d'identification 282488 (ligne 2) apparait dans l'onglet résidus. Il faut donc le supprimer de l'onglet base_de_donnees (ce numéro apparaît pour ce cas la à la ligne 177) et ainsi de suite.

Pourriez vous me donner un coup de main ?

Je vous remercie par avance :)

Dridri
 

Pièces jointes

  • Optimisation_regression.xlsm
    210.9 KB · Affichages: 47

Lone-wolf

XLDnaute Barbatruc
Bonsoir Dridri

Faut pas racconter ich n'mporte quoi o_O. Moi en à peine 2 minutes j'ai trouvé ceci et que j'ai modifié pour test. À mettre dans le module de la feuille résidus.

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long
With Sheets("base_de_donnees")
            For i = .Range("a" & .Rows.Count).End(xlUp).Row To 2 Step -1
                        If .Range("a" & i).Value = ActiveCell.Value Then
                                   .Rows(i).Delete
                        End If
            Next i
End With
Cancel = True
End Sub
 

DoubleZero

XLDnaute Barbatruc
Bonjour, dridriboulot, Lone-wolf :), le Forum,

Une autre suggestion avec le code suivant :
VB:
Option Explicit
Sub Ligne_supprimer()
    Dim c As Range
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
    On Error Resume Next
    With Sheets("residus")
        For Each c In .Range(.Range("a2"), .Range("a2").End(xlDown)).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants)
            Sheets("base_de_donnees").[a:a].Replace c, c(1, 56), xlWhole
        Next
    End With
    Sheets("base_de_donnees").Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub
A bientôt :)
 

dridriboulot

XLDnaute Nouveau
Lone-Wolf, DoubleZero je vous remercie infiniment pour vos réponses si rapide, ca m'enlève un belle épine du pied et surtout évite d'aggraver ma calvitie :D
L'option de Lone-Wolf est plus rapide dans le traitement de ma base de données. Je vais essayer de la comprendre mnt :cool:

Bonne soirée à vous :)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali