VBA Problème Boucle Tri [RESOLU]

Mathar

XLDnaute Nouveau
Salut le forum,

Je vous pris de m'excuser d'avance pour mon faible niveau en VBA qui m'oblige à vous appeler à l'aide pour un problème tout bête.

J'explique le but de la macro: J'ai une feuille contenant différentes tables (non nommées), comportant toutes le même en-tête en colonne A et une cellule vide avant le prochain tableau. Je dois sélectionner les cellules à l'intérieur de chaque table pour leur affecter un tri.

Le problème c'est que je n'arrive pas à les sélectionner dans une boucle, je repère l'en-tête, la dernière ligne de la table et je sélectionne le tout (c'est là que ça bloque), j'applique ensuite un fond bleu pour avoir une confirmation visuelle que ma sélection est bonne j'appliquerai les tris dans un second temps.

Le code:

Code:
Sub SelectionTest()

Dim Y As Integer
With ActiveSheet
Y = Range("A65536").End(xlUp).Row
End With

Dim Z As Long
Dim X As Long
For Z = 1 To Y
    If Range("A" & Z) = "En-tête1" Then _
     X = Range("A" & Z).End(xlDown).Row
        Range("A" & (Z - 2) & ":R" & X).Select
       With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent5
        .TintAndShade = 0
        .PatternTintAndShade = 0
        End With
    
    Next Z
End Sub

Je pense que c'est tout bête mais j'ai modifié dans tous les sens je ne comprend pas pourquoi ça plante sur la ligne:

Code:
Range("A" & (Z - 2) & ":R" & X).Select

Mon "X" est-il mal défini?

Merci d'avance,

Mathar
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : VBA Problème Sélection plages variables

Bonjour Mathar,

Essaie ceci, ça devrait marcher (c'est le cas dans l'essai que j'ai fait).

VB:
Sub SelectionTest()
    Dim Z As Long
    For Z = 1 To Range("A65536").End(xlUp).Row
        If Range("A" & Z) = "En-tête1" Then
            With Range("A" & (Z + 1) & ":R" & Range("A" & Z).End(xlDown).Row).Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .ThemeColor = xlThemeColorAccent5
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
        End If
    Next Z
End Sub

A+
 

Mathar

XLDnaute Nouveau
Re : VBA Problème Sélection plages variables

Salut Fred0o,

Merci ça marche parfaitement, mais je pense avoir besoin de la valeur X pour gérer le tri par la suite, j'ai réussi à faire fonctionner la partie sélection mais par contre le tri ne se fait pas du tout correctement, il ne s'effectue pas sur les plages que je sélectionne. Ça me laisse un peu perplexe...

Code:
Sub SelectionTest()

Dim Y As Integer
With ActiveSheet
Y = Range("A65536").End(xlUp).Row
End With

Dim Z As Long
Dim X As Long
For Z = 1 To Y
    If Range("A" & Z) = "En-tête1" Then _
        Range("A" & (Z + 2) & ":R" & X).Select
         X = Range("A" & Z).End(xlDown).Row

    ActiveWorkbook.Worksheets("Sheet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet").Sort.SortFields.Add Key:=Range("F" & (Z + 2) & ":F" & X) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet").Sort
        .SetRange Range("A" & (Z + 2) & ":R" & X)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
       
    Next Z


End Sub

J'ai utilisé l'enregistreur de macro pour obtenir le code du tri, peut-être que la syntaxe n'est pas la bonne...

Mathar
 

Mathar

XLDnaute Nouveau
Re : VBA Problème Sélection plages variables

Re bonjour,

J'ai vérifier la macro en pas à pas pour voir où ça clochait, en fait la partie de tri s'applique pour chaque Z, et ne tient pas compte du "IF", je dois rajouter un argument pour définir la zone IF ou quelque chose comme ça?

Merci d'avance,

Mathar

EDIT: résolu, le bloc if était mal écrit ;)
 
Dernière édition:

Statistiques des forums

Discussions
312 103
Messages
2 085 321
Membres
102 862
dernier inscrit
Emma35400