Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Accélérer: VBA copier/coller

titine06

XLDnaute Junior
Bonsoir,

J'utilise ce code énormément de fois à la suite:

Code:
    Windows("fusionééééééééééééééééé.xlsx").Activate
    Sheets("Feuil1").Select
    Range("E2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy

    Windows("Test.xls").Activate
    Sheets("Feuil2").Select    
    Range("H3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False


Et j'imagine que au lieu d'ouvrir une fenêtre/copier & ouvrir une autre fenêtre/coller , il y a un moyen plus "propre" de faire cette action, plus optimisée ?

Auriez-vous une idée?

merci d'avance


Titine
 

JNP

XLDnaute Barbatruc
Re : Accélérer: VBA copier/coller

Bonsoir Titine06 ,
Peut-être
Code:
Dim Cellule As Range, I As Integer
I = 0
With Workbooks("fusionééééééééééééééééé.xlsx").Sheets("Feuil1")
For Each Cellule In .Range("E2:E" & .Range("E2").End(xlDown).Row)
Workbooks("Test.xls").Sheets("Feuil2").Range("H3").Offset(I, 0) = Cellule.Value
I = I + 1
Next
End With
mais non testé, vu que pas de fichier test fourni ...
Bonne soirée
 

kjin

XLDnaute Barbatruc
Re : Accélérer: VBA copier/coller

Bonsoir, salut JNP ,
Faut se soigner quand on éternue comme ça...
Code:
Dim c As Range
With Workbooks("fusionééééééééééééééééé.xlsx").Sheets("Feuil1")
Set c = .Range("E2:E" & .Range("E65000").End(xlUp).Row)
End With
c.Copy Workbooks("Test.xls").Sheets("Feuil2").Range("H3")
A+
kjin
 

titine06

XLDnaute Junior
Re : Accélérer: VBA copier/coller

Bonjour Kjin,

Super code, merci beaucoup !! Juste une chose, j'aimerai que le copier soit uniquement en valeur. Comment dois je adapter ton code ?

MErcii !!

Titine
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Accélérer: VBA copier/coller

Salut

ne copie que les valeurs
Code:
   Dim tablo

  Windows("fusionééééééééééééééééé.xlsx").Activate
  With Sheets("Feuil1")
    tablo = .Range("E2", .Range("E65000").End(xlUp))
    Workbooks("Test.xls").Activate
    Sheets("Feuil2").Range("H3:H" & UBound(tablo) + 2) = tablo
  End With
 

titine06

XLDnaute Junior
Re : Accélérer: VBA copier/coller

Coucou,

merci pour ta solution, mais je vais rester sur celle de Kjin.

Je souhaite juste modifier:
Copy Workbooks("Test.xls").Sheets("Feuil2").Range("H3")

pour que ca copie uniquement les valeurs.


Merci d'avance !!

Titine
 

titine06

XLDnaute Junior
Re : Accélérer: VBA copier/coller

Bonsoir !!


Merci Jean-Marcel, ca marche très bien !

Mais je voudrais revenir sur le code de Kjin, car j'aime beaucoup l'idée de définir préalablement ce qui va être copié:

c.Copy Workbooks("Test.xls").Sheets("Feuil2").Range("H3")

J'aimerai savoir si il existe l'équivalent de ".Copy" qui copierait uniquement les valeurs. J'ai cherché sur le web mais je n'ai rien trouvé. J'ai essayé .Value et d'autre cobinaison mais rien ne passe...


Merci d'avance

Bonne soirée

Titine
 

Discussions similaires

Réponses
2
Affichages
175
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…