Suppression de ligne d'un onglet en fonction de valeur contenue dans un onglet de référence

Juldax

XLDnaute Nouveau
Bonjour à tous,
Je reviens vers vous avec une nouvelle colle :
j'ai un fichier excel possédant N onglet, j'ai 1 onglet représentant une base de donnée à jour selon différent critéres(N-1), et N-1 onglets représentant des segments de cet base et qui eux ne sont pas forcément à jour.
ceux que je souhaiterais c'est : Si une information n'est pas contenue dans l'onglet à jour mais l'est dans un des autres onglets, cet ligne soit supprimés.
Je vous joins un fichier Excel représentant cet demande ainsi qu'une macro de mauvaise qualité qui ne semble pas fonctionné ... (je début seulement VBA donc soyez indulgent :D)
Donc dans l'onglet total, les seuls lignes à jours son tles lignes contenant les "Id" : 1,2 et 3. Il ne faudrait donc retrouver que les lignes dont les "Id" sont : 1,2 et 3 dans les autres onglets et supprimer les autres.

Voila sur quel base je suis partis avec mes toutes nouvelles compétences en programmation VBA :
upload_2017-6-21_12-2-12.png

Si vous y voyez des abérations, je vous seraient infiniment reconnaissant de me transmettre un petit peu de votre savoir :oops:

Merci d'avance
 

Pièces jointes

  • Test.xlsm
    21.2 KB · Affichages: 18

vgendron

XLDnaute Barbatruc
Hello

Essaie avec juste ce code
VB:
Sub proc()
Dim onglet As Worksheet, compteur As Integer, plageRef, PlageToUpdate As Range
Set plageRef = Sheets("Total").UsedRange
'plageRef.Select
For Each onglet In Sheets
    If onglet.Name <> "Total" Then
        Set PlageToUpdate = onglet.UsedRange
        'PlageToUpdate.Select
        For compteur = PlageToUpdate.Rows.Count To 2 Step -1
            Set c = plageRef.Find(PlageToUpdate(compteur, 1))
            If c Is Nothing Then
                PlageToUpdate(compteur, 1) = ""
                PlageToUpdate(compteur, 2) = ""
            End If
            Next compteur
    End If
Next onglet
End Sub
 

Juldax

XLDnaute Nouveau
Ok merci vgendron, et quand on fait utilise une méthode comme find sur une plage, on à pas besoin de séléctionné la plage d'abord ? On à juste besoin de la préciser ? Excuse moi tout ça et encore un peu flou pour moi
 

vgendron

XLDnaute Barbatruc
Hello

on à pas besoin de séléctionné la plage d'abord ?

non, il faut juste s'assurer qu'elle soit bien définie au préalable.. avec le set..
en fait. VBA n'a normalement quasiment JAMAIS besoin qu'on sélectionne une range, ou data pour travailler dessus. pour peu qu'elle soit correctement définie.. Quasiment parce qu' honnetement.. j'avoue ne pas toujours maitriser la chose.. :)
c'est d'ailleurs pour ca que bien souvent, j'ai des .select qui trainent dans mon code et qui parfoient finissent en commentaires :)
 

Discussions similaires