Coller dans la dernière colonne vide

estourbi

XLDnaute Nouveau
Bonjour,
Je cherche à faire une "sauvegarde" de données d'une feuille à l'heure via une macro.
En gros j'ai des données dans les colonnes A, B et C sur une feuille et j'aimerais copier les valeurs uniquement dans les colonnes A,B,C de l'autre feuille et que si je sauvegarde de nouveau, la nouvelle "sauvegarde" se retrouve dans les colonnes D,E et F et ainsi de suite.
J'ai trouvé sur les forums la formule suivante:

Public Sub Save_Click2()
Dim dest As Range
Dim p As Range
Dim cel As Range
Dim x As Byte

Set p = Sheets("feuil3").Range("a14:a33,b14:b33,c14:c33,")

With Sheets("feuil4")
If .Range("B1").Value = "" Then
Set dest = .Range("B1")
Else 'sinon
Set dest = .Range("B65536").End(xlUp).Offset(1, 0)
End If
End With

For Each cel In p
cel.Copy dest.Offset(0, x)
x = x + 1
Next cel

End Sub

Seulement elle sauvegarde les données ligne par ligne, les unes après les autres ce qui n'est pas que je cherche et les modifications apportées (en changeant end(xlup) en end(xltoright) et l'offset) ne fonctionne pas correctement.

Toute aide est appréciée.
Merci
 

13GIBE59

XLDnaute Accro
Re : Coller dans la dernière colonne vide

Bonjour, Estourbi

Essaie plus simple :

Code:
Sub Copie()
Application.ScreenUpdating=False
Sheets("Feuil1").Select
Range("A14:B33").Select
    Selection.Copy
Sheets("Feuil2").Select
Range("IV14").End(xltoLeft)
ActiveSheet.Paste
    Application.CutCopyMode = False
Range("A1")

A +

JB
 

alex67800

XLDnaute Impliqué
Re : Coller dans la dernière colonne vide

Bonsoir Estourbi,
Essai de changer
Code:
Set p = Sheets("feuil3").Range("a14:a33,b14:b33,c14:c33,")
par
Code:
Set p = Sheets("feuil3").Range("a14:c33,")

Je n'ai pas tester, mais cela simplifie la selection de ta plage de données.
 

job75

XLDnaute Barbatruc
Re : Coller dans la dernière colonne vide

Bonsoir à tous,

Une manière moins traditionnelle, qui copie Feuil1 vers Feuil2 :

Code:
Sub Copier()
Dim col As Byte
With Sheets(2)
col = .Range("IV1").End(xlToLeft).Column + Application.CountA(.Range("A1"))
.Range(.Columns(col), .Columns(col + 2)) = Sheets(1).Range("A:C").Value
End With
End Sub

Bonne nuit.

Edit : j'ai supposé que le tableau commençait en A1, à adapter si nécessaire.
 
Dernière édition:

estourbi

XLDnaute Nouveau
Re : Coller dans la dernière colonne vide

Ma foi je ne m'attendais pas à des réponses aussi rapides, je vous en remercie.

Job75 ton code me semble marcher parfaitement, j'espère que je ne le massacrerai pas par la suite (je compte utiliser un inputbox pour que l'utilisateur puisse nommer la "sauvegarde"). Donc grand merci!

13GIBE59 Excel me met une "utilisation impropre de la propriété" qui semble provenir de la ligne:
Range("IV14").End(xltoLeft)
Comme Job75 a résolu tout mes problèmes je n'ai pas poussé plus loin mon enquête mais merci quand même
 

job75

XLDnaute Barbatruc
Re : Coller dans la dernière colonne vide

Re,

Pardon, je n'avais pas regardé la macro. S'il s'agit seulement de la plage A14:C33, il faut plutôt écrire :

Code:
Sub Copier()
Dim col As Byte
With Sheets(2)
col = .Range("IV14").End(xlToLeft).Column + Application.CountA(.Range("A14"))
.Range("A14:C33").Offset(0, col - 1) = Sheets(1).Range("A14:C33").Value
End With
End Sub

A+
 
Dernière édition:

estourbi

XLDnaute Nouveau
Re : Coller dans la dernière colonne vide

Après vérification, la macro ne marche pas exactement comme je veux. Elle enregistre toujours plus loin les données.
Or, il faudrait en fait que la copie se place dans l'emplacement libre.
Je m'explique:
Dans les tableaux de la feuille1 il y a trois colonnes qui m'intéressent.
Je veux copier celles-ci pour les enregistrer sur une feuille de sauvegarde, toujours par trois, toujours côte à côte.
Par la suite, chaque copier/coller aura un nom de sauvegarde donner par l'utilisateur via imput box.
L'utilisateur pourra également supprimer la sauvegarde de son choix dans n'importe quel ordre.
Il faudrait donc que les nouvelles sauvegardes occupent les nouvelles places ainsi libérées pour éviter un effet "gruyère" (plus embêtant pour moi que pour l'utilisateur remarquez:eek:).
Voilà, je pense (j'espère que c'est plus clair)
 

alex67800

XLDnaute Impliqué
Re : Coller dans la dernière colonne vide

Re estourbi,
Bonsoir job75,
Pourquoi ne pas simplement faire une macro qui permet à l'utilisateur de supprimer une sauvegarde, mais en réalité supprime la colonne contenant celle-ci?

Ainsi tu n'aurais pas cet effet "Gruyère".

Quand au code de job75 se place à droite de la dernière colonne renseigné.

Ce n'est qu'une idée.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Coller dans la dernière colonne vide

Bonjour à tous,

Tout à fait d'accord alex, il vaut beaucoup mieux supprimer les 3 colonnes dont on ne veut plus.

Sinon voici un code qui fonctionne aussi quand on efface les 3 colonnes :

Code:
Sub Copier()
Dim col As Byte
With Sheets(2)
col = IIf(IsEmpty(.Range("A1")), 0, .Range("A1").End([COLOR="Red"]xlToRight[/COLOR]).Column)
.Range("A:C").Offset(0, col) = Sheets(1).Range("A:C").Value
End With
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia