Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
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 à 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
205
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…