• Initiateur de la discussion Initiateur de la discussion ELISE
  • 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 !

E

ELISE

Guest
BONJOUR A TOUTES ET A TOUS!!!!

j'ai tjs un problème avec ma macro, j'ai essayé de l'étendre à plusieurs cellules mais ca ne marche pa (sauf qd la cellule H19 est égale a 0)
Si qqun pouvait jeter un coup d'oeil pr m'éclairer!!! (s'il y a possibilité notamment de la raccourcir...peut etre est ce du à la répétition des formules???)

If Range('h19') <= '16' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'R' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h19') <= '16' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'Q' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h19') <= '14' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'P' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h19') <= '14' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'O' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h19') <= '12' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'N' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h19') <= '12' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'M' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h19') <= '10' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'L' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') <= '10' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'K' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h19') <= '8' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'J' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') <= '8' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') <= '6' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'H' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') <= '6' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'G' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') <= '4' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'f' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') <= '4' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'E' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') <= '2' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'D' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') <= '2' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'C' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If


If Range('h19') = '0' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'B' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h19') = '0' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'A' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

Merci beaucoup par avance

Cordialement

PS : dsl pour la longueur ms je préféré vous exposer mon pb en entier
 
cellule H9 de la première feuille

puis suivant le nombre inscrit en H9, les macros suppriment les lignes correspondantes dans cette même feuille

