XL 2010 Copier / Coller d'une feuille à l'autre en VBA...

  • Initiateur de la discussion Initiateur de la discussion Yvan1
  • Date de début Date de début

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 !

Yvan1

XLDnaute Occasionnel
Bonjour,

La formule VBA suivante colle une sélection de la page "Coll N" sur la page "Anc Coll" :

b = 0

For i = 2 To 10
Sheets("Coll N").Range(Cells(i, 1), Cells(i, 19)).Select
Selection.Copy
b = b + 1
With Worksheets("Anc Coll")
.Cells(b, 1).Select
.Selection.Paste
End With
Next i

En théorie, car la ligne .Cells(b, 1).Select plante !!!

Est-ce que quelqu'un a une idée ?

Merci d'avance,

Yvan
 
Bonjour Yvan,
Je pense que vous avez un problème de feuille active pour la sélection.
Mais il y a plus simple, vous pouvez essayer :
VB:
Sub Essai()
    Sheets("Coll N").Range(Cells(2, 1), Cells(10, 19)).Copy _
    Destination:=Sheets("Anc Coll").Cells(1, 1).End(xlUp).Offset(0, 0)
End Sub
Ce qui fait la même chose, et vous évitez les Select.
 
Bonjour @Yvan1 , @sylvanu , le Forum

Deux autres méthodes en plus de celle de Sylvanu, la première en essayant de respecter cette "gymnastique tordue, pire que du yoga" que tu as postée... 😉

Et sinon oui ca plantait à cause des Select sans être dans la feuille active !

VB:
Option Explicit

Sub Test_Ivan_1()
Dim WSsource As Worksheet, WScible As Worksheet
Dim RngSource As Range
Dim b As Integer, i As Integer

Set WSsource = ThisWorkbook.Worksheets("Coll N")
Set WScible = ThisWorkbook.Worksheets("Anc Coll")

For i = 2 To 10
        Set RngSource = WSsource.Range(WSsource.Cells(i, 1), WSsource.Cells(i, 19))
        b = b + 1
        RngSource.Copy WScible.Cells(b, 1)
Next i

Application.CutCopyMode = False

End Sub

'=============================================================

Sub Test_Ivan_2()
Dim WSsource As Worksheet, WScible As Worksheet
Dim RngSource As Range

Set WSsource = ThisWorkbook.Worksheets("Coll N")
Set WScible = ThisWorkbook.Worksheets("Anc Coll")

Set RngSource = WSsource.Range("S2:S" & WSsource.Range("S1000").End(xlUp).Row) 'Ajuste dynamiquement le nombre de lignes

WScible.Range("A1").Resize(RngSource.Rows.Count, 1).Value = RngSource.Value

End Sub

La seconde est la plus "académique" et rapide et ne copie que la Valeur (Pas les Formules ou les mises en forme)

Bonne soirée
@+Thierry
 
- 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

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
74
Réponses
3
Affichages
534
Réponses
2
Affichages
400
Retour