Lenteur "Coller" plusieurs cellules d'une même colonne

samimi94

XLDnaute Occasionnel
Bonsoir à tous,

Je viens vers vous car j'ai un souci que je ne m'explique pas !

Voici mon problème :

J'ai créé un modèle type avec une macro qui gènere un fichier .txt au final.
Avant cela, l'utilisateur doit faire des copier d'un "classeur 1" de cellules qui se trouvent dans une même colonne et cela pour les coller dans un "classeur2", et ce pour chaque colonne.

Le souci étant que lorsqu'il procède au collage de la première colonne cela va relativement vite, mais dès qu'il procède au collage de la seconde colonne tout bug !!!

Mon Pc n'a pas une configuration qui est censé ramé (Vista, processeur 2.66GHZ, 2 Go de ram, excel 2003).

Pensez-vous qu'il s'agit du presse-papier qui me plante tout ou avez-vous des idées à m'apporter, SVP ?

D'avance, merci et bonne soirée à tous.
 

samimi94

XLDnaute Occasionnel
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re,

Non il selectionne toutes les cellules à l'aide de la souris, car je ne veux pas qu'il supprime mes intitulés.
Mais si ca peut résoudre le problème je supprimerais cette ligne.
 

samimi94

XLDnaute Occasionnel
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re,

Non, ils sélectionnent les cellules à l'aide de la souris pour ne pas supprimer les intitulés, mais si ca peut résoudre le problème alors on peut supprimer cette ligne d'intitulés.
 

Cousinhub

XLDnaute Barbatruc
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Non, pas de problème

essaie avec :

If Target.Column = 2 And Target.Count > 1 Then
For Each cel In Range("B2:B" & [B65000].End(xlUp).Row)
Cells(cel.Row, 4).Value = IIf(cel <> "", "P", "")
Cells(cel.Row, 5).Value = IIf(cel <> "", "A", "")
Next cel
End If

Peut-être?
 

samimi94

XLDnaute Occasionnel
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re BHBH,

C'est pareil.

Une petite question, est-ce que tu penses que cela vient du faite que la condition copie des infos dans deux colonnes en même temps ?

Est ce que si je dis de mettre un P en colonne D si B est plein et mettre un A en colonne E si C est plein cela peut réduire le temps de traitement ?
 

samimi94

XLDnaute Occasionnel
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re,

Je viens de faire ce que je te disais dans le post précédent, ca semble moins long, mais, le traitement prend tout de même quelques minutes, ce qui en plus sous-entends que je dois refaire cette manip avec le même temps de traitement pour la colonne C
 

Cousinhub

XLDnaute Barbatruc
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re-,
essaie avec ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR="Red"]Application.EnableEvents = False[/COLOR]
If Target.Column = 2 And Target.Count = 1 Then
Cells(Target.Row, 4).Value = IIf(Target <> "", "P", "")
Cells(Target.Row, 5).Value = IIf(Target <> "", "A", "")
End If
If Target.Column = 2 And Target.Count > 1 Then
For Each cel In Range("B2:B" & [B65000].End(xlUp).Row)
Cells(cel.Row, 4).Value = IIf(cel <> "", "P", "")
Cells(cel.Row, 5).Value = IIf(cel <> "", "A", "")
Next cel
End If
[COLOR="Red"]Application.EnableEvents = True[/COLOR]
End Sub

1,6 seconde pour 5000 lignes
 
Dernière édition:

samimi94

XLDnaute Occasionnel
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re,

Il y a du mieux, pour 1762 enregistrements j'ai tout de même mis 3 minutes de traitement.

Dans ma macro j'avais un Private Sub Workbook_Open() que j'ai viré en pensant que ca pouvait aussi être la cause à mon problème mais à priori ca n'a pas changé grand chose.

Quoiqu'il en soit c'est sûr que c'est déjà plus rapide. mais je ne comprends pas pourquoi je n'obtiens pas le même résultat que toi !!!
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re SAMIMI
J'ai vu un autre cas d'une appli que j'ai reçu , il fallait recopier un tableau d'environ 1000 cellules .....avec des formules "SI" et cela prenait environ 3min ?? car il y avait des conditions sur tout , et puis à savoir un " recalcul si change" ( pour résumer), j'avais jamais vu ça!!!
Comme dit BHBH il faut connaitre le contexte de base comme la longueur de la colonne ..etc
Aussi comme j'ai vu ( sauf le copier/coller ??)
le "IF" + boucle à 65000 si cela est encore imbriqué dans une boucle principale ....ca commence à faire beaucoup !! .... je me demande si cela ne vient pas de là ??
Il faudrait déjà tenter de réduire le 65000 exemple : en cherchant la dernière ligne
 

samimi94

XLDnaute Occasionnel
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re Hervé,

Pour tout vous dire :), il y a 18 colonnes à renseigner, je ne sais jamais à l'avance, combien de lignes vont être renseignées par les utilisateurs.
Quoiqu'il en soit ces colonnes sont limitées en terme de caractère, ex 30 pour la colonne B maxi, 30 pour la colonne C maxi, 30 pour la colonne D ... en somme elles sont presque toutes limitées à 30 caractères.

Voilou.
 

Cousinhub

XLDnaute Barbatruc
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

RE-,
tu peux également rajouter :

Code:
Application.Calculation = xlCalculationManual

en début de code, et :

Code:
Application.Calculation =xlCalculationAutomatic

en fin de code
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Justement si tu sais pas le Nbre de lignes, met dans ton code (exemple):

derlig = .Range("a65000").End(xlUp).Row ' cherche la dernière ligne en A

Tu choisis une colonne adéquat qui te va ( ou plutôt pour le code)

je ne connais pas ton fichier , mais je ferais un copier/coller basique avec des variables pour selectionner la plage comme Range("B1:B" & derlig).Select puis le .copy et enfin .paste pour démarrer tout en gardant tes conditions s'il y en a

Au fait : 30 carac. par cellule c'est deja pas mal !!
 

samimi94

XLDnaute Occasionnel
Re : Lenteur "Coller" plusieurs cellules d'une même colonne

Re BHBH,

Ca c'est parfait :D tu m'as vraiment super bien aider sur ce fichier, du début à la fin.

Ca prend même moins d'1,6 sec :rolleyes:

Merci beaucoup pour ton aide précieuse.
Hervé, merci également pour ta contribution.

Je vous souhaite une tres bonne soirée.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22