Coller dans la dernière colonne vide

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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.
 
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:
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
 
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:
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😱).
Voilà, je pense (j'espère que c'est plus clair)
 
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:
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
316
Réponses
5
Affichages
703
Réponses
4
Affichages
580
Réponses
3
Affichages
834
  • Question Question
XL 2021 listbox
Réponses
18
Affichages
502
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour