Amoncellement de Transfert en VBA

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

  • Asperule.zip
    19.7 KB · Affichages: 21
  • Asperule.zip
    19.7 KB · Affichages: 20
  • Asperule.zip
    19.7 KB · Affichages: 22
J

Jacky

Guest
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
 

Hellboy

XLDnaute Accro
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
 
A

Asperule

Guest
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

  • Asperule_20051229142828.zip
    19.8 KB · Affichages: 16

Hellboy

XLDnaute Accro
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
 

Discussions similaires

Réponses
12
Affichages
252
Réponses
7
Affichages
360

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 378
dernier inscrit
phdrouart