Selectionner la derniere colonne (MACRO)

Bonsoir tout le monde,

J'aurais besoins d'aide car je suis actuellement en train de tenter d'enregistrer un Macro tout bête.

J'ai besoins que ce macro sélectionne automatiquement la dernière colonne d'un tableau pour la surligner en jaune.

J'ai besoins d'appliquer ce macro à de nombreuses fiches excel. Je me place sur la cellule A1 quand je lance l'enregistrement, je fais donc ctrl + droite pour atteindre la premiere cellule de la dernière colonne (ou bien ctrl+end pour atteindre la dernière cellule de la dernière colonne), puis ctrl+alt+bas pour sélectionner toute la colonne.

Le macro fonctionne bien pour toutes les fiches excel qui contiennent le même nombre de colonnes. Cependant ça ne marche pas pour celle qui en possède plus ou moins. En effet, le macro retient la référence de la colonne sélectionnée pendant l'enregistrement plutôt que la commande qui est censé sélectionner la dernière colonne d'un tableau.

Est-ce normal ? Existe-t-il un moyen pour que mon macro selectionne la dernière colonne pour des tableaux de diffèrentes tailles ?

Je vous remercie d'avance 1

bonsoir et bienvenu

pour obtenir le numéro de la derniere colonne occupée sur la ligne 1 de la feuille active :

dernCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column

fred

Bonjour Fred,

Je te remercie pour ta reponse!

Je ne suis malheureusement pas encore tout a fait a l'aise avec le VBA.

Saurais-tu me dire ou il faudrait incorporer ton astuce dans le code de ma Macro?

Sub WiresReport()
'
' WiresReport Macro
'
' Keyboard Shortcut: Ctrl+w
'
    Columns("C:C").Select
    Selection.Replace What:="1", Replacement:="Band 1", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="3", Replacement:="Band 2", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="5", Replacement:="Band 4", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="6", Replacement:="Band 4", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    ActiveWindow.SmallScroll Down:=-9
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$AC$591"), , xlYes).Name = _
        "Table1"
    Range("Table1[#All]").Select
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=3, Criteria1:= _
        "Band 1"
    Range("A24").Select
    ActiveCell.SpecialCells(xlLastCell).Select
    Range(Selection, Selection.End(xlUp)).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
    Range("U487").Select
    ActiveWindow.LargeScroll ToRight:=-1
    ActiveWindow.ScrollRow = 469
    ActiveWindow.ScrollRow = 468
    ActiveWindow.ScrollRow = 465
    ActiveWindow.ScrollRow = 462
    ActiveWindow.ScrollRow = 456
    ActiveWindow.ScrollRow = 446
    ActiveWindow.ScrollRow = 429
    ActiveWindow.ScrollRow = 421
    ActiveWindow.ScrollRow = 369
    ActiveWindow.ScrollRow = 333
    ActiveWindow.ScrollRow = 323
    ActiveWindow.ScrollRow = 277
    ActiveWindow.ScrollRow = 270
    ActiveWindow.ScrollRow = 207
    ActiveWindow.ScrollRow = 200
    ActiveWindow.ScrollRow = 189
    ActiveWindow.ScrollRow = 178
    ActiveWindow.ScrollRow = 157
    ActiveWindow.ScrollRow = 155
    ActiveWindow.ScrollRow = 137
    ActiveWindow.ScrollRow = 129
    ActiveWindow.ScrollRow = 110
    ActiveWindow.ScrollRow = 101
    ActiveWindow.ScrollRow = 31
    ActiveWindow.ScrollRow = 29
    ActiveWindow.ScrollRow = 26
    ActiveWindow.ScrollRow = 25
    ActiveWindow.ScrollRow = 24
    ActiveWindow.ScrollRow = 1
    Columns("A:E").Select
    ActiveWindow.FreezePanes = True
End Sub

Je precise que je cherche la derniere colonne a deux reprises dans ce macro.

La premiere pour selectionner tout la fiche et inserer un tableau (je travaille sur un fichier .css a la base), et la seconde pour selectionner la derniere colonne et la surligner.

Merci beaucoup pour ton aide !

PS: Je m'excuse pour les accents, mon clavier n'est pas francais...

re

a tester mais sans fichier difficile a mettre au point

fred

