Modification formule VBA

Bonjour,

Pour supprimer des lignes j'ai cette formule suivante pour une macro

Sub Macro1()
Dim TL As Variant
TL = Array(29, 30, 31, 56, 57, 58, 83, 84, 85, 110, 111, 112, 137, 138, 139, 164, 165, 166, 191, 192, 193, 218, 219, 220, 245, 246, 247, 272, 273, 274, 299, 300, 301, 326, 327, 328, 353, 354, 355, 380, 381, 382, 407, 408, 409, 434, 435, 436, 461, 462, 463, 488, 489, 490, 515, 516, 517, 542, 543, 544, 569, 570, 571, 596, 597, 598, 623, 624, 625, 650, 651, 652, 677, 678, 679, 704, 705, 706, 731, 732, 733, 758, 759, 760, 785, 786, 787, 812, 813, 814, 839, 840, 841, 866, 867, 868, 893, 894, 895, 920, 921, 922, 947, 948, 949, 974, 975, 976, 1001, 1002, 1003, 1028, 1029, 1030, 1055, 1056, 1057, 1082, 1083, 1084, 1109, 1110, 1111, 1136, 1137, 1138, 1163, 1164, 1165, 1190, 1191, 1192, 1217, 1218, 1219, 1244, 1245, 1246, 1271, 1272, 1273, 1298, 1299, 1300, 1325, 1326, 1327, 1352, 1353, 1354, 1379, 1380, 1381, 1406, 1407, 1408, 1433, 1434, 1435, 1460, 1461, 1462, 1487, 1488, 1489, 1514, 1515, 1516, 1541, 1542, 1543, 1568, 1569, 1570, 1595, 1596, 1597, 1622, 1623, 1624, 1649, 1650, 1651, 1676, 1677, 1678)
For I = UBound(TL, 1) To LBound(TL, 1) Step -1
    Rows(TL(I)).Delete
Next I
End Sub

Qui supprime par numéros de lignes mais cela est un peu long mettre à jour au fur et à mesure.

Serait-il possible décrire

Si une cellule de la colonne "B" est vide alors supprimer la ligne entière de cette même cellule

Si une cellule de la colonne "A" commence par la valeur "Total" alors supprimer la ligne entière de cette même cellule

Si une cellule de la colonne "A" commence par la valeur "Site :" alors supprimer la ligne entière de cette même cellule

Je ne sais pas comment l'écrire...

Merci beaucoup pour votre aide

Max

Bonjour,

A tester

Sub efface()
Dim DernLigne As Long
Dim i As Variant
DernLigne = Range("a" & Rows.Count).End(xlUp).Row
    For i = Range("a" & DernLigne).Row To 1 Step -1
        If Cells(i, 1).Value = "Total" Or Cells(i, 1).Value = "Site" Then
            Rows(i).Delete
        End If
    Next i

DernLigne = Range("b" & Rows.Count).End(xlUp).Row
    For i = Range("b" & DernLigne).Row To 1 Step -1
        If Cells(i, 2).Value = "" Then
            Rows(i).Delete
        End If
    Next i
End Sub

Merci pour votre réponse...

ça supprime bien si "b" = vide et si "a" commence par la valeur "Site", mais ça ne prend pas en compte

si "a" commence par la valeur "Total" .... La ligne reste en place et n'est pas supprimée pourtant les lignes commence ainsi "Total pour..."

Vous auriez une idée ??

Merci à vous

Max

Re,

Excuse, je pensais qu'il ne contenait que Total,

dans ce cas, mets une * devant et derrière "*Total*"

Merci beaucoup pour la réponse

Re,

Plutôt comme cela

Sub efface()
Dim DernLigne As Long
Dim i As Variant
DernLigne = Range("a" & Rows.Count).End(xlUp).Row
    For i = Range("a" & DernLigne).Row To 1 Step -1
        If Cells(i, 1) Like "*Total*" Or Cells(i, 1) Like "*Site*" Then
            Rows(i).Delete
        End If
    Next i

DernLigne = Range("b" & Rows.Count).End(xlUp).Row
    For i = Range("b" & DernLigne).Row To 1 Step -1
        If Cells(i, 2).Value = "" Then
            Rows(i).Delete
        End If
    Next i
End Sub

Salut MaxWell,

t'es un marrant, toi!

Tu fais refaire quelque chose qui était mis en résolu il y a deux jours !?!?

Sympa!

Ciao!

Bonjour,

1 - Un problème résolu ne semble pas pouvoir être ré-ouvert si je suit les règles du forum

2- Il se trouve qu'il 2 jours je n'avais pas ce problème de mise à jour et c'est en mettant en place cette mise à jour que je me suis aperçu de la contrainte de la Macro en l'état qu'elle se trouvait il a 2 jours.

Aurais-je dut, en tant que débutant, anticiper la contrainte ?

Merci à vous

Max

Rechercher des sujets similaires à "modification formule vba"