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
Bonjour Fred, yannjuve
yannjuve a écrit :Personne
?
https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html
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
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...