Amoncellement de Transfert en VBA

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

A

Asperule

Guest
Bonsoir à toutes, bonsoir à tous!

J'ai un gros paquet de données à transférer en VBA à l'aide d'une Userform.
Toute la formule en VBA fonctionne à merveille sauf qu'arriver aux lignes de transfert, l'ordinateur se met brusquement à ralentir pendant tous le transfert des données:

.Cells(6, 5) = Client
.Cells(6, 18) = Client
.Cells(6, 30) = Client
.Cells(6, 42) = Client
.Cells(Ligne, 4) = Range('D3')
.Cells(Ligne, 17) = Range('D3'
.Cells(Ligne, 28) = Range('D3')
.Cells(Ligne, 40) = Range('D3')
.Cells(Ligne, 5) = Range('E3')
.Cells(Ligne, 18) = Range('E3')
.Cells(Ligne, 29) = Range('E3')
.Cells(Ligne, 41) = Range('E3')
.Cells(Ligne, 6) = Range('F3')
.Cells(Ligne, 19) = Range('F3')
.Cells(Ligne, 30) = Range('F3')
.Cells(Ligne, 42) = Range('F3')

Est ce normal? ou y aurrai-t-il une façon plus simple de déterminer tous ce transfert, pour accelérer la cadence?

Merci d'avance,
Salutation,
Asperule.

P.S. Pour voir si le transfert fonctionne bien en dehors de la situation où il se trouve, je l'ai placé dans un fichier à part, et là tous fonctionne à merveille.
est-ce peut que l'amplacement originel est trop lourd, (en effet il se situe dans un fichier où se trouve un gestionnaire de liste assez conséquente répendu sur une quinzaine de feuille sur le fichier même)
Je vous fait part du fichier joint. [file name=Asperule.zip size=20179]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Asperule.zip[/file]
 

Pièces jointes

Bonsoir,

J'ai lu ton code et ai constaté que tu fais une grosse erreur de façon répétitive

en effet pour obtenir le contenu d'une cellule il faut écrire par exemple
Range('B3').Value et non simplement Range('B3') comme tu l'as fait
Donc corrige déjà celà et ensuite tu verras si ça fonctionne, sinon nous serons toujours là

Bonne soirée
 
Bonsoir Asperule, Jacky

J'ai un gros paquet de données à transférer en VBA à l'aide d'une Userform.
Toute la formule en VBA fonctionne à merveille sauf qu'arriver aux lignes de transfert, l'ordinateur
se met brusquement à ralentir pendant tous le transfert des données:

C'est difficile a dire, puisque tu parle de Userform qui ne sont pas inclus dans ton fichier. Voici peut être une amélioration



                  Application.ScreenUpdating = False
                       
With Sheets('Commande')
                            Union(.Cells(6, 5), .Cells(6, 18), .Cells(6, 30), .Cells(6, 42)) = Client
                            Union(.Cells(Ligne, 4), .Cells(Ligne, 17), .Cells(Ligne, 28), .Cells(Ligne, 40)) = Range('B3')
                            Union(.Cells(Ligne, 5), .Cells(Ligne, 18), .Cells(Ligne, 29), .Cells(Ligne, 41)) = Range('C3')
                            Union(.Cells(Ligne, 6), .Cells(Ligne, 19), .Cells(Ligne, 30), .Cells(Ligne, 42)) = Range('D3')
                       
End With
                  Application.ScreenUpdating =
True

Message édité par: Hellboy, à: 29/12/2005 00:06
 
Bonjour Helboy, Bonjour Jacky, Bonjour à toutes, Bonjour à tous!

Tout d'abord Merci à tous pour votre aide.

Merci Jacky, ta solution permet une fluidité dans l'execution de la tache.

Merci aussi Helboy, ta solution à l'air plus adéquate, mais je n'arrive pas à la faire fonctionner sur le fichier, en effet, elle devient rouge sur l'éditeur VBA, et je n'arrive pas à trouver l'erreur.

Alors je l'envoie en fichier joint, si quelqu'un aurrai l'amabilité de la corriger ou de trouver l'erreur.

Merci à tous!
À bientôt,
Amicalement,
Asperule. [file name=Asperule_20051229142828.zip size=20268]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Asperule_20051229142828.zip[/file]
 

Pièces jointes

Bonjour a tous

J'ai fais une petite erreur, j'avais oublié le point devant la commande Union. Aussi, le copier, coller, je ne vois pas pourquoi il serait nécessaire ???


                  Application.ScreenUpdating = False
                       
With Sheets('Commande')
                            .Union(.Cells(6, 5), .Cells(6, 18), .Cells(6, 30), .Cells(6, 42)) = Client
                            .Union(.Cells(Ligne, 4), .Cells(Ligne, 17), .Cells(Ligne, 28), .Cells(Ligne, 40)) = Range('B3')
                          .Union(.Cells(Ligne, 5), .Cells(Ligne, 18), .Cells(Ligne, 29), .Cells(Ligne, 41)) = Range('C3')
                          .Union(.Cells(Ligne, 6), .Cells(Ligne, 19), .Cells(Ligne, 30), .Cells(Ligne, 42)) = Range('D3')
                       
End With
                  Application.ScreenUpdating =
True
 
- 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
12
Affichages
552
Réponses
7
Affichages
797
Retour