XL 2010 Copy + mise en forme plage

dev_co

XLDnaute Occasionnel
Bonjour
J'ai fais 2 types de copie de plage en exemple court
Celle avec les ref en 'cells' ne fonctionne pas ?
l'autre ok
Que faut il ajouter pour avoir aussi le format de cellule identique ?
 

Pièces jointes

  • copy.xlsm
    16.6 KB · Affichages: 16

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Avant de parler Cells, les noms de macro ne doivent pas être des mots clefs vba ou des adresses de cellule et "Cop1" est une adresse de cellule. Chez moi votre macro refuse de se lancer à partir de la liste des macros.

Ensuite, si votre macro est dans un module, il faut dire à Cells à qu'elle feuille il appartient, comme vous le faites pour Range. Sinon il prend la feuille active par défaut.
Ce qui peut faire conflit, dans un Range qui lui connaît sa feuille et que la feuille active soit une autre comme dans votre ligne ci-dessous.
Sheets("Feuille1").Range(Cells(i, 2), Cells(i, 4) )
Résolution :
VB:
Sub copier_Plage()
    Dim i As Long
    i = 5
    With Sheets("Feuil1")
        .Range(.Cells(i, 2), .Cells(i, 4)).Copy Destination:=Sheets("Feuil2").Range("G11")
    End With
End Sub

Notez les . devant Cells ".Cells" qui fontréférence à la variable du bloc With...End With

Et par pitié, déclarer vos variables !!!!

Cordialement
 

dev_co

XLDnaute Occasionnel
Ok merci , mais chez moi avec F5 ça fonctionne !
Pas vu que c'était pas un fichier réel ?? j'ai fait bidon pour le test
Je suis loin d'être expert mais pas débutant non plus les bases je connais sauf que pour moi les colonnes s'arrêtaient à IV !!
les .cells ou .range : je connais
si je déclare je ferais DIM i as integer ( entier naturel)
Sinon ou je bloque c'est pour ajouter le format dimensions des cellules
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour
sauf que pour moi les colonnes s'arrêtaient à IV !!

Plus depuis les versions 2007 et l'apparition des fichiers .xlsx ou .xlsxm
si je déclare je ferais DIM i as integer ( entier naturel)

Sauf que le moteur VBA les convertira en long, puisqu'il travaille (depuis ces versions) avec des long pour les objets range et cell parce que Rows.Count = 1 048 576 est plus large qu'un entier.

Sinon ou je bloque c'est pour ajouter le format dimensions des cellules
Pas le temps tout de suite mais voyez du côté de EntireRow.RowHeight et EntireColumn.ColumnWidth
Cordialement
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@dev_co
Sur la base de ton code je te propose ceci :

VB:
Sub cop1()

i = 5
Sheets("Feuil1").Range("B" & i & ":D" & i).Copy Destination:=Sheets("Feuil2").Range("G11")
Sheets(2).Columns(7).ColumnWidth = Sheets(1).Columns(2).ColumnWidth
Sheets(2).Columns(9).ColumnWidth = Sheets(1).Columns(4).ColumnWidth
Sheets(2).Rows(11).RowHeight = Sheets(1).Rows(i).RowHeight

End Sub

*Merci de ton retour

@Phil69970
 

laurent950

XLDnaute Accro
Bonsoir,

Il y a deux format dans la Feuil1 donc au choix
r.Areas.Item(1)
ou
r.Areas.Item(2)

VB:
Sub cop1()
i = 5
Dim r As Range
    Set r = Application.Union(Sheets("Feuil1").Range("B" & i), Sheets("Feuil1").Range("D" & i))
    'MsgBox r.Areas.Item(1).Address '/ = Sheets("Feuil1").Range("B" & i)
    'MsgBox r.Areas.Item(2).Address '/ = Sheets("Feuil1").Range("B" & i)
    With r.Areas.Item(1)
         .Copy
         Sheets("Feuil2").Range("G11").PasteSpecial Paste:=xlPasteFormats
         For i = 1 To r.Areas.Count: Txt = Txt & r.Areas.Item(i).Value2 & " ": Next i
         Sheets("Feuil2").Range("G11") = Trim(Txt)
         Sheets("Feuil2").Range("G11").Columns.AutoFit
         Sheets("Feuil2").Range("G11").RowHeight = .RowHeight
         .Application.CutCopyMode = False
    End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 923
Membres
101 840
dernier inscrit
SamynoT