Comment remplacer ...

Résolu/Fermé
Looping38 Messages postés 91 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 - 6 déc. 2018 à 11:13
Looping38 Messages postés 91 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 - 9 déc. 2018 à 14:51
Bonjour,
Je souhaite remplacer la ligne

.SetRange Range("G1:Co121") qui a une donnée fixes par la ligne

.setRange (Cells(1, 7), Cells(145, derncol)) qui a une donnée variable

Et dans la première partie

Range( _
"G10:CO10")
par également la reprise de la variable derncol à la place de la colonne (CO)

dans la macro suivante mais il me dit qu'il y a une erreur de syntaxe... et je ne connais évidemment pas bien tous ça car fait avec l'enregistreur de macro...

Merci d'avance pour votre attention et votre aide.


Dim derncol As Integer

derncol = ActiveSheet.Cells(14, Cells.Columns.Count).End(xlToLeft).Column
For n = 7 To derncol
Columns(n).Hidden = False
Next n
Range(Columns(7), Columns(derncol)).Select
ActiveWorkbook.Worksheets("Panorama FM").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Panorama FM").Sort.SortFields.Add Key:=Range( _
"G10:CO10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Panorama FM").Sort
.SetRange Range("G1:Co121") ' à remplacer par .setRange (Cells(1, 7), Cells(145, derncol))
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
A voir également:

4 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
6 déc. 2018 à 13:13
Bonjour,

Pour ça il existe une touche "Miracle" : F1
VBA indique la ligne de code en erreur, il suffit de mettre le pointeur texte sur chaque mot de la ligne et de taper F1
0
didibonf Messages postés 419 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 21 mai 2019 96
6 déc. 2018 à 13:31
Bonjour,
Il faut ajouter "Range" :
.SetRange Range(Cells(1, 7), Cells(145, derncol))

Cordialement,
didibonf
0
Looping38 Messages postés 91 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 1
8 déc. 2018 à 08:05
Un grand merci didibonf. Ca marche du tonnerre.
Et dans la partie supérieur je souhaite également remplacer (en souligné)

ActiveWorkbook.Worksheets("Panorama FM").Sort.SortFields.Add Key:=Range( _
"G10:CO10"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal

par quelque chose comme :

ActiveWorkbook.Worksheets("Panorama FM").Sort.SortFields.Add Key:=Range( _
"G10:COderncol"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal

C'est également un problème de syntaxe ;-)
Merci d'avance.
Looping38
0
didibonf Messages postés 419 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 21 mai 2019 96
8 déc. 2018 à 10:22
C'est pour la dernière colonne ou la dernière ligne ? Si c'est pour la dernière ligne on peut faire :
Range( "G10:CO" & dernligne) sinon il faut reprendre la même structure qu'auparavant Range(Cells(10, 7), Cells(10, derncol)
0
Looping38 Messages postés 91 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 1
9 déc. 2018 à 14:51
Bonjour Didibonf et merci pour ce retour.
Avec du temps, j'ai pu adapter ta réponse à mon cas, puisqu'il s'agissait de colonnes et non de lignes...
J'avais mal exprimé ma demande.

Voila ce que j'ai fais et qui manifestement marche.

Range(Columns(7), Columns(derncol - 1)).Select
ActiveWorkbook.Worksheets("Panorama FM").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Panorama FM").Sort.SortFields.Add2 Key:=Range( _
Cells(10, 7), Cells(10, derncol)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Panorama FM").Sort.SortFields.Add2 Key:=Range( _
Cells(8, 7), Cells(8, derncol)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Panorama FM").Sort
.SetRange Range(Cells(1, 7), Cells(145, derncol))
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
0