Décaler l'exécution d'une macro (colonne)

Fermé
tata33 - 10 févr. 2012 à 15:23
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 - 10 févr. 2012 à 18:12
Bonjour,

Comment faire pour que cette macro s'effectue sur les colonnes L à Q, V à AA etc... c'est à dire en décalant toujours de 10 colonnes vers la droite et ce jusqu'à ce qu'il n'y ait plus de données ? (dernière colonne FP à FU) (41990 lignes sur chaque colonne)
Je suis sous Excel 97 et ne sait pas comment nommer mes variables.

Merci d'avance.



Sub Macro3()

Columns("B:G").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<=9", Operator:=xlAnd
Selection.AutoFilter Field:=4, Criteria1:="<=9", Operator:=xlAnd
Selection.ClearContents
Columns("B:G").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
Columns("B:G").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=20"
Selection.AutoFilter Field:=4, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=3, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=5, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=6, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=3, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=4, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=5, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=6, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.ClearContents
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
Columns("B:G").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=">=20", Operator:=xlAnd, _
Criteria2:="<=29"
Selection.AutoFilter Field:=4, Criteria1:=">=20", Operator:=xlAnd, _
Criteria2:="<=29"
Selection.AutoFilter Field:=5, Criteria1:=">=20", Operator:=xlAnd, _
Criteria2:="<=29"
Selection.AutoFilter Field:=6, Criteria1:=">=20", Operator:=xlAnd, _
Criteria2:="<=29"
Selection.ClearContents
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
Range("B1").Select
End Sub
A voir également:

1 réponse

f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
10 févr. 2012 à 17:22
Bonjour,

Sub test()
Dim Nb_Iter As Integer, NumCol1 As Integer, NumCol2 As Integer
Dim Max_Iter As Integer,x,y

Max_Iter = 18
Nb_Iter=0

Do While Nb_Iter < Max_Iter

x = Nom_Colonne((10 * Nb_Iter) + 2)
y = Nom_Colonne((10 * Nb_Iter) + 7)

With Worksheets(mettre_le_Nom_de_la_feuille)
Columns(x & ":" & y).Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<=9", Operator:=xlAnd
Selection.AutoFilter Field:=4, Criteria1:="<=9", Operator:=xlAnd
Selection.ClearContents
Columns(x & ":" & y).Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
Columns(x & ":" & y).Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=20"
Selection.AutoFilter Field:=4, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=3, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=5, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=6, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=3, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=4, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=5, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.AutoFilter Field:=6, Criteria1:=">=10", Operator:=xlAnd, _
Criteria2:="<=19"
Selection.ClearContents
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
Columns(x & ":" & y).Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=">=20", Operator:=xlAnd, _
Criteria2:="<=29"
Selection.AutoFilter Field:=4, Criteria1:=">=20", Operator:=xlAnd, _
Criteria2:="<=29"
Selection.AutoFilter Field:=5, Criteria1:=">=20", Operator:=xlAnd, _
Criteria2:="<=29"
Selection.AutoFilter Field:=6, Criteria1:=">=20", Operator:=xlAnd, _
Criteria2:="<=29"
Selection.ClearContents
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
Range("B1").Select
End With
Nb_Iter = Nb_Iter + 1
Loop
End Sub

Private Function Nom_Colonne(ByVal Num_Colonne As Integer)
If Num_Colonne <= 26 Then
Nom_Colonne = Chr$(64 + Num_Colonne)
ElseIf Num_Colonne <= 52 Then
Nom_Colonne = "A" + Chr$(64 + Num_Colonne - 26)
ElseIf Num_Colonne <= 78 Then
Nom_Colonne = "B" + Chr$(64 + Num_Colonne - 52)
ElseIf Num_Colonne <= 104 Then
Nom_Colonne = "C" + Chr$(64 + Num_Colonne - 78)
ElseIf Num_Colonne <= 130 Then
Nom_Colonne = "D" + Chr$(64 + Num_Colonne - 104)
ElseIf Num_Colonne <= 156 Then
Nom_Colonne = "E" + Chr$(64 + Num_Colonne - 130)
ElseIf Num_Colonne <= 182 Then
Nom_Colonne = "F" + Chr$(64 + Num_Colonne - 156)
Else
End If
End Function

Cela devrait vous convenir

Bonne suite
0
Ca fonctionne merci beaucoup! (Juste penser à mettre le nom de la feuille entre " " )

Cependant, le fait de rechercher des cellules vides et de les supprimer en les décalant vers le haut prend beaucoup de temps : environ 1 minute et 30 s à chaque colonne.

Mais le résultat est là : c'est l'essentiel.
Merci et bon week-end (ou bonnes vacances)
0
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
10 févr. 2012 à 18:12
Re,
Les colonnes ont-elles le meme nombre de lignes?
Parce que il est possible de selectionner une plage de cellule au lieu de colonnes entieres

Bonne suite
0