XL 2013 (RESOLU) copier colonne Impaire

chaelie2015

XLDnaute Accro
Bonjour Forum
Comment copier automatiquement (code vba) le contenu des colonnes impaires de la plage AO12:EJ62 vers la plage EM12:GJ62 sur la feuille active?
Merci
 
Solution
Ou "just for the fun", en un peu plus rapide :
VB:
Sub Copie2()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("EM12:GJ62").FormulaLocal = "=INDEX($A$1:$EJ$62;LIGNE();2*COLONNE()-245)"
Range("EM12:GJ62") = Range("EM12:GJ62").Value
Application.Calculation = xlCalculationAutomatic
End Sub
Le bouton Test teste les deux macros l'une après l'autre.
Les temps d'exécution des 2 macros sont en AM10 AM12.

Addon : Sur 300 essais, en fait statistiquement sur XL2007, la macro Copie2 est plus lente que la macro Copie. Il vaut mieux utiliser la première version. 😥

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Chaelie,
Un essai en PJ avec, si j'ai bien compris :
VB:
Sub Copie()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual   ' A mettre si formules dans les plages
Cdest = 143
For Col = 41 To 140 Step 2
    Range(Cells(12, Cdest), Cells(62, Cdest)) = Range(Cells(12, Col), Cells(62, Col)).Value
    Cdest = Cdest + 1
Next Col
Application.Calculation = xlCalculationAutomatic
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    114.3 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Ou "just for the fun", en un peu plus rapide :
VB:
Sub Copie2()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("EM12:GJ62").FormulaLocal = "=INDEX($A$1:$EJ$62;LIGNE();2*COLONNE()-245)"
Range("EM12:GJ62") = Range("EM12:GJ62").Value
Application.Calculation = xlCalculationAutomatic
End Sub
Le bouton Test teste les deux macros l'une après l'autre.
Les temps d'exécution des 2 macros sont en AM10 AM12.

Addon : Sur 300 essais, en fait statistiquement sur XL2007, la macro Copie2 est plus lente que la macro Copie. Il vaut mieux utiliser la première version. 😥
 

Pièces jointes

  • Classeur1 V2.xlsm
    116.4 KB · Affichages: 7
Dernière édition:

chaelie2015

XLDnaute Accro
Ou "just for the fun", en un peu plus rapide :
VB:
Sub Copie2()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("EM12:GJ62").FormulaLocal = "=INDEX($A$1:$EJ$62;LIGNE();2*COLONNE()-245)"
Range("EM12:GJ62") = Range("EM12:GJ62").Value
Application.Calculation = xlCalculationAutomatic
End Sub
Le bouton Test teste les deux macros l'une après l'autre.
Les temps d'exécution des 2 macros sont en AM10 AM12.

Addon : Sur 300 essais, en fait statistiquement sur XL2007, la macro Copie2 est plus lente que la macro Copie. Il vaut mieux utiliser la première version. 😥
Bonjour sylvanu
C'est excellent, je te remercie pour la réponse.
J'aimerais adapter ce code de la manière suivante :
si la cellule dans la zone jaune est vide, alors afficher un vide à la place de 0 dans la zone verte.
Si la cellule contient 0, alors afficher 0.
En d'autres termes, ne copier pas le vide, mais copier la valeur "0" si elle est présente. 😜
A+
 

Pièces jointes

  • CHARLIE COPIER COLLER TABLEAU.xlsm
    42 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour chaelir2015, sylvanu, le forum,
si la cellule dans la zone jaune est vide, alors afficher un vide à la place de 0 dans la zone verte.
Si la cellule contient 0, alors afficher 0.
Avec la macro Copie il n'y a rien à ajouter, elle le fait.

Avec Copie2 utilisez :
VB:
Range("EM12:GJ62").FormulaLocal = "=SI(INDEX($A$1:$EJ$62;LIGNE();2*COLONNE()-245)="""";"""";INDEX($A$1:$EJ$62;LIGNE();2*COLONNE()-245))"
A+
 

job75

XLDnaute Barbatruc
Pourquoi ne pas utiliser des tableaux VBA ?

C'est classique et de loin la solution la plus rapide :
VB:
Sub Copie3()
Dim tablo, ncol%, resu(), i&, j%
tablo = [AO12:EJ62]
ncol = UBound(tablo, 2) \ 2
ReDim resu(1 To UBound(tablo), 1 To ncol)
For i = 1 To UBound(resu)
    For j = 1 To ncol
        resu(i, j) = tablo(i, 2 * j - 1)
Next j, i
[EM12].Resize(UBound(resu), ncol) = resu 'restitution
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à @chaelie2015 :), @sylvanu :), @job75 :),
Une comparaison des temps d'exécution des quatre méthodes :
  1. @sylvanu copie
  2. @sylvanu copie2 (modifiée @job75 )
  3. @mapomme copie3
  4. @mapomme copie4 de tout yc formats (pour le fun)
nota : désolé @job75 j'avions pas rafraichi pour le tableau.

rem : quand on est sous la barre des 10 ms, on pinaille o_O à coups de tout petits riens...
 

Pièces jointes

  • chaelie2015- copie colonnes impaires- v1.xlsm
    125.1 KB · Affichages: 4
Dernière édition:

Discussions similaires

  • Résolu(e)
Microsoft 365 Tri et Import
Réponses
4
Affichages
179

Statistiques des forums

Discussions
312 229
Messages
2 086 424
Membres
103 206
dernier inscrit
diambote