Copier un tableau VBA à partir d'une cellule dans la feuille Excel

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

FabsVD

XLDnaute Nouveau
Bonjour à tous,

Je suis un débutant en VBA et la je bloque depuis un bon moment sur une fonction, qui je pense vous semblera toute bête.

Je vous pose la situation :

J'ai réussi à faire un programme de copie et avec une opération sur les valeurs en utilisant des boucles. Mais apparemment ce procédé est beaucoup trop long.
En fouillant un peu sur internet, je vois que l'utilisation de tableau diminue grandement le temps de calcul.

Alors pour cibler mon problème j'ai préparé un fichier avec un programme VBA qui illustre ce que je veux faire.

Mais c'est toujours aussi long, même en passant par des tableaux. Je pense que le problème vient du fait que le programme écrit un à un les cellules depuis la boucle.

Je pense que le problème vient donc de la ligne " Cells(7 + cmpt2, 6) = Montab(cmpt) ".

Les valeurs dans les cellules F3 et G3 sont variable et a entré par l'utilisateur. Elles correspondent aux jalons (ligne de début et ligne de fin) que j'aimerai copier.
La copie commence de toute façon en F7, pour la colonne A.

Est-ce que quelqu'un pourrais me venir en aide ?

Merci beaucoup d'avance !

Fabs


Je suis sur Excel 2007 ...
 

Pièces jointes

Dernière édition:
Re : Copier un tableau VBA à partir d'une cellule dans la feuille Excel

Bonjour le Forum !

Personne n'a d'idée ?? :-(

Précision:
J'ai beaucoup de points à traité, c'est pour ça que c'est long, mais je n'ai pas de réelle différence d’exécution en passant par les tableaux ou les boucle (en VBA)
 
Re : Copier un tableau VBA à partir d'une cellule dans la feuille Excel

Bonjour FabsVD,
Une proposition :
VB:
Sub test_Efgé()
Dim Montab() 'Tableau VBA
Dim Debut As Double ' Chronomètre
Dim cmpt As Long 'As Long on ne sait jamais
Debut = Timer
Application.ScreenUpdating = False
' Effacement des données de F7 à la dernière cellule remplie en F
Range("F7:F" & Cells(7, 6).End(xlDown).Row).Clear
'Mettre toutes les données dans le tableau
Montab = Range(Cells(Cells(3, 6).Value, 1), Cells(Cells(3, 7).Value, 1)).Value
'on double et on arrondi les valeurs du tableau
For cmpt = 1 To UBound(Montab, 1)
    Montab(cmpt, 1) = Round(CLng(Montab(cmpt, 1)) * 2)
Next cmpt
' on colle le tableau (voir Resize dans l'aide)
Cells(7, 6).Resize(UBound(Montab, 1), 1) = Montab
Application.ScreenUpdating = True
' Durée de la macro en seconde(s)
MsgBox Timer - Debut
End Sub
Cordialement
 

Pièces jointes

- 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

Réponses
3
Affichages
793
Réponses
5
Affichages
525
Réponses
10
Affichages
674
Retour