Inverser des colonnes (macro excel)

Résolu/Fermé
djebenz Messages postés 14 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 17 novembre 2011 - 27 mai 2010 à 12:29
djebenz Messages postés 14 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 17 novembre 2011 - 28 mai 2010 à 09:14
Bonjour tout le monde,

j'ai créé un fichier excel qui possède un certains nombres de formules sur une feuille (que j'appellerai feuille1 ).

Pour obtenir uniquement les valeurs de mes tableaux j'ai mis en place une petite macro qui copie les données dans une autre feuille (feuille2).

C'est là que j'ai un petit problème.

Mon tableau possède 6 colonnes allant de pair mais elles ne sont malheureusement pas dans le bonne ordre.

Pour être plus clair voici mon tableau d'origine :

A B C D E F

1 2007 107,3 2008 121,8 2009 2,3
2 2007 4,359 2008 3,804 2009 8,5
3 2007 1,636 2008 2,149 2009 0,2
4 2007 0,458 2008 2009


On voit que les colonnes A,C,E correspondent aux années et les colonnes B,D,F respectivement à leurs valeurs.


J'aimerai que dans ma feuille, sans les formules (feuille2), le tableau parte de 2009 pour arriver à 2007.
La tableau aurait donc les colonnes dans cet ordre : EF, CD, AB.

(j'espère que je suis assez clair. :-8)

Je pourrais très bien faire des copy/paste avec une macro pour chaque colonne entre la feuille1 vers la feuille2 mais je ne trouve vraiment pas ça élégant.

Du coup je voudrais :
1)copier d'un coup le tableau "A4:F4" dans la feuille2 (pour ensuite n'avoir qu'à travailler à partir de cette dernière)
2)puis enregistrer les valeurs A1:B4.
3)Copier/Coller la plage "E1:F4" en A1
4)et enfin coller les valeurs que "A4:F4", que j'avais enregistré plutôt, en E1.

Mon problème réside dans l'étape 2) et4) car je ne sais pas comment enregistrer des valeurs que je pourrais coller après avoir fait entre temps d'autres copier/coller.


Je possède des bases correctes en VBA mais je suis souvent bloqué par ce genre de petite chose que je contourne par des lignes et des lignes de code.


Merci beaucoup en tout cas pour votre aide.

Bonne journée.


A voir également:

2 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
27 mai 2010 à 13:43
Bonjour,
Je ne pense pas qu'il est approprier d'employer une copie de transition...
Sub Reverse()
Dim i As Integer, DerLig As Long
    With Sheets("Feuil1")
        DerLig = .Cells.Row
        For i = 1 To 5 Step 2
            .Range(.Cells(1, i), .Cells(DerLig, i + 1)).Copy
            Sheets("Feuil2").Cells(1, 6 - i).PasteSpecial xlValues
        Next i
    End With
End Sub

A+
4
djebenz Messages postés 14 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 17 novembre 2011
28 mai 2010 à 09:14
Merci pour ta réponse.

J'ai essayé ton code qui est très bien.
Juste un petit problème avec le "DerLig" qui ne fonctionne pas (j'ai du mal à le comprendre son système même si j'ai compris qu'il aurait du fonctionné comme un .end(xldown). Du coup je n'ai pas pu le corrigé).

En effet, quand j'exécute la macro, il y a uniquement la première ligne qui se copie.

Par conséquent j'ai fixé la dernière ligne :

Sub Reverse()
Dim i As Integer, DerLig As Long
With Sheets("Feuil1")
For i = 1 To 5 Step 2
.Range(.Cells(1, i), .Cells(4, i + 1)).Copy
Sheets("Feuil2").Cells(1, 6 - i).PasteSpecial xlValues
Next i
End With
End Sub


Désormais la totalité du tableau est collé dans le bon ordre. :-)

Salut.
0