(exemple : H9 <= 16 alors suppression des ligne contenant un Q et un R dans la colonne A, cette suppresion s'opère dans la première feuille ainsi que dans les feuilles suivantes dans mon classeur)

Ainsi de suite, H9 <= 14 alors les lignes ayant ds la colonne A, un O et un P, sont supprimées dans toute les feuilles du classeur

J'espère etre assez explicite ???

A bientot
 
bonjour

teste le code suivant

Public Sub Essai()
dim lettre as string

If Range('h19') <= 16 Then
letrre = 'A'
GoTo action:
End If
If Range('h19') <= 16 Then
letrre = 'B'
GoTo action:
End If

If Range('h19') <= 14 Then
letrre = 'C'
GoTo action:
End If

If Range('h19') <= 14 Then
letrre = 'D'
GoTo action:
End If

If Range('h19') <= 12 Then
letrre = 'E'
GoTo action:
End If

If Range('h19') <= 12 Then
letrre = 'F'
GoTo action:
End If

If Range('h19') <= 10 Then
letrre = 'G'
GoTo action:
End If


If Range('h19') <= 10 Then
letrre = 'H'
GoTo action:
End If

If Range('h19') <= 8 Then
letrre = 'I'
GoTo action:
End If


If Range('h19') <= 8 Then
letrre = 'j'
GoTo action:
End If


If Range('h19') <= 6 Then
letrre = 'k'
GoTo action:
End If


If Range('h19') <= 6 Then
letrre = 'l'
GoTo action:
End If

If Range('h19') <= 4 Then
letrre = 'm'
GoTo action:
End If


If Range('h19') <= 4 Then
letrre = 'n'
GoTo action:
End If


If Range('h19') <= 2 Then
letrre = 'o'
GoTo action:
End If


If Range('h19') <= 2 Then
letrre = 'p'
GoTo action:
End If


If Range('h19') = 0 Then
letrre = 'q'
GoTo action:
End If
If Range('h19') = 0 Then
letrre = 'r'
GoTo action:
End If

action:
For ligne = 1 To [A65000].End(xlUp).Row
If UCase(Cells(ligne, 1)) = UCase(lettre) Then
For Each WS In Worksheets
WS.Rows(ligne).EntireRow.Delete
Next WS
End If
Next ligne

End Sub

à bientôt
 
Bonsoir elise, bebere, le forum

🙂

Une tentative de synthaxe pour la simplification du code :


Sub Bouton2_QuandClic()
Dim lettre1 As String
Dim lettre2 As String
Dim ws As Worksheet
Dim ligne As Long


Select Case Range('H19')
&nbsp; &nbsp;
Case Is <= 16
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'A'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'B'
&nbsp; &nbsp;
Case Is <= 14
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'C'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'D'
&nbsp; &nbsp;
Case Is <= 12
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'E'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'F'
&nbsp; &nbsp;
Case Is <= 10
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'G'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'H'
&nbsp; &nbsp;
Case Is <= 8
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'I'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'J'
&nbsp; &nbsp;
Case Is <= 6
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'K'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'L'
&nbsp; &nbsp;
Case Is <= 4
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'M'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'N'
&nbsp; &nbsp;
Case Is <= 2
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'O'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'P'
&nbsp; &nbsp;
Case Is <= 0
&nbsp; &nbsp; &nbsp; &nbsp; lettre1 = 'Q'
&nbsp; &nbsp; &nbsp; &nbsp; lettre2 = 'R'
&nbsp; &nbsp;
'Si le nombre en H19 est supérieur à 16, on sort
&nbsp; &nbsp;
Case Else
&nbsp; &nbsp; &nbsp; &nbsp;
Exit Sub
End Select

For Each ws In Worksheets
&nbsp; &nbsp;
For ligne = ws.Range('A65536').End(xlUp).Row To 1 Step -1
&nbsp; &nbsp; &nbsp; &nbsp;
If ws.Cells(ligne, 1) = lettre1 Or ws.Cells(ligne, 1) = lettre2 Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ws.Rows(ligne).Delete
&nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp;
Next ligne
Next ws

End Sub

Salut
 
BONJOUR,

tout d'abord merci pour votre aide
j'ai essayé votre macro, elle fonctionne très bien toute seule mais j'ai voulu l'ajouter au reste de macro et dès lors ce ne marche pas!

Pouvez vous m'éclairer???

Cordialement

(excusez moi c'é un peu long)


Sub combinaison()
'
' combinaison Macro
' Macro enregistrée le 11/07/2005 par planning
'
'
Dim lettre1 As String
Dim lettre2 As String
Dim ws As Worksheet
Dim ligne As Long

If Range('h12') <> 'x' Then
For Each WS In Worksheets
WS.Rows('153:153').Delete Shift:=xlUp
Next WS
End If

If Range('b25') = 'x' Then
For Each WS In Worksheets
WS.Rows('147:147').Delete Shift:=xlUp
Next WS
End If

If Range('b24') = 'x' Then
For Each WS In Worksheets
WS.Rows('151:152').Delete Shift:=xlUp
Next WS
End If

If Range('b23') = 'x' Then
For Each WS In Worksheets
WS.Rows('143:152').Delete Shift:=xlUp
Next WS
End If

If Range('b22') = 'x' Then
For Each WS In Worksheets
WS.Rows('137:137').Delete Shift:=xlUp
Next WS
End If

If Range('b21') = 'x' Then
For Each WS In Worksheets
WS.Rows('141:142').Delete Shift:=xlUp
Next WS
End If

If Range('b20') = 'x' Then
For Each WS In Worksheets
WS.Rows('133:142').Delete Shift:=xlUp
Next WS
End If

If Range('b19') = 'x' Then
For Each WS In Worksheets
WS.Rows('121:123').Delete Shift:=xlUp
Next WS
End If

If Range('h8') <> 'x' Then
For Each WS In Worksheets
WS.Rows('126:126').Delete Shift:=xlUp
Next WS
End If

If Range('b18') = 'x' Then
For Each WS In Worksheets
WS.Rows('124:124').Delete Shift:=xlUp
Next WS
End If

If Range('b18') = 'x' Then
For Each WS In Worksheets
WS.Rows('121:122').Delete Shift:=xlUp
Next WS
End If

If Range('b17') = 'x' Then
For Each WS In Worksheets
WS.Rows('123:124').Delete Shift:=xlUp
Next WS
End If

If Range('b17') = 'x' Then
For Each WS In Worksheets
WS.Rows('121:121').Delete Shift:=xlUp
Next WS
End If

If Range('b16') = 'x' Then
For Each WS In Worksheets
WS.Rows('122:124').Delete Shift:=xlUp
Next WS
End If

If Range('b15') = 'x' Then
For Each WS In Worksheets
WS.Rows('121:124').Delete Shift:=xlUp
Next WS
End If

If Range('b14') = 'x' Then
For Each WS In Worksheets
WS.Rows('94:95').Delete Shift:=xlUp
Next WS
End If

If Range('b13') = 'x' Then
For Each WS In Worksheets
WS.Rows('92:93').Delete Shift:=xlUp
Next WS
End If

If Range('b12') = 'x' Then
For Each WS In Worksheets
WS.Rows('91:119').Delete Shift:=xlUp
Next WS
End If

If Range('b11') = 'x' Then
For Each WS In Worksheets
WS.Rows('87:88').Delete Shift:=xlUp
Next WS
End If

If Range('b10') = 'x' Then
For Each WS In Worksheets
WS.Rows('89:90').Delete Shift:=xlUp
Next WS
End If

If Range('h10') <> 'x' Then
For Each WS In Worksheets
WS.Rows('78:78').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '16' Then
For Each WS In Worksheets
WS.Rows('74:75').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '14' Then
For Each WS In Worksheets
WS.Rows('72:75').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '12' Then
For Each WS In Worksheets
WS.Rows('70:75').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '10' Then
For Each WS In Worksheets
WS.Rows('68:75').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '8' Then
For Each WS In Worksheets
WS.Rows('66:75').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '6' Then
For Each WS In Worksheets
WS.Rows('64:75').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '4' Then
For Each WS In Worksheets
WS.Rows('62:75').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '2' Then
For Each WS In Worksheets
WS.Rows('60:75').Delete Shift:=xlUp
Next WS
End If

If Range('h18') = '0' Then
For Each WS In Worksheets
WS.Rows('58:75').Delete Shift:=xlUp
Next WS
End If

If Range('b9') = 'x' Then
For Each WS In Worksheets
WS.Rows('56:57').Delete Shift:=xlUp
Next WS
End If

If Range('b9') = 'x' Then
For Each WS In Worksheets
WS.Rows('52:53').Delete Shift:=xlUp
Next WS
End If

If Range('b8') = 'x' Then
For Each WS In Worksheets
WS.Rows('54:57').Delete Shift:=xlUp
Next WS
End If

If Range('b7') = 'x' Then
For Each WS In Worksheets
WS.Rows('52:55').Delete Shift:=xlUp
Next WS
End If

If Range('H6') <> 'x' Then
For Each WS In Worksheets
WS.Rows('49:49').Delete Shift:=xlUp
Next WS
End If

If Range('H5') <> 'x' Then
For Each WS In Worksheets
WS.Rows('48:48').Delete Shift:=xlUp
Next WS
End If

If Range('H4') <> 'x' Then
For Each WS In Worksheets
WS.Rows('47:47').Delete Shift:=xlUp
Next WS
End If

If Range('b5') = 'x' Then
Range('C31').Select
Selection.Interior.ColorIndex = xlNone
Range('C32').Select
Selection.Interior.ColorIndex = xlNone
Range('C42').Select
Selection.Interior.ColorIndex = xlNone
Range('C43').Select
Selection.Interior.ColorIndex = xlNone
Range('C44').Select
Selection.Interior.ColorIndex = xlNone
Range('C45').Select
Selection.Interior.ColorIndex = xlNone
Range('C46').Select
Selection.Interior.ColorIndex = xlNone
End If

If Range('b5') = 'x' Then
For Each WS In Worksheets
WS.Rows('37:41').Delete Shift:=xlUp
Next WS
End If

If Range('b4') = 'x' Then
For Each WS In Worksheets
WS.Rows('37:41').Delete Shift:=xlUp
Next WS
End If

If Range('h9') <> 'x' Then
For Each WS In Worksheets
WS.Rows('30:30').Delete Shift:=xlUp
Next WS
End If

If Range('h7') <> 'x' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = [E7] Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h11') <> 'x' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = [E11] Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h15') <= '6' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'P7' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h15') <= '5' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'P6' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h15') <= '4' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'P5' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h15') <= '3' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'P4' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h15') <= '2' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'P3' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h15') <= '1' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'P2' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h15') <= '0' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'P1' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h16') <= '3' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I4 P2A' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h16') <= '2' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I3 P2A' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h16') <= '1' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I2 P2A' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h16') <= '0' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I1 P2A' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h17') <= '3' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I4 P2B' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h17') <= '2' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I3 P2B' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h17') <= '1' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I2 P2B' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

