Supprimer ligne entière tableau selon 1 critère Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
Samzou974
Membre habitué
Membre habitué
Messages : 108
Inscrit le : 14 novembre 2018
Version d'Excel : 2007 FR

Message par Samzou974 » 19 novembre 2018, 06:52

Bonjour,
j'essaye de mettre en place une fonction simple = supprimer les lignes d'un tableau ("Tableau4" de la feuille "COMMANDE") contenant le mot présent dans la cellule sélectionnée.
Les premières lignes du code me permettent d'imprimer une autre feuille selon la valeur de la cellule sélectionnée (ce code fonctionne).

Private Sub Imp_partielle_Click()
Sheets("PARTIELLE").Range("C3").Value = ActiveCell.Value
Sheets("PARTIELLE").PageSetup.Orientation = xlPortrait
Sheets("PARTIELLE").PrintOut Copies:=1, Collate:=True

Dim i As Integer
With ThisWorkbook.Sheets("COMMANDE")
For i = .Range("Tableau4[FOURNISSEUR]" & .Rows.Count).End(xlUp).Row To 2 Step -1
If .Range("Tableau4[FOURNISSEUR]" & i).Value = ActiveCell.Value Then
.Rows(i).Delete
End If
Next i
End With
End Sub

A priori, j'ai tout faux..
Qu'en pensez-vous ?
GESTION STOCK6 - test.xlsm
(202.21 Kio) Téléchargé 9 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'342
Appréciations reçues : 297
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 19 novembre 2018, 07:16

Bonjour,

c'est dangereux de commencer une macro de cette façon,
Sheets("PARTIELLE").Range("C3").Value = ActiveCell.Value
sans vérifier d'abord ce que contient la cellule active.
ou si la cellule active est situer sur tel colonne ou tel ligne.
ou bien si la cellule active n'est pas vide.
Vive ces nouvelles saisons qui nous colorent.
isabelle
S
Samzou974
Membre habitué
Membre habitué
Messages : 108
Inscrit le : 14 novembre 2018
Version d'Excel : 2007 FR

Message par Samzou974 » 19 novembre 2018, 07:31

Ah... en effet la cellule active doit être une cellule du tableau 5.
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'342
Appréciations reçues : 297
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 19 novembre 2018, 07:50

re,

essayer,
Set isect = Application.Intersect(ActiveCell, Range("H3:H10"))
If Not isect Is Nothing And ActiveCell <> "" Then

'la suite de votre code

End If
Vive ces nouvelles saisons qui nous colorent.
isabelle
S
Samzou974
Membre habitué
Membre habitué
Messages : 108
Inscrit le : 14 novembre 2018
Version d'Excel : 2007 FR

Message par Samzou974 » 19 novembre 2018, 10:49

Merci beaucoup pour ce conseil !
Effectivement c'est moins dangereux de cette manière !
Et... pour ce qui est de ma demande initiale, auriez-vous une réponse à apporter ?
Il semble que cette partie du code pose problème :

Dim i As Integer
With ThisWorkbook.Sheets("COMMANDE")
For i = .Range("Tableau4[FOURNISSEUR]" & .Rows.Count).End(xlUp).Row To 2 Step -1
If .Range("Tableau4[FOURNISSEUR]" & i).Value = ActiveCell.Value Then
.Rows(i).Delete
End If
Next i
End With

L'objectif est de supprimer toutes les lignes du "Tableau4" qui contiennent le mot de la cellule sélectionnée (ActiveCell).
Mais ce code ne semble pas fonctionner.
Qu'en pensez-vous ?
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'342
Appréciations reçues : 297
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 19 novembre 2018, 17:32

re,

à tester,
Dim i As Integer, valeur
With ThisWorkbook.Sheets("COMMANDE")
 valeur = ActiveCell.Value
 For i = .Range("Tableau4[FOURNISSEUR]").Rows.Count + 1 To 2 Step -1
  If .Range("Tableau4[FOURNISSEUR]")(i).Value = valeur Then
   .Rows(i).Delete
  End If
 Next i
End With
End Sub
Vive ces nouvelles saisons qui nous colorent.
isabelle
S
Samzou974
Membre habitué
Membre habitué
Messages : 108
Inscrit le : 14 novembre 2018
Version d'Excel : 2007 FR

Message par Samzou974 » 21 novembre 2018, 12:32

Magnifique,
merci mille fois pour ces précieux conseils !!
Bonne journée !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message