Aide VBA selectionner derniere colonne

Fermé
blorg - Modifié par blorg le 28/07/2015 à 11:35
 blorg - 28 juil. 2015 à 14:16
Bonjour 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 tous les fiches excel qui contiennent le même nombre de colonnes. Cependant ça ne marche pas pour celles qui en possèdent plus/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ée 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 ?

Voici mon code actuellement

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


Je cherche donc a 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. Mais on voit bien sur la derniere ligne qu'il selectionne toujours le tableau A1 a AC579.

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


Merci infiniement pour votre aide!

PS: Clavier espagnol, navre pour les accents.
A voir également:

2 réponses

Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
28 juil. 2015 à 12:05
Bonjour,

L'enregistreur de macro t'écrit de nombreuses lignes inutiles, pour coloriser la dernière colonne d'un tableau variable en prenant référence sur la ligne 1

Sub sélection()
Range("A1").End(xlToRight).EntireColumn.Interior.ColorIndex = 6
End Sub

coloriser une colonne complète va prendre pas mal de ressource de ton système et alourdir ton fichier, limite la colorisation à la fin du tableau, exemple pour coloriser de la ligne 1 à la ligne 20 la plage de ta dernière colonne du tableau

Sub sélection()
Range(Range("A1").End(xlToRight), Range("A1").End(xlToRight)(20, 1)).Interior.ColorIndex = 6
End Sub

0
Merci beaucoup pour ton aide!

Je prefere selectionner toute la colonne malgre tout!
Je dois simplement remplace le code que j'ai cite dans la troisieme colonne par:

Sub sélection()
Range("A1").End(xlToRight).EntireColumn.Interior.ColorIndex = 6
End Sub

Et ca surlignera la derniere colonne ?

Et qu'en est-il pour l'insertion du tableau, celui dans la deuxieme fenetre? Pourrais tu par hasard me proposer un code similaire?

Merci bcp en tout cas !
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
28 juil. 2015 à 12:47
Re,

je ne vais pas avoir le temps de suivre ta demande, je parts en vacance, mais explique ce que tu veux faire
0
Merci! Un code qui me permet d'inserer dans un tableau (car cest un fichier access a la base) toutes les colonnes. Donc de la premiere a la derniere.
0