XL 2013 (RESOLU) copier colonne Impaire

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 !

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. 😥
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

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

Dernière édition:
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

Dernière édition:
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+
 
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
 
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

Dernière édition:
- 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

Discussions similaires

Réponses
3
Affichages
385
Réponses
3
Affichages
439
Retour