If Range('h17') <= '0' Then
For ligne = 1 To [A65000].End(xlUp).Row
If Cells(ligne, 1) = 'I1 P2B' Then
For Each WS In Worksheets
WS.Rows(ligne).Delete
Next WS
End If
Next
End If

Select Case Range('H19')
Case Is <= 16
lettre1 = 'A'
lettre2 = 'B'
Case Is <= 14
lettre1 = 'C'
lettre2 = 'D'
Case Is <= 12
lettre1 = 'E'
lettre2 = 'F'
Case Is <= 10
lettre1 = 'G'
lettre2 = 'H'
Case Is <= 8
lettre1 = 'I'
lettre2 = 'J'
Case Is <= 6
lettre1 = 'K'
lettre2 = 'L'
Case Is <= 4
lettre1 = 'M'
lettre2 = 'N'
Case Is <= 2
lettre1 = 'O'
lettre2 = 'P'
Case Is <= 0
lettre1 = 'Q'
lettre2 = 'R'
'Si le nombre en H19 est supérieur à 16, on sort
Case Else
Exit Sub
End Select

For Each ws In Worksheets
For ligne = ws.Range('A65536').End(xlUp).Row To 1 Step -1
If ws.Cells(ligne, 1) = lettre1 Or ws.Cells(ligne, 1) = lettre2 Then
ws.Rows(ligne).Delete
End If
Next ligne
Next ws

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
107
Réponses
35
Affichages
751
Réponses
3
Affichages
68
Réponses
3
Affichages
427
Retour