Sub WiresReport()
'
' WiresReport Macro
'
' Keyboard Shortcut: Ctrl+w
'
Dim dernCol As Integer
dernCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column

   With Columns(dernCol)
    .Replace What:="1", Replacement:="Band 1", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    .Replace What:="3", Replacement:="Band 2", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    .Replace What:="5", Replacement:="Band 4", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    .Replace What:="6", Replacement:="Band 4", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    End With
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$AC$" & [A65536].End(xlUp).Row), , xlYes).Name = "Table1"
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=3, Criteria1:="Band 1"
      With Columns(dernCol).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
    Columns("A:E").Select
    ActiveWindow.FreezePanes = True
End Sub

Bonjour,

Malheureusement nan ce code ne fonctionne pas. Je vais essayer de poster ici mon fichier si jamais quelqu'un arrive à me filer un coup de main

Merci en tout cas!

Sub Macro2()
'
' Macro2 Macro
'
' Keyboard Shortcut: Ctrl+a
'

Dim dernCol As Integer
dernCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    Range("B:B").Select
    Selection.Replace What:="1", Replacement:="Band 1", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="3", Replacement:="Band 2", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="5", Replacement:="Band 4", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="6", Replacement:="Band 4", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$AC$579"), , xlYes).Name = _
        "Table1"
    Range("Table1[[#Headers],[Source Code]]").Select
    Selection.End(xlToRight).Select
    Range(Selection, Selection.End(xlDown)).Select
    With Columns(dernCol).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.599993896298105
        .PatternTintAndShade = 0
    End With
    Selection.End(xlToLeft).Select
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=3, Criteria1:= _
        "Band 1"
    Range("A:A,B:B,C:C,D:D,E:E").Select
    Range("Table1[[#Headers],[Desk]]").Activate
    ActiveWindow.FreezePanes = True
End Sub

Bonjour,

Voila mon code actuellement. Je suis pas tres a l'aise pour modifier ce code, alors je vous explique ce que je souhaiterais changer:

La partie:

   Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$AC$579"), , xlYes).Name = _
        "Table1"

J'aimerais quelle selectionne toutes les colonnes et insere un tableau. Il faut donc un moyen pour trouver la derniere colone et le nombre total de ligne. Je pensais que le raccourci Maj+Ctrl+Flechedroite+Fleche en bas selectionnerait marcherais. Quand je le fais, ca selectionne bien tout le tableau, sauf qu'il retient la reference de la derniere colonne et reproduit toujours sur la meme colonne AC avec mon macro alors que dans d'autres fiches j'ai plus de colonnes que ca.

Meme chose pour cette partie:

 Selection.End(xlToRight).Select
    Range(Selection, Selection.End(xlDown)).Select
    With Columns(dernCol).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.599993896298105
        .PatternTintAndShade = 0 Selection.End(xlToRight).Select

Meme probleme, ce code ne surligne pas toujours la derniere colonne, mais toujous la colonne AC j'ai l'impression.

Merci pour votre aide

Personne ?

Force rouge a écrit :

Bonjour Fred, yannjuve

yannjuve a écrit :

Personne ?

https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

Qu'est ce que ca veut dire ?

Je ne pense pas avoir manque de respect a personne, ni enfreint les regles...

yannjuve tu n'a pas joint de fichiers je pense que c'est de cela dont il s'agit !

Stagiaire04 a écrit :

yannjuve tu n'a pas joint de fichiers je pense que c'est de cela dont il s'agit !

Je ne suis malheureusement pas autorise a partager ce fichier.

Je pense que c'est une simple modification de code vba qui peut etre realise sans le fichier lui meme.

Du moins je l'espere.

Non aucun manque de respect apparent. Fred vous a signalé que sans fichier, c'est parfois difficile d'écrire un programme vu que nous n'avons pas la pertinence du résultat sous les yeux. Si fournir un fichier avec des données factice mais néanmoins au plus proche de la réalité (par type de contenu de cellule) n'est selon vous pas nécessaire alors qu'il en soit ainsi (dans le lien des règles à respecter il est écrit pourquoi un fichier favorise les % de chance d'obtenir une réponse adaptée).

Nous sommes tous libre de faire comme bon nous semble mais c'est vous qui risquez d'y perdre au change...

Rechercher des sujets similaires à "selectionner derniere colonne macro"