XL 2016 suppression ligne avec plusieurs critère et plusieurs cellule

962

XLDnaute Junior
Bonjour,

Dans une feuille "donné" qui peut être plus ou moins volumineux en nombre de ligne je voudrais demandé si une ligne contient "universel" dans la colonne G et FF ou MAD ou FE dans la cellule H alors supprimer la ligne.
Je ne sais pas comment faire avec plusieurs condition !

Merci de votre aide

962
 

962

XLDnaute Junior
Bonjour,

Enfin de compte j'ai plusieurs choses que je n'arrive pas à faire alors pour que ce soit plus simple je vais rajouter mon fichier.

1 - je voulais mettre en page = c'est bon j'ai fais
2 - je voulais supprimer les lignes vide = c'est bon j'ai fais
a) Ensuite je voudrais faire un tri sur le reste : chaque ligne oû contient "précadre universel" en colonne G et en H se trouve soit FF ou MAD ou FE je voudrais supprimer la ligne.
b) Ensuite toute les autre lignes oû il y a "précadre" je voudrais effacer juste les annotations en colonne H
c) Ensuite toute les lignes oû il y a écrit soit PP ou EC ou SC ou DP en colonne H je voudrais les déplacer en onglet "peinture"
d) Ensuite toute les lignes oû il y a écrit soit FF ou MAD ou FE supprimer la ligne ( en sachant qu'il faut que la condition a) et b) soit déja réalisé)
e) ensuite et là ce serait la cerise sur le gateau : j'aurais souhaité avoir un bouton supplémentaire ou en cliquant dessus une boite de dialogue me demande quel date et en fonction de cette date me supprime toute les lignes supérieur a cette date et me range en ordre croissant les blocs de lignes entre les "***" de la colonne D

Je suis compliqué mais cela me ferai gagner énormément de temps dans mon taff
Merci d'avance
 

Pièces jointes

  • suivi des urgences.xlsm
    54.3 KB · Affichages: 17

Dranreb

XLDnaute Barbatruc
Bonjour.
Si vous voulez quelque chose de rapide faite une procédure comme ça :
VB:
Option Explicit
Sub PrecadreUniversel()
Dim RngDon As Range, TBrut(), LBrut&, TFina(), LFina&, TPein(), LPein&, C&
Set RngDon = Intersect([B2:I1000000], ActiveSheet.UsedRange)
TBrut = RngDon.Value
ReDim TFina(1 To UBound(TBrut, 1), 1 To UBound(TBrut, 2)), _
      TPein(1 To UBound(TBrut, 1), 1 To UBound(TBrut, 2))
For LBrut = 1 To UBound(TBrut, 1)
   If … Then
      LFina = LFina + 1
      For C = 1 To UBound(TBrut, 2): TFina(LFina, C) = TBrut(LBrut, C)
         Next C: End If
   If … Then
      LPein = LPein + 1
      For C = 1 To UBound(TBrut, 2): TPein(LPein, C) = TBrut(LBrut, C)
         Next C: End If
   Next LBrut
RngDon.Value = TFina
Feuil2.[B2].Resize(UBound(TPein, 1), UBound(TPein, 2)).Value = TPein
End Sub
Il ne vous reste plus qu'à remplacer les '…' par les conditions qui conviennent, genre
Not (TBrut(LBrut, 6) Like "PECADRE UNIVERSEL *" And (TBrut(LBrut, 7) = "FF" _
Or TBrut(LBrut, 7) = "MAD" Or TBrut(LBrut, 7) = "FE"))
.
 

962

XLDnaute Junior
J'ai remplacer les ... par les conditions mais j'ai une erreur 13 sur les conditions !

Option Explicit
Sub PrecadreUniversel()
Dim RngDon As Range, TBrut(), LBrut&, TFina(), LFina&, TPein(), LPein&, C&
Set RngDon = Intersect([B2:I1000000], ActiveSheet.UsedRange)
TBrut = RngDon.Value
ReDim TFina(1 To UBound(TBrut, 1), 1 To UBound(TBrut, 2)), _
TPein(1 To UBound(TBrut, 1), 1 To UBound(TBrut, 2))
For LBrut = 1 To UBound(TBrut, 1)
If "FF" Then
LFina = LFina + 1
For C = 1 To UBound(TBrut, 2): TFina(LFina, C) = TBrut(LBrut, C)
Next C: End If
If "MD" Then
LPein = LPein + 1
For C = 1 To UBound(TBrut, 2): TPein(LPein, C) = TBrut(LBrut, C)
Next C: End If
Next LBrut
RngDon.Value = TFina
Feuil2.[B2].Resize(UBound(TPein, 1), UBound(TPein, 2)).Value = TPein
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
"FF" n'est pas une condition valide dans un If. Il essaye en vain de la convertir en nombre afin de la considérer vraie si elle est différente de 0.
Vous devez indiquer quel élément de tableau vous voulez comparer à "FF". Après vous pouvez combiner plusieurs conditions par des opérateurs Boolean Not, And et Or et modifier leurs priorités normales au moyen de parenthèses.
VB:
If Not (TBrut(LBrut, 6) Like "PRECADRE UNIVERSEL *" And (TBrut(LBrut, 7) = "FF" _
Or TBrut(LBrut, 7) = "MAD" Or TBrut(LBrut, 7) = "FE")) Then
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 034
Membres
104 010
dernier inscrit
Freba