Enregistrer "tab droit" dans une macro
Bonjour,
J'ai enregistré une macro à partir d'une ligne par exemple A9 puis j'ai fait "suppr" puis j'ai fait "tab droit" puis "suppr" puis à nouveau 2 fois "tab droit" puis "suppr.
Je me suis placé sur une autre ligne et exécuter cette macro= cela ne marche pas puisque la macro a enregistré =
A9 suppr puis A9 suppr etc...cf exemple joint
Mon souci = comment enregistrer le mouvement vers la droite en macro sans que celle-ci enregistre la référence de la cellule pour que je puisse appliquer cette macro sur n'importe quelle ligne.
Je joins un tableur
Cordialement
Tonthon
Bonjour,
Tu peux utiliser les numéros de lignes et de colonnes de la cellule de départ puis ajouter 1 ou un autre chiffre pour ajuster le mouvement.
La macro donne ceci :
Sub Suppression()
Dim Ligne, Colonne As Integer
Ligne = Selection.Row
Colonne = Selection.Column
Cells(Ligne, Colonne).ClearContents
Cells(Ligne, Colonne + 1).ClearContents
Cells(Ligne, Colonne + 2).ClearContents
End Sub
Bonjour
Il faut te servir de la cellule active pour trouver où tu te situes
Essayes
Sub Suppression()
' Supprime les colonnes A B C E et H de la ligne active
' Touche de raccourci du clavier: Ctrl+Maj+S
Range("A" & ActiveCell.Row).Resize(1, 3).ClearContents
Range("E" & ActiveCell.Row).ClearContents
Range("H" & ActiveCell.Row).ClearContents
Range("A3:H" & Range("D" & Rows.Count).End(xlUp).Row).Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Re
J'essaie vos solutions dès que possible....peut-être pas avant vendredi mais je reviendrai ici pour vous dire ce qu'il en est.
A vue de nez, cela semble bien correspondre à ce que je recherche.
Cordialement
Tonthon
Bonjour,
Je suis confus, j'ai pris la dernière solution et c'est ok....il n'y a pas de raison que l'autre ne fonctionne pas.
Le tableur joint était un exemple pour voir si cela était possible, mon tableur réel est "plus costaud".
Je vous le joins car apparemment on peut "grouper une série de colonnes" puis faire un "suppr" pour cet ensemble = les colonnes en jaune sont à laisser en l'état car contiennent dans le réel des fonctions
Si vous pouviez me faire la macro adaptée pour "colonnes A à E" + suppr et "colonnes "G à S" + suppr pour finir par un tri par le nom.
Mille merci
Cordialement
Tonthon
Bonjour
Tu peux essayer cette macro
Sub Suppression()
' Supprime les colonnes A B C E et H de la ligne active
' Touche de raccourci du clavier: Ctrl+Maj+S
On Error Resume Next
Range("A" & ActiveCell.Row).Resize(1, 19).SpecialCells(xlCellTypeConstants, 23).ClearContents
Range("A5:W" & Range("C" & Rows.Count).End(xlUp).Row).Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Voici la macro que je vous propose
Sub Suppression()
On Error Resume Next
L = ActiveCell.Row
L1 = ActiveSheet.UsedRange.Rows.Count
Range("A" & L & ":E" & L1).ClearContents
Range("G" & L & ":S" & L1).ClearContents
Range("A5").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
ouisansdoute a écrit :Voici la macro que je vous propose
Sub Suppression() On Error Resume Next L = ActiveCell.Row L1 = ActiveSheet.UsedRange.Rows.Count Range("A" & L & ":E" & L1).ClearContents Range("G" & L & ":S" & L1).ClearContents Range("A5").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub
J'ai appliqué cette macro qui a l'air de bien fonctionné, je dis "à l'air" parce que malheureusement il vient aussi à perturber des "codes" existants....notamment un comptage dans la colonne A.
Il faudrait que cette macro fasse le tri sur tout le tableur selon le nom sans interférer avec l'existant.
Pour des raisons de confidentialité, je ne peux pas mettre le tableur réel qui contient des données personnelles.
Si tu vois une solution, je suis preneur.
Cordialement
Tonthon
Banzai64 a écrit :Bonjour
Tu peux essayer cette macro
Sub Suppression() ' Supprime les colonnes A B C E et H de la ligne active ' Touche de raccourci du clavier: Ctrl+Maj+S On Error Resume Next Range("A" & ActiveCell.Row).Resize(1, 19).SpecialCells(xlCellTypeConstants, 23).ClearContents Range("A5:W" & Range("C" & Rows.Count).End(xlUp).Row).Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub
Bonjour,
J'ai appliqué cette macro....parfait pour l'aspect "suppr" dans les colonnes souhaitées
==> c'est nickel-chrome mais il s'arrête la !
En clair, il ne fait pas le tri...j'ai beau essayer de voir et de comprendre....
Tu pourrais revoir le "pourquoi"
Cordialement
Tonthon
Bonjour
Tonthon a écrit :En clair, il ne fait pas le tri...j'ai beau essayer de voir et de comprendre....
Tu pourrais revoir le "pourquoi"
Mais pour moi il y a un tri
[quote="Banzai64"
Mais pour moi il y a un tri[/quote]
Re
Tu as raison sur le tableur joint c'est nickel-chrome....donc j'ai recopié cette macro dans mon tableur réel.....qui ne veut rien savoir et qui s'arrête au "nettoyage" de la ligne sans faire le tri.
Le tableur réel est beaucoup plus complexe avec des macros, des codes et des feuilles avec liaison mais "normalement" cela ne devrait pas affecter le tri.
Comme j'ai dans ce tableur réel, une macro qui fait le tri et j'ai donc contourné le problème en remplaçant la fin par "call TRIER" c'est à dire le nom de la macro qui trie..... et cela fonctionne.
Sub Suppression()
' Supprime les colonnes A B C E et H de la ligne active
' Touche de raccourci du clavier: Ctrl+Maj+S
On Error Resume Next
Range("A" & ActiveCell.Row).Resize(1, 19).SpecialCells(xlCellTypeConstants, 23).ClearContents
Range("A5:W" & Range("C" & Rows.Count).End(xlUp).Row).Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Call TRIER
End Sub
Cette parade évite par ailleurs le problème exposé avec l'autre solution.
Merci de votre aide qui me permet de progresser doucement...
Cordialement
Tonthon