ECEL - VBA - suppression de lignes si valeur est contenue dans la liste

  • Initiateur de la discussion Initiateur de la discussion airsage
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

airsage

XLDnaute Junior
Bonjour,

Je voudrais créer une macro qui me supprime, non pas toute la ligne, mais me décaler vers le haut certaines colonnes.

Dans l'exemple du fichier envoyé, je voudrais que si la valeur qui est dans la colonne "Q" est contenue dans la colonne "S", les valeurs entre le colonne "A" et la colonne "O" soient supprimées et le tableau décalé de une colonne vers le haut.

Dans le fichier joint, les cellules "A:O" des lignes 7 et 11 doivent etre supprimées et le tableau doit etre remonté de une ligne vers le haut

Merci par avance de votre aide.
 

Pièces jointes

Re : ECEL - VBA - suppression de lignes si valeur est contenue dans la liste

Bonsoir Airsage, bonsoir le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim dls As Integer 'déclare la variable dls (Dernière Ligne de la colonne S)
Dim dlq As Integer 'déclare la variable dlq (Dernière Ligne de la colonne Q)
Dim plq As Range 'déclare la variable plq (PLage de la colonne Q)
Dim li As Integer 'déclare la variable li (LIgne)
Dim cq As Range 'déclare la variable cq (Cellule de la colonne Q)

With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    dls = .Cells(Application.Rows.Count, 19).End(xlUp).Row 'définit la dernière ligne dls de la colonne s
    dlq = .Cells(Application.Rows.Count, 17).End(xlUp).Row 'définit la dernière ligne dlq de la colonne q
    Set plq = .Range("Q1:Q" & dlq) 'définit la plage de la colonne q
    For li = dls To 1 Step -1 'boucle 1 : inversée de la dernière ligne de la colonne s à la première
        For Each cq In plq 'boucle 2 : sur toutes les valeurs de la plage plq
            If .Cells(li, 19) = cq.Value Then 'conditon : si les deux cellules sont égales
                'suprime les cellules de la ligne des colonne A à 0 en décalant les cellules vers le haut
                .Cells(li, 1).Resize(1, 15).Delete shift:=xlShiftUp
                Exit For 'sort de la boucle 2
            End If 'fin de la condition
        Next cq 'prochaine cellule de la boucle 2
    Next li 'prochaine cellule de la boucle 1
End With 'fin de la prise en compte de l'onglet "Feuil1"
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour