XL 2019 completer une procedure

MOmichel

XLDnaute Junior
bonjour
je suis en cours pour compléter une procédure et j'ai du mal (je suis un debutant)

dans le module 3 du fichier joint je voudrais dans l'onglet "Extract Achat" effacer les cellules de la colonne D ayant des texte differents de MNF-*

1607609682356.png


ou plus simplement il faudrait que chaque fois que je lance la procédure après certain pas que j'ai écris j'arriverai à faire le descriptif ci-dessous
en exemple
- supprime la ligne 8 entière dans l'exemple au dessus en ayant concaténer les cellules

1607610374918.png

le resultat voulu

1607609814722.png


par avance
merci pour votre aide
 

Pièces jointes

  • 1607610039770.png
    1607610039770.png
    4.8 KB · Affichages: 11
  • essai manquant.xlsm
    389 KB · Affichages: 6
  • mm.txt
    2.4 KB · Affichages: 2
Solution
Voilà
VB:
Sub Supprime()
Dim L%, i%
Application.ScreenUpdating = False
With Sheets("Extract Achat")
    For L = .Range("D65500").End(xlUp).Row To 8 Step -1
        If .Cells(L, "D") <> "" Then
            If Left(.Cells(L, "D"), 4) <> "MNF-" Then
                For i = 6 To 52
                    If Cells(L - 1, i) + Cells(L, i) <> 0 Then
                        Cells(L - 1, i) = Cells(L - 1, i) + Cells(L, i)
                    End If
                Next i
                Cells(L, 1).EntireRow.Delete
            End If
        End If
    Next L
End With
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour MoMichel,
Doit on effacer toute la ligne, la supprimer ou simplement supprimer les ref en MNF-* ?
Dans le dernier ca, une possibilité :
Code:
Sub SupprimeMNF()
Dim L%
Application.ScreenUpdating = False
With Sheets("Extract Achat")
    For L = 2 To .Range("D65500").End(xlUp).Row
        If Left(.Cells(L, "D"), 4) = "MNF-" Then  .Cells(L, "D") = ""
    Next L
End With
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
effacer les cellules de la colonne D ayant des texte différents de MNF-*
il faut supprimer la ligne ou la référence est différente du MNF-* dans la colonne "D"
:)
Ce module supprime toutes les lignes dont la cellule D ne commence pas par MNF-.
En clair à la fin il ne reste que les lignes contenant MNF-* en colonne D.
VB:
Sub Supprime()
Dim L%
Application.ScreenUpdating = False
With Sheets("Extract Achat")
    For L = .Range("D65500").End(xlUp).Row To 8 Step -1
        If Left(.Cells(L, "D"), 4) <> "MNF-" Then Cells(L, 1).EntireRow.Delete
    Next L
End With
End Sub
 

MOmichel

XLDnaute Junior
bonjour et d'abord un grand merci a vous pour ton intérêt a mon problème
ok je viens d'essayer et cela marche comme vous me l'avez écrit
Mais si vous pouviez intégrer dans votre code que lorsque la cellule de la colonne "D" est vide qu'il n'y ai pas d'action de suppression de ligne
Et qu'avant de supprimer la ligne que les informations des cellules F à AZ soient concaténées avec les cellules de la ligne sup
Par avance
merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Qu'entendez vous par concaténer ?
Si j'ai 2 et au dessus 3, je mets 2_3 ou je met la somme 5 ?

S'il faut faire la somme essayez :
VB:
Sub Supprime()
Dim L%
Application.ScreenUpdating = False
With Sheets("Extract Achat")
    For L = .Range("D65500").End(xlUp).Row To 8 Step -1
        If .Cells(L, "D") <> "" Then
            If Left(.Cells(L, "D"), 4) <> "MNF-" Then
                For i = 6 To 52
                    Cells(L - 1, i) = Cells(L - 1, i) + Cells(L, i)
                Next i
                Cells(L, 1).EntireRow.Delete
            End If
        End If
    Next L
End With
End Sub
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Voilà
VB:
Sub Supprime()
Dim L%, i%
Application.ScreenUpdating = False
With Sheets("Extract Achat")
    For L = .Range("D65500").End(xlUp).Row To 8 Step -1
        If .Cells(L, "D") <> "" Then
            If Left(.Cells(L, "D"), 4) <> "MNF-" Then
                For i = 6 To 52
                    If Cells(L - 1, i) + Cells(L, i) <> 0 Then
                        Cells(L - 1, i) = Cells(L - 1, i) + Cells(L, i)
                    End If
                Next i
                Cells(L, 1).EntireRow.Delete
            End If
        End If
    Next L
End With
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83