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

VBA optimiser code

  • Initiateur de la discussion Initiateur de la discussion narfazel
  • 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 !

N

narfazel

Guest
Bonjour,

A l'aide de différentes aides j'ai fait une macro pour copier/réorganiser/coller un tableau de valeurs en utilisant l’équivalent de la fonction "Transposer". Seulement j'ai beaucoup de lignes à faire et je pense qu'il est possible d'optimiser le code pour que cela aille plus vite... Pourriez-vous m'aidez?

Voici une des quatre macros que je dois utiliser. Je joins le fichier complet.

Sub trivent()

Dim i As Integer
Dim j As Integer

For i = 4 To 11
Sheets("Donnees").Select
Range(Cells(i, 2), Cells(i, 9)).Select
Selection.Copy
Sheets("Tri").Select
Cells(Rows.Count, 3).End(xlUp)(2).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next

End Sub


Merci d'avance
 

Pièces jointes

Re : VBA optimiser code

Essaie ce programme dans un module

Sub essai()
Application.ScreenUpdating = False
Sheets("tri").Range("A😀").ClearContents
Sheets("Donnees").Activate
ligne = 1
With Sheets("tri")
For i = 4 To 11
For j = 2 To 9
ligne = ligne + 1
.Range("A" & ligne) = Range("A" & i)
.Range("B" & ligne) = Cells(3, j)
Next j
Next i
ligne = 1
For i = 4 To 11
For j = 2 To 9
ligne = ligne + 1

.Range("C" & ligne) = Cells(i, j)
Next j
Next i

ligne = 1
For i = 4 To 11
For j = 10 To 17
ligne = ligne + 1

.Range("D" & ligne) = Cells(i, j)
Next j
Next i
End With


End Sub

lire : A suivi de 2 points suivi de D
 
Re : VBA optimiser code

Bonjour Narfazel, Chalet, bonjour le forum,

une autre poposition :
Code:
Sub Macro1()
Dim D As Object 'déclare la variable D (onglet Donnees)
Dim T As Object 'déclare la variable T (onglet Tri)
Dim I As Byte 'déclare la variable I
Dim J As Byte 'déclare la variable J

Set D = Sheets("Donnees") 'définit l'onglet D
Set T = Sheets("TRI") 'définit l'onglet T
For I = 4 To 11 'boucle 1 : des lignes 4 à 11
    D.Range(Cells(I, 2), Cells(I, 9)).Copy 'copie les cellules des colonnes B à I de la ligne I
    'colle les données dans la première ligne vide de la colonne 3 (=C) de l'onglet Tri
    T.Cells(Rows.Count, 3).End(xlUp)(2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
      False, Transpose:=True
    D.Range(Cells(I, 10), Cells(I, 17)).Copy 'copie les cellules des colonnes J à Q de la ligne I
    'colle les données dans la première ligne vide de la colonne 4 (=D) de l'onglet Tri
    T.Cells(Rows.Count, 4).End(xlUp)(2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True
    D.Range(Cells(3, 2), Cells(3, 9)).Copy 'copie les cellules des colonnes B à I de la ligne 3
    'colle les données dans la première ligne vide de la colonne 2 (=B) de l'onglet Tri
    T.Cells(Rows.Count, 2).End(xlUp)(2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True
    For J = 1 To 8 'boucle 2 : de 1 à 8 (= 8 fois)
        'copie la cellule ligne I, colonne 1 et la colle dans la première ligne vide de la colonne 1 (=A)
        D.Cells(I, 1).Copy T.Cells(Rows.Count, 1).End(xlUp)(2)
    Next J 'prichaine fois de la boucle 2
Next I 'prochaine colonne de la boucle 1
End Sub
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
792
Réponses
2
Affichages
401
Réponses
18
Affichages
598
Réponses
15
Affichages
793
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…