Copier-Coller décaler vers le droite si cellule pleine

Tekdri583

XLDnaute Nouveau
Bonjour,

Je dois quotidiennement, copier-coller la colonne J de la feuille "EUR" dans la 1ère colonne vide à droite. Ainsi, tous les jours, les valeurs sont enregistrés dans une nouvelle colonne et ainsi, je créés un historique des valeurs.

J'ai donc pensé à créer une macro. Mon problème est que je n'arrive pas à lui dire de coller les valeurs dans la 1ère colonne vide. Avec ce que j'ai écris ci-dessous, il me coller toujours les valeurs dans la colonne BB.

Sub Macro1()

' Macro1 Macro
' Macro enregistrée le 21.07.2010 par WM
'
' Touche de raccourci du clavier: Ctrl+u


'
'Copier Colonne J de la feuille EUR
Sheets("EUR").Select
Application.Run "BLPLinkReset"
Columns("J:J").Select
Selection.Copy


'Coller dans la derière colonne vide de la feuille EUR
Range("BB1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


'Modifier format des cellules collées
Columns("BA:BA").Select
Application.CutCopyMode = False
Selection.Copy
Columns("BB:BB").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWindow.SmallScroll ToRight:=1


End Sub

Avez-vous la solution?

merci

Stéphane
 

titiborregan5

XLDnaute Accro
Re : Copier-Coller décaler vers le droite si cellule pleine

Oui, cela se fait avec les End(xlToLeft).Offset(0, 1).
ainsi il va trouver la dernière colonne pleine, et va écrire dans la suivante (soit la 1ère colonne vide).
Mets un fichier si tu veux que je te montre en "vrai"

Tibo
 

kjin

XLDnaute Barbatruc
Re : Copier-Coller décaler vers le droite si cellule pleine

Bonjour,
Code:
Sub Macro1()
Dim T, dc%
'Application.Run "BLPLinkReset" '????
With Sheets("EUR")
    'si la dernière colonne est non vide on quitte...ici v2000 = 256 colonnes
    'If .Cells(1, 256) <> "" Then Exit Sub
    T = .Range("J1:J" & .Range("J65000").End(xlUp).Row).Value
    dc = .Range("IV1").End(xlToLeft).Column + 1
    .Range(.Cells(1, dc), .Cells(UBound(T), dc)) = T
End With
End Sub
Reste à définir la mise en forme en évitant le copier/coller
A+
kjin
 

Discussions similaires

Réponses
2
Affichages
125

Statistiques des forums

Discussions
312 330
Messages
2 087 337
Membres
103 524
dernier inscrit
Smile1813