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
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
A voir également:
- Décaler l'exécution d'une macro (colonne)
- Déplacer une colonne excel - Guide
- Formule somme excel colonne - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Trier colonne excel - Guide
- Colonne word - Guide
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
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
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
10 févr. 2012 à 17:57
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)
10 févr. 2012 à 18:12
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