XL 2016 Selectionner une ligne jusqu'à dernière colonne

maroon

XLDnaute Junior
Bonjour!

Avec la macro que je fais j'aimerais mettre en couleur certaines lignes: des lignes vides qui séparent certaines parties du tableau. Je connais le numéro des lignes mais comme le nombre de colonnes varient je détermine le numéro de la dernière colonne avec le code:

VB:
ActiveCell.SpecialCells(xlLastCell).Column

Donc si je souhaite sélectionner la ligne vide numéro 15 par exemple jusqu'à la dernière colonne du tableau comment je dois écrire le code? Pour ensuite lui affecter une mise en forme.

Je n'arrive pas à trouver la syntaxe en utilisant le morceau de code que j'ai mis juste au-dessus.

Merci d'avance si quelqu'un peut m'aider!
 
Solution
Bonjour,

A mon avis, si "derlig" est un entier, il n'y a pas de raison que "i" n'en soit pas également un. ;)

Concernant le calcul de ce "derlig", je ne suis pas certain que ce soit bon et que tu trouves réellement la vraie dernière ligne de ton tableau...
J'ai l'impression que ça ne fonctionne que s'il n'y a rien en-dessous du tableau.

La dernière colonne du tableau doit être la même pour toutes les lignes, donc autant la calculer au départ une fois pour toute et la mettre dans une variable.

Tu peux même définir une "plage", d'une ligne de hauteur, allant de la colonne A à la dernière colonne du tableau, que tu peux en suite décaler avec un offset pour colorier les lignes qui doivent l'être. ;)

Tes deux "For" imbriqués font la...

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @jmfmarques :),

Chez moi, ça ne marche pô à tout les coups :
  • uniquement un petit tableau avec un filtre automatique
  • on filtre pour ne pas afficher les dernières lignes
  • la macro renvoie la dernière ligne visible et non la dernière ligne du tableau et donc de la feuille
Toujours le souci avec les instructions du type Find(), End() et d'autres sinon ce serait trop simple.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Ceci n'était point indiqué dans la procédure à suivre non?
Mon test a consisté à:
1) Créer une feuille tremplin dans un classeur vierge (contenant déjà 1 feuille)
2) Exécuter la macro du message#85
3) Exécuter la macro du message#88
2)
 

patricktoulon

XLDnaute Barbatruc
re
a ben nous voila transporté sur une autre feuille maintenant
c'est quoi l'idée là ???
@jmfmarques on a eu la même idée pour le usedrange on range
sauf que je comprends pas tres bien tout du moins pourquoi un sheets tremplin

VB:
Sub test()
    Set tableau = Range("c3:h25")
    MsgBox UsedrangeOnRange(tableau).Address
End Sub

Function UsedrangeOnRange(tableau) As Range
    Dim lig&, col&, adresse$, cel1 As Range, cel2 As Range
    With tableau
        Set cel1 = .Cells(1)
        col = .Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
        lig = .Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Set cel2 = Cells(lig, col)
        Set UsedrangeOnRange = .Parent.Range(cel1, cel2)
    End With
End Function
 
Dernière édition:

maroon

XLDnaute Junior
Bonjour à tous :D
@Marcel32 Merci pour #55 ça 'a permis de comprendre un peu mieux ce que j'avais fait (je fais des choses à tâtons des fois) et le code est plus court et surement plus rapide (@jmfmarques :)).
Je n'ai pas de légitimité pour dire ça mais je crois aussi que @patricktoulon se trompe en disant que mon code bouclait sur toutes les cellules du tableau (#65) puisque je suis dans la plage "plage"...

@Staple1600 je confirme ce que @patricktoulon disait ce code
VB:
ActiveSheet.UsedRange.EntireRow.SpecialCells(xlCellTypeBlanks).Interior.Color = RGB(255, 78, 127)
met en couleur toutes les cellules vide du tableau! Ca ne se voit pas sur mon exemple car "toutes les cellules" sont pleines.

@jmfmarques merci pour la technique #59 je vais y penser maintenant quand j'écris du code (même quand ce sont des petits code ça permet de choisir ce qui est mieux)

@patricktoulon c'est bizarre le code #64 met toute la ligne en couleur et ne s'arrête pas à la dernière colonne du tableau sur mon fichier alors qu'il le fait sur ta vidéo! Je vais essayer de voir pourquoi...

@mapomme merci pour ces codes je vais eessayer de les comprendre pour les faire fonctionner car pour l'instant c'est un peu laborieux :D
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

VB:
Sub Les_Xipéhuz(Optional Confinement_Oblige_READ_IT)
Dim X As Range, Y As Range, m²$
Sheets(1).Range("A1:S1600").Name = "Zone_51"
With [Zone_51]: .Parent.Select: Set X = .Item(1): Set Y = .Cells(.Cells.Count): End With
m² = [Zone_51].Address & Chr(13): m² = m² & X.Row & Chr(13): m² = m² & Rows(X.Row).Address & Chr(13)
m² = m² & Y.Column & Chr(13): m² = m² & Columns(Y.Column).Address & Chr(13)
m² = m² & Split([Zone_51].Address(0, 0), ":")(0) & Chr(13): m² = m² & Split([Zone_51].Address(0, 0), ":")(1) & Chr(13)
m² = m² & [Zone_51].Cells.Count & Chr(13): m² = m² & [Zone_51].Rows.Count & "| " & [Zone_51].Columns.Count
MsgBox m², vbExclamation, "I always know where I'am !"
End Sub
;)
Un bon petit déjeuner à tous !
Et confinons explicitement avec option .
;)
 

Discussions similaires

Réponses
6
Affichages
358

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87