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

Question sur la methode "Useranged" code VBA ?

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 !

Soleil11

XLDnaute Occasionnel
Bonjour le forum,

Je copie des valeurs de la feuille 1 (temp) à ma feuille "WS" qui a 43'000 lignes avec 34 colonnes et la moitié de ces 34 colonnes ont des formules vers la droite. Mon problème c'est que mon code est très lent lorsque je le fais tourner, peut-être il y a une méthode plus performante que "Useranged" pour copier uniquement les valeurs.

Code:
Workbooks(Temp).Sheets(1).UsedRange.Copy
    ws.Range("B" & Ligne + 1).PasteSpecial xlPasteValues

Est-ce que ce code peut être améliorer ?

Merci de votre aide.

Soleil11😕
 
Re : Question sur la methode "Useranged" code VBA ?

Bonjour,

Essaye avec cette syntaxe :

Tablo = Workbooks(Temp).Sheets(1).UsedRange
ws.Range("B" & Ligne + 1).Resize(UBound(Tablo, 1), UBound(Tablo, 1)) = Tablo
 
Re : Question sur la methode "Useranged" code VBA ?

Rebonjour,

J'ai ajouter ci-dessous tout le code peut-être que cela peut aider, j'ai toujours un messager d'erreur "object defined error".

Code:
'Option Explicit
Sub Consolidation2()
Dim Temp As String
Dim Tablo As Variant
Dim Ligne As Long, Ligne2 As Long
Dim Lig As Long, ws As Worksheet

Dim v_path$
Dim v_tcode$
Dim v_wkbook$

'Dim col As Byte

' Select current WorkBook reference
v_wkbook$ = ActiveWorkbook.Name
MsgBox ("Upload Xls files into Output-Sheet '" & v_wkbook$ & "'")

' Select "Input-Screen" sheet to read main parameters
Worksheets("Input-Screen").Activate
v_path$ = Sheets("Input-Screen").Range("E6")
MsgBox ("From path: '" & v_path$ & "'")
v_tcode$ = Sheets("Input-Screen").Range("E8")
MsgBox ("and your criteria selection: '" & v_tcode$ & "'")

 Set ws = Worksheets("Data")
 Temp = Dir(v_path$ & "\*" & v_tcode & "*.xls")
' Temp = Dir(v_path$ & "*.xls")

    ws.Select
    Range(Selection, Cells(1)).Select
    Selection.AutoFilter
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.ClearContents
    
'Clean sheet sheet report
    

Application.DisplayAlerts = False

Do While Temp <> ""
 If Temp <> v_wkbook$ Then
    Workbooks.Open v_path$ & "\" & Temp
    Lig = Workbooks(Temp).Sheets(1).UsedRange.Rows.Count
    Ligne = ws.Range("A1048576").End(xlUp).Row
    ws.Cells(Ligne + 1, "A").Resize(Lig).Value = Temp
    Tablo = Workbooks(Temp).Sheets(1).UsedRange '.Copy
    'ws.Range("B" & Ligne + 1).PasteSpecial xlPasteValues
    ws.Range("B" & Ligne + 1).Resize(UBound(Tablo, 1), UBound(Tablo, 1)) = Tablo
Workbooks(Temp).Close
End If
Temp = Dir
Loop

Merci d'avance.

Soleil11😕
 
Re : Question sur la methode "Useranged" code VBA ?

Bonjour,

Désolé, j'ai été un peu trop rapide pour répondre :

Dans la déclaration des variables, il faut en premier déclarer la plage des cellules puis déclarer le tableau soit :

Dim Plage As Range, Tablo


La syntaxe de la macro devient :

Do While Temp <> ""
If Temp <> v_wkbook$ Then
Workbooks.Open v_path$ & "\" & Temp
Lig = Workbooks(Temp).Sheets(1).UsedRange.Rows.Count
Ligne = ws.Range("A1048576").End(xlUp).Row
ws.Cells(Ligne + 1, "A").Resize(Lig).Value = Temp
Set Plage = Workbooks(Temp).Sheets(1).UsedRange
Tablo = Plage
ws.Range("B" & Ligne + 1).Resize(UBound(Tablo, 1), UBound(Tablo, 2)) = Tablo
Workbooks(Temp).Close
End If
Temp = Dir
Loop
 
- 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
Microsoft 365 Code VBA
Réponses
7
Affichages
1 K
Réponses
7
Affichages
754
Réponses
7
Affichages
829
A
Réponses
4
Affichages
869
A
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…