[Résolu] Supprimer ligne sous condition

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 !

Lone-wolf

XLDnaute Barbatruc
Bonsoir le Forum,

Dans le fichier joint, j'aimerais supprimer une ligne sous condition.

Dans la Macro de la feuille Intro Stock Intermédiaire ( bouton: SORTIR DU STOCK-donner à l'atelier), il faut ajouter cette action:

Si la cellule de la colonne Titre et la cellule de la colonne Poids brut de la feuille Stock Int.-entrées sont égales aux même cellules de la feuille Poids Atelier alors, supprimer ligne de la feuille Stock Int.-entrées.


Merci d'avance


FICHIER-JOINT



A+ 😎
 
Dernière édition:
Re : Supprimer ligne sous condition

Bonsoir Lone-wolf, le forum,

Peut être avec ça (si j'ai bien compris, parce que pas très clair) :

VB:
Sub Test()
Set SIE = Sheets("Stock Int.-entrées")
Set SIS = Sheets("Stock Int.-sorties")
DerL = SIS.Cells(65536, 2).End(xlUp).Row
With SIS
For i = 2 To DerL
  Rech = .Cells(i, 2).Value
  j = SIE.Range("B:B").Find(Rech).Row
    If .Cells(i, 3) = SIE.Cells(j, 3) _
        And .Cells(i, 5) = SIE.Cells(j, 5) Then
    SIE.Cells(j, 1).EntireRow.Delete
    End If
Next
End With
End Sub

A te relire

Martial

PS : si ce n'est pas ça, peut être faudrait-il plus de données et des exemples plus réalistes.
 
Dernière édition:
Re : Supprimer ligne sous condition

Bonjour Martial,

merci pour le coup de pouce. La macro supprime bien une ligne dans stock int.-entrées, mais pas la bonne.

Je vais essaié de donné un exemple plus précis:

SI Sheets("Poids Atelier").Range("C3" - Titre) ET Sheets("Poids Atelier").Range("C5" - Poids brut) sont égales à Sheets("Stock Int.-entrées").Range("C3") ET Sheets("Stock Int.-entrées").Range("C5") .

Recherche ligne dans Sheets("Stock Int.-entrées") et supprime.

Oubien: Pour chaque entrée dans "Poids Atelier" identique à "Stock Int.-entrées" - supprimer ligne dans "Stock Int.-entrées".

J'éspère avoir été plus clair. 😱



A+ 😎
 
Dernière édition:
Re : Supprimer ligne sous condition

Re,

Désolé, mais en journée je bosse 😱

Regardes avec ceci :

VB:
Sub Test()
On Error Resume Next
Set SIE = Sheets("Stock Int.-entrées")
Set pa = Sheets("Poids Atelier")
 DerL = pa.Cells(65536, 2).End(xlUp).Row
With pa
For i = 2 To DerL
   Rech = .Cells(i, 2).Value
   j = SIE.Range("B:B").Find(Rech).Row
     If .Cells(i, 3) = SIE.Cells(j, 3) _
         And .Cells(i, 5) = SIE.Cells(j, 5) Then
     SIE.Cells(j, 1).EntireRow.Delete
     End If
Next
End With
On Error GoTo 0
End Sub

A te relire

Martial
 
Re : Supprimer ligne sous condition

Bonsoir Yaloo,

ça ne donne toujours rien, désolé.

Voici les macros de la feuille Intro Stock intermédiaire.

Code:
Sub Stock_Entrees()
poids_pal = 21
poids_cadres = 22
Application.ScreenUpdating = False

If [E8] <> "" Or [F11] <> "" Then
With Sheets("Stock Int.-entrées")
 lig = .[A65536].End(xlUp).Row + 1 'calcul de ligne
 pn = [E14].Value - poids_pal - (poids_cadres * [F11].Value)            'Poids net
 If lig = 2 Then
 num = 320
 Else
 num = .Cells(lig - 1, 2) + 1
 End If
 .Cells(lig, 1) = [E8]    'Nom magasinier
 .Cells(lig, 2) = num     'Numéro de palette
 .Cells(lig, 3) = [D3]    'Titre
 .Cells(lig, 4) = [F11]   'Cadres
 .Cells(lig, 5) = [E14]   'Poids brut
 .Cells(lig, 6) = [E17]   'Date du jour
 .Cells(lig, 7) = pn      'Poids net
  End With
End If
[E8] = ""
[E14] = ""
[F11] = ""
With Sheets("Feuille à imprimer 2")
imprime_Stock
.PrintOut Preview:=True 'aperçu avant impression
Sheets("Intro Stock Intermédiaire").Activate
End With
Application.ScreenUpdating = True

End Sub

Sub Stock_Sorties()
Application.ScreenUpdating = False

If [E8] <> "" Or [F11] <> "" Then

poids_pal = 21
poids_cadres = 22

With Sheets("Stock Int.-sorties")
 lig = .[A65536].End(xlUp).Row + 1                                'Calcul de ligne
 pn = [E14].Value - poids_pal - (poids_cadres * [F11].Value)            'Poids net
 If lig = 2 Then
 num = 320
 Else
 num = .Cells(lig - 1, 2) + 1
 End If
 .Cells(lig, 1) = [E8]    'Nom magasinier
 .Cells(lig, 2) = num     'Numéro de palette
 .Cells(lig, 3) = [D3]    'Titre
 .Cells(lig, 4) = [F11]   'Nombre de cadres
 .Cells(lig, 5) = [E14]   'Poids brut
 .Cells(lig, 6) = Date   
 .Cells(lig, 7) = pn      'Poids net
 End With
With Feuil26
   pn = [E14].Value - 21 - (22 * [F11].Value)            'Poids net
  lig = .[A65536].End(xlUp).Row + 1
   If lig = 2 Then
 num = Sheets("Stock Int.-entrées").Cells(lig, 2)
 Else
 num = .Cells(lig - 1, 2) + 1
 End If
 .Cells(lig, 1) = [E8]   'Nom magasinier
 .Cells(lig, 2) = num    'N° de palette
 .Cells(lig, 3) = [D3]   'Titre
 .Cells(lig, 4) = [F11]  'Nombre de cadres
 .Cells(lig, 5) = [E14]  'Poids brut
 .Cells(lig, 6) = Date  
 .Cells(lig, 7) = pn     'Poids net
End With
End If
[E8] = ""
[E14] = ""
[F11] = ""
Application.ScreenUpdating = True
End Sub

Est-ce que c'est possible de simplifier un peu ta macro?


A+ 😎
 
Re : Supprimer ligne sous condition

Bonsoir Lone-Wolf,

Tu veux la suppression lorsque tu lances ta macro Sub Stock_Entrees() ou Sub Stock_Sorties() ?

Il suffit de mettre Call Test à la fin de la macro voulue. Ou copier les lignes de la macro Test(), à la fin de la macro voulue.

A te relire

Martial
 
Re : Supprimer ligne sous condition

Bonsoir Martial,

la macro devrait se lancer avec Sub Stock_Sorties, ce que j'ai fait.

Voici ce qui se passe (TEST): si je recherche la première ligne, pas de problème, si par contre je recheche la 3ème ligne ou la 7ème par ex., la macro ne réagit plus même en enlevant On Error.


A + 😎
 
Re : Supprimer ligne sous condition

Re,

Peux tu remettre un exemple (en fichier) avec plusieurs lignes, ainsi que la macro adapté à ton fichier.

Si tu peux mettre également ce que tu attends de la macro avec des "zones de texte" cela permet de mieux cerner le problème (sans pour autant changer les données).

A te relire

Martial
 
Re : Supprimer ligne sous condition

Re, Martial

le fichier est dans mon premier post.

Edit: j'ai trouvé. Il fallait juste rajouter + 1 sur la ligne:

j = SIE.Range("B:B").Find(Rech).Row - j = SIE.Range("B:B").Find(Rech).Row + 1


Merci infiniment pour ta patience et pour ton aide.



Amicalement - Lone-wolf (Dodo)
 
Dernière édition:
- 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

Réponses
5
Affichages
370
Réponses
3
Affichages
443
Retour