Non, non, non et non
(voilà, je suis tout énervé maintenant ...
![:( :(]()
)
...................
Salut JP,
Je n'aime pas voir un
Selection suivre un
Select dans vos codes. C'est une perte de temps pour le développeur et pour l'utilisateur de vos développements.
De plus, il me semble inadmissible qu'un programme (oui, bon, une macro, ça peut être un peu moins qu'un programme, mais c'est par principe) remplisse le presse-papier. Et si avant de lancer la macro j'y avais copié des trucs importants ?
Donc on se sert du paramètre Destination de la méthode Copy.
Ça donne :
Rows("41:41").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("I40:AC40").Copy Destination:=Range("I41")
Range("I40:L40").Copy Destination:=Range("I41:L41")
Range("U40:X40").Copy Destination:=Range("U41:X41")
C'est quand même plus clair, non ?
(En plus, comme ça, on voit tout de suite qu'il y a un chtit problème, les zones se recoupent
![;) ;)]()
)
Bon, maintenant, toutes ces adresses en dur, ce n'est pas terrible.
On peut toujours créer les adresses avec des
"I" & n & ":AC" & n, mais le mieux est encore de se servir de
Cells.
Range("I40") devient alors
Cells(40, 9). Au lieu de chaînes de caractères, on a des coordonnées numériques, ça va être plus simple.
On refait le code :
Rows(41).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range(Cells(40, 9); Cells(40, 29)).Copy Destination:=Cells(41, 9)
Range(Cells(40, 9), Cells(40, 12)).Copy Destination:=Cells(41, 9)
Range(Cells(40, 21), Cells(40, 24).Copy Destination:=Cells(41, 21)
Voilà. Il n'y a plus que des nombres.
Pas la peine de définir une plage pour la destination, une cellule unique suffit (la première en haut à gauche).
Bon, ce bout de programme ne fonctionne que pour la ligne 41. Ben pour la ligne n, c'est très facile :
Rows(n).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range(Cells(n-1, 9); Cells(n-1, 29)).Copy Destination:=Cells(n, 9)
Range(Cells(n-1, 9), Cells(n-1, 12)).Copy Destination:=Cells(n, 9)
Range(Cells(n-1, 21), Cells(n-1, 24).Copy Destination:=Cells(n, 21)
Ça t'aide ?