Longueur logiciel visual Basics

Bonjour,

J'ai quelques petites connaissances en VBA et voulais l'appliquer de manière très simple, pour m'aider à quelques manipulations rébarbatives relatives à mon travail.
J'ai de nombreuses feuilles au sein d'un classeur EXCEL que je voulais regrouper en une seule. Le code fonctionne mais si je ne lance pas "pas-à-pas"" via F8, le logiciel bug tellement il y a d'onglets. Comment puis-je faire ? Cela vient-il de mon code?

Le voici :

Sub collage()
Dim feuille As Worksheet
Dim a As Long

Set feuille = Sheets(1)
feuille.Activate
feuille.Name = "Ecritures"

For i = 1 To Worksheets.Count
a = Range("A1048576").End(xlUp).Row
    If Sheets(i).Name <> "Ecritures" Then
        Sheets(i).Activate
        Sheets(i).Range("B9:Q45").Copy Destination:=feuille.Rows(a)
        feuille.Activate
    End If
Next
End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).

Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
Jordane45

1 réponse

  1. Modérateur
    Bonjour,

    Pour gagner du temps .. tu peux déjà désactiver l'affichage au debut de ton code
    Application.DisplayAlerts = False  
    


    Puis le réaciver à la fin
    Application.DisplayAlerts = True
    


    Il faudrait aussi savoir si tu veux récupérer uniquement les valeurs de tes cellules ... ou si tu veux aussi la mise en forme.
    Si ce ne sont QUE les valeurs qui t'interessent ... le COPIER/COLLER est à proscrire... (y compris les ACTIVATE sur les feuilles )
    A la place tu peux utiliser le .VALUE de l'objet RANGE...
    par exemple :
    range("A1").value = range("B1").value // met la valeur de B1 dans A1 )
    


    NB : Je pense qu'il y a aussi un petit souci sur la ligne
    a = Range("A1048576").End(xlUp).Row
    

    A changer par :
    a = feuille.Range("A1048576").End(xlUp).Row
    


    0