Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Souci Macro et changement

4 réponses
Avatar
rthompson
Bonjour à toutes et tous

Petite question posée par mon boss

Quand on crée des macro dans le style

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sub Macro2()
Range("A2:Z15").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending,
Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=
_
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal,
DataOption2 _
:=xlSortNormal
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Chaque fois qu'on insère une colonne en B par exemple
Il faut physiquement changer la macro

Si on travaille avec des formules celle-ci sont ajustée automatiquement

Je lui ai répondu que pour éviter cela il fallait travailler avec des plages
nommées

Et il me dit que c'est idiot et qu'il y a sûrement moyen de faire autre
chose

Alors??????

Ma question est Y a-t-il moyen de faire en sorte que les macros soit
adaptées automatiquement?


Merci et à bientôt

Rex

PS
Je quitte le PC à 13h jusque demain matin
Donc si vous réachissez cet après-midi, je ne vous répondrai que demain

4 réponses

Avatar
Daniel.C
Bonjour.
Si ta zone de tri comporte des titres, tu peux localiser le colonne
correspondante et t'en servir pour définir les clefs de tri.
Cordialement.
Daniel
"rthompson" a écrit dans le message de
news: %
Bonjour à toutes et tous

Petite question posée par mon boss

Quand on crée des macro dans le style

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sub Macro2()
Range("A2:Z15").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending,
Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=
_
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal,
DataOption2 _
:=xlSortNormal
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Chaque fois qu'on insère une colonne en B par exemple
Il faut physiquement changer la macro

Si on travaille avec des formules celle-ci sont ajustée automatiquement

Je lui ai répondu que pour éviter cela il fallait travailler avec des
plages nommées

Et il me dit que c'est idiot et qu'il y a sûrement moyen de faire autre
chose

Alors??????

Ma question est Y a-t-il moyen de faire en sorte que les macros soit
adaptées automatiquement?


Merci et à bientôt

Rex

PS
Je quitte le PC à 13h jusque demain matin
Donc si vous réachissez cet après-midi, je ne vous répondrai que demain






Avatar
michdenis
Dans un premier temps, tu peux créer 2 plages nommées
invisibles par l'interface de la feuille de calcul comme ceci
que tu utilises dans ton tri.

Cette macro servira qu'une fois !
'----------------------
Sub test()

Names.Add "_CritSort1", Feuil1.Range("D2"), False
Names.Add "_CritSort2", Feuil1.Range("C2"), False

End Sub
'----------------------

Et que le tri s'adresse à toute la plage de cellules de la feuille :
Tu dois y ajouter une gestion d'erreur... la méthode "Find"
renvoie une erreur de type 91 lorsqu'elle ne trouve pas ce qu'elle
cherche !

'----------------------
Sub Test_Sort()
Dim DerLig As Long, DerCol As Integer

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

With .Range(.Range("A2"), .Cells(DerLig, DerCol))
.Sort Key1:=Range("_CritSort1"), Order1:=xlDescending, _
Key2:=Range("_CritSort2"), Order2:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
End With
End With

End Sub
'----------------------



"rthompson" a écrit dans le message de
news: %
Bonjour à toutes et tous

Petite question posée par mon boss

Quand on crée des macro dans le style

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sub Macro2()
Range("A2:Z15").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending,
Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=
_
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal,
DataOption2 _
:=xlSortNormal
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Chaque fois qu'on insère une colonne en B par exemple
Il faut physiquement changer la macro

Si on travaille avec des formules celle-ci sont ajustée automatiquement

Je lui ai répondu que pour éviter cela il fallait travailler avec des
plages nommées

Et il me dit que c'est idiot et qu'il y a sûrement moyen de faire autre
chose

Alors??????

Ma question est Y a-t-il moyen de faire en sorte que les macros soit
adaptées automatiquement?


Merci et à bientôt

Rex

PS
Je quitte le PC à 13h jusque demain matin
Donc si vous réachissez cet après-midi, je ne vous répondrai que demain






Avatar
rthompson
Bonjour et merci pour ta réponse

En effet c'est une solution réalisable
Mais uniquement dans le cas de l'exemple choisi

Une fois de plus j'ai un peu difficile à expliquer ce que je cherche
Et c'est pas la première fois ;-((

Il s'agit de plusieurs fichiers contenant chacune une bonne vingtaine de
macros
qui font un peu de tout

Et pas uniquement sur des colonnes ou des rangs

On prends une cellule d'une feuille
qui est relié à une série non-continue de cellules de plusieurs autres
feuilles
et qui est "travaillée" par une équation de cette série en rapport avec
d'autres cellules de la dernière feuille
Et le résultat influence une serie de calcul de la feuille de présentation

Et si on déplace une cellule d'une de ces feuille il faut ré-ajuster la
macro

Moi je prétend que tant que l'on utilisera pas des palges nommées,
on sera obligé de faire à chaque les changement manuellement

A moins qu'un génie à une idée

Merci et à bientôt

Rex


"Daniel.C" a écrit dans le message de news:

Bonjour.
Si ta zone de tri comporte des titres, tu peux localiser le colonne
correspondante et t'en servir pour définir les clefs de tri.
Cordialement.
Daniel
"rthompson" a écrit dans le message de
news: %
Bonjour à toutes et tous

Petite question posée par mon boss

Quand on crée des macro dans le style

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sub Macro2()
Range("A2:Z15").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending,
Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal,
DataOption2 _
:=xlSortNormal
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Chaque fois qu'on insère une colonne en B par exemple
Il faut physiquement changer la macro

Si on travaille avec des formules celle-ci sont ajustée automatiquement

Je lui ai répondu que pour éviter cela il fallait travailler avec des
plages nommées

Et il me dit que c'est idiot et qu'il y a sûrement moyen de faire autre
chose

Alors??????

Ma question est Y a-t-il moyen de faire en sorte que les macros soit
adaptées automatiquement?


Merci et à bientôt

Rex

PS
Je quitte le PC à 13h jusque demain matin
Donc si vous réachissez cet après-midi, je ne vous répondrai que demain










Avatar
rthompson
Bonjour et merci pour ta réponse

Tu confirmes ce que je dis

Ile est impératif de passer par des plages nommées
quoiqu'en dise mon patron

J'esssssplkkkk, et c'est pas mon fort

Il s'agit de plusieurs fichiers contenant chacune une bonne vingtaine de
macros
qui font un peu de tout

Et pas uniquement sur des colonnes ou des rangs

On prends une cellule d'une feuille
qui est relié à une série non-continue de cellules de plusieurs autres
feuilles
et qui est "travaillée" par une équation de cette série en rapport avec
d'autres cellules de la dernière feuille
Et le résultat influence une serie de calcul de la feuille de présentation

Et si on déplace une cellule d'une de ces feuille il faut ré-ajuster la
macro

Moi je prétend, et tu confirmes, que tant que l'on utilisera pas des palges
nommées,
on sera obligé de faire à chaque les changement manuellement

A moins qu'un génie à une idée

Merci et à bientôt


Rex



"michdenis" a écrit dans le message de news:

Dans un premier temps, tu peux créer 2 plages nommées
invisibles par l'interface de la feuille de calcul comme ceci
que tu utilises dans ton tri.

Cette macro servira qu'une fois !
'----------------------
Sub test()

Names.Add "_CritSort1", Feuil1.Range("D2"), False
Names.Add "_CritSort2", Feuil1.Range("C2"), False

End Sub
'----------------------

Et que le tri s'adresse à toute la plage de cellules de la feuille :
Tu dois y ajouter une gestion d'erreur... la méthode "Find"
renvoie une erreur de type 91 lorsqu'elle ne trouve pas ce qu'elle
cherche !

'----------------------
Sub Test_Sort()
Dim DerLig As Long, DerCol As Integer

With Worksheets("Feuil1")
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

With .Range(.Range("A2"), .Cells(DerLig, DerCol))
.Sort Key1:=Range("_CritSort1"), Order1:=xlDescending, _
Key2:=Range("_CritSort2"), Order2:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
End With
End With

End Sub
'----------------------



"rthompson" a écrit dans le message de
news: %
Bonjour à toutes et tous

Petite question posée par mon boss

Quand on crée des macro dans le style

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sub Macro2()
Range("A2:Z15").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending,
Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal,
DataOption2 _
:=xlSortNormal
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Chaque fois qu'on insère une colonne en B par exemple
Il faut physiquement changer la macro

Si on travaille avec des formules celle-ci sont ajustée automatiquement

Je lui ai répondu que pour éviter cela il fallait travailler avec des
plages nommées

Et il me dit que c'est idiot et qu'il y a sûrement moyen de faire autre
chose

Alors??????

Ma question est Y a-t-il moyen de faire en sorte que les macros soit
adaptées automatiquement?


Merci et à bientôt

Rex

PS
Je quitte le PC à 13h jusque demain matin
Donc si vous réachissez cet après-midi, je ne vous répondrai que demain