Numéro de ligne variable dans Range

elwinner08

XLDnaute Nouveau
Bonjour à tous,
J'ai cherché sur divers forums en trouvant des réponses approchées mais qui ne marchaient pas chez moi :mad: .

J'ai un test sur une cellule, si la cellule est renseignée, la macro doit sélectionner les cases de cette ligne des colonnes A à AV pour mettre en forme un tableau. J'ai testé plusieurs choses et rien ne marche :(

Merci pour le temps que vous allez passer à m'aider

Dim l As Integer

For l = 1 To 500
If Cells(l, 2) <> "" Then
Range("A" & l:"AV" & l).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
Next l

Edit : le "For l = 1 to 500" n'est là que pour faire le test sur les 500 lignes

PS : Je viens de me rendre compte qu'en plus de ça je ne sais pas insérer un cadre "code" dans mon post pour y mettre la macro
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Numéro de ligne variable dans Range

Bonjour Elwinner, Pierrot, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim l As Integer
 
For l = 1 To Cells(Application.Rows.Count, 1).End(xlUp).Row
    If Cells(l, 2) <> "" Then
        With Range(Cells(l, 1), Cells(l, 48))
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            With .Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
            End With
            .Borders(xlEdgeTop).LineStyle = xlNone
            With .Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
            End With
            With .Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
            End With
            With .Borders(xlInsideVertical)
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
            End With
        End With
    End If
Next l
End Sub
 

69alan69

XLDnaute Nouveau
Re : Numéro de ligne variable dans Range

Bonjour je pense avoir trouvé une solution (a mon niveau)

Je pense que d'autre pourront te fournir un code bien plus beau :)
Mais il fonctionne
Code:
Sub essai()

Dim a As String
Dim b As String
Dim c As String
For l = 1 To 500
If Cells(l, 2) <> "" Then
a = ("A" & l)
b = ("AV" & l)
c = (a & ":" & b)
Range(c).Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
Next l

End Sub

voila. Bonne journée
 

elwinner08

XLDnaute Nouveau
Re : Numéro de ligne variable dans Range

Merci beaucoup à vous deux. La solution de Robert marche super bien. 69Alan69 : ce que tu as écrit c'est aussi un peu plus de mon niveau :)

Code:
Cells(Application.Rows.Count, 1).End(xlUp).Row

Par contre petite question toute bète : la partie de code que j'ai mis au dessus signifie quoi? Parce que c'est le genre de choses qui me resservira.
 

69alan69

XLDnaute Nouveau
Re : Numéro de ligne variable dans Range

Sans dire de bêtises :p
For l = 1 To Cells(Application.Rows.Count, 1).End(xlUp).Row
signifie qu'il va tester toute les ligne de la ligne 1 a la dernière ligne qui est activé par excel. explication un peu spécial :p cette cellule correspond a la dernière cellule visible quand tu n'utilise pas la molette de la souris mais la barre sur le coté

ps: si tu ne comprend pas mon explication c'est normal :p
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Numéro de ligne variable dans Range

Bonjour le fil, bonjour le forum,

Cells(numéro de ligne, Numéro de colonne) equivaut à Range("CL"). Donc Cells(1, 1) est la même chose Range("A1"). Application.Rows.Count renvoie le nombre total de lignes qui varie selon la version d'Excel (65536 avec Excel 2003, beaucoup plus sur Excel 2007 et 2010). Cells(Appication.Rows.Count, 1) permet de se positionner sur la dernière ligne de la colonne A (= 1). End permet d'attendre la première cellule éditée en remontant (xlUp) (il existe aussi : xlDown, xlToLeft, xlToRoght).
Donc Cells(Appication.Rows.Count, 1).End(xlUp).Row renvoie le numéro de la dernière ligne éditée dans la colonne 1 (Colonne A)
Tout comme Cells(1, Application.Columns.Count).End(xlToLeft).Column renvoie le numéro de la dernière colonne éditée dans la ligne 1...

[Édition]
Merci Alan, mort de rire...
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
1 K

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo