À propos de Resize ?

  • Initiateur de la discussion Jocelyn
  • Date de début
J

Jocelyn

Guest
Bonjours à vous tous sur le forum.
On apprend toujours de nouvelles chose ici.

Je lisais ce fil , parti écrite par LaurentTBT :
http://www.excel-downloads.com/html/French/forum/messages/1_77672_77672.htm

Je pensait qu'en utilisant le Resize, les colones et les lignes seraient redimentionné d'après la feuille copié.

Ce qui n'est pas le cas.

Pourait-on utiliser une fonction qui redimentionnerait les lignes et les colones tel que la feuille copié ?

Voici mon exemple :

Workbooks(CeLivre).Activate
Range("A1:Z500").Resize(500, 26).Copy
Workbooks(AutreLivre).Activate
Sheets(Quelnom).Select
With ActiveSheet
.Range("A500").End(xlUp).PasteSpecial Paste:=xlPasteAll
End With

Au plaisir de vous lire et merci.
 
B

Bernard

Guest
Bonsoir Jocelyn

J'ai essayé la macro et elle fonctionne parfaitement.

En effet, la propriété RESIZE redimentionne par rapport à la cellule la plus en haut à gauche de la plage sélectionnée.

La plage Range("A1:Z500") comprend 500 lignes et 26 colonnes.

Comme la propriété RESIZE(500,26) a les mêmes données de 500 lignes et 26 colonnes, la copie est identique.

Dans ce cas cela correspond à :
Sub Macro1()
Workbooks("Classeur2.xls").Activate
Range("A1:Z500").Copy
Workbooks("Classeur3.xls").Activate
Sheets("Feuil1").Select
With ActiveSheet
.Range("A500").End(xlUp).PasteSpecial Paste:=xlPasteAll
End With
Application.CutCopyMode = False
End Sub

Cordialement

Bernard
 
J

Jocelyn

Guest
Bonsoir Bernard

Je suis d'accord avec toi, que :
Range("A1:Z500").copy est indentique.

Mais je ne parvient pas a redimensionner les nouvelles colones, peut importe la façon que l'on écrit .copy.

Ma question est :

Existe-t-il une façon de passer la copie avec la dimension des colones originales ?

Merci
 
J

Jocelyn

Guest
Yep!

Petite astuce à laquel je vient de penser :

Workbooks(CeLivre).Activate
For i = 1 To 26
large(i) = Cells(1, i).ColumnWidth
Next i
Range("A1").Resize(500, 26).Copy
Workbooks(AutreLivre).Activate
Sheets(Quelnom).Select
With ActiveSheet
.Range("A500").End(xlUp).PasteSpecial Paste:=xlPasteAll
For i = 1 To 26
Cells(1, i).ColumnWidth = large(i)
Next i
End With
Application.CutCopyMode = False
End Sub

Et qui fonctionne à la merveille.

Peut-être que quelqu'un d'autre connaitrait une autre façon ?

Toujours à l'affut de nouvelles connaissance
Merci encore

Joc.
 
B

Bernard

Guest
Bonsoir Jocelyn

En faisant un copier -coller de l'ensemble d'une feuille sur une autre, les dimensions des lignes et colonnes sont respectées.

Sub Macro1()
Windows("Classeur2.xls").Activate
Worksheets("Feuil1").Cells.Select
Selection.Copy
Windows("Classeur3.xls").Activate
Worksheets("Feuil1").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

Cordialement

Bernard
 
L

LaurentTBT

Guest
Bonsoir à tous

Je me suis mal exprimé sur l'autre fil: Resize ne sert pas à dimensionner des cellules (au sens largeur de colonne ou hauteur de ligne)
Agrandir n'est pas non plus le mot qui convient
MaPlage.Resize(i,j) donnera une nouvelle plage commençant à la première cellule de MaPlage, et faisant i lignes sur j colonnes.

Sinon, pour recopier les largeurs de cellules, il peut y avoir cette solution:
Workbooks(CeLivre).worksheets("FeuilleDeDépart").Columns("A:Z").Copy
Workbooks(AutreLivre).worksheets("FeuilleD'arrivée").Range("A1").PasteSpecial Paste:=xlPasteFormats

MAIS, cela copiera tous les formats des cellules des 26 colonnes, pas seulement la largeur. J'ai pas trouvé mieux que d'enregistrer chaque largeur comme tu l'as fait, Jocelyn.

Bonne soirée.
Laurent.
 

Statistiques des forums

Discussions
312 684
Messages
2 090 917
Membres
104 699
dernier inscrit
Azyra