|
|
|
|
Klendos, le mercredi 31 août 2005 à 14:46:04;-)
Fais voir ta macro.... ;-) Wild and Free
|
;-)
Houlà !! Que de lignes ! ;-) Pour limiter les lignes, pense aux boucles FOR, pour éviter les "Activate", pense aux variables objets... ;-) Wild and Free |
Voici la macro que j'ai faite :
Sub transpose() nbcol = 3 ' nombre de couples de données à lire ope/tps nbproduit = 4 ' nombre de produits celluledepart = "C19" ' cellule de départ du tableau à remplir cellulealire = "A2" ' cellule de départ des données à parcourir For prod = 0 To nbproduit For i = 0 To nbcol - 1 Range(celluledepart).Offset(i + (prod * nbcol), 0).Value = Range(cellulealire).Offset(0 + prod, 0).Value Range(celluledepart).Offset(i + (prod * nbcol), 1).Value = 10 + 10 * i Range(celluledepart).Offset(i + (prod * nbcol), 2).Value = Range(cellulealire).Offset(0 + prod, 2 + (5 * i)) Range(celluledepart).Offset(i + (prod * nbcol), 3).Value = Range(cellulealire).Offset(0 + prod, 4 + (5 * i)) Next i Next prod End Sub Mais je n'arrive à faire pointer cellualire et celluledepart dans 2 feuilles différentes. Merci pour votre aide.
|
Voici au final ma macro:
Sub transpose() nbcol = 12 ' nombre de couples de données à lire ope/tps nbproduit = 18 ' nombre de produits nomclasseur = "DUBILAODB1.xls" ' nom du classeur où se trouve les données nomfeuille = "Feuil1" ' nom de la feuille celluledepart = "C19" ' cellule de départ du tableau à remplir cellulealire = "A2" ' cellule de départ des données à parcourir For prod = 0 To nbproduit For i = 0 To nbcol - 1 Range(celluledepart).Offset(i + (prod * nbcol), 0).Value = Workbooks(nomclasseur).Worksheets(nomfeuille).Range(cellulealire).Offset(0 + prod, 0).Value Range(celluledepart).Offset(i + (prod * nbcol), 1).Value = 10 + 10 * i Range(celluledepart).Offset(i + (prod * nbcol), 2).Value = Workbooks(nomclasseur).Worksheets(nomfeuille).Range(cellulealire).Offset(0 + prod, 2 + (5 * i)) Range(celluledepart).Offset(i + (prod * nbcol), 3).Value = Workbooks(nomclasseur).Worksheets(nomfeuille).Range(cellulealire).Offset(0 + prod, 4 + (5 * i)) Next i Next prod End Sub Merci à tous pour votre aide.
|
Bonsoir,
si tu as besoin de résultat et ce n'est pas la méthode qui compte, il y a d'autres façons à le faire. Par exemple avec un script Perl. Enregistrer sous format txt (séparateur tabulation), un petit script, ensuite ouverture de fichier txt avec excel et voilà. Script #! /usr/bin/perl use warnings; use strict; my %txt; my $i = 0; while(<DATA>){ my ($cle,$val)=split /t/,$_,2; $txt{$cle} = [ /w+td+/g ]; } for (keys %txt){ for my $l (@{$txt{$_}}){ $i += 10; print "$_t$it$ln"; } $i=0; } # après END sont les colonnes de ton classeur # sauvegardé en format txt, séparateur tabulation # execution : script > res_excel.txt # ensuite ouvrir fichier txt avec excel __END__ xxx FRA 10 USI 22 ABC 50 FRA 10 USI 22 ABC 50 FRA 10 USI 22 ABC 50 FRA 10 USI 22 ABC 50 YYY TOUR 10 ZAY 22 MAC 50 LEN 10 TOC 22 BIL 50 DOR 10 LUC 22 MIN 50 TOR 10 LES 22 MOC 50 Et le résultat (donc un fichier txt qui ouvert avec excel donne ce que tu veux obtenir) [lamitest@localhost corbeille]$ perl ccm_excel.pl > ccm_excel_res.txt [lamitest@localhost corbeille]$ cat ccm_excel_res.txt xxx 10 FRA 10 xxx 20 USI 22 xxx 30 ABC 50 xxx 40 FRA 10 xxx 50 USI 22 xxx 60 ABC 50 xxx 70 FRA 10 xxx 80 USI 22 xxx 90 ABC 50 xxx 100 FRA 10 xxx 110 USI 22 xxx 120 ABC 50 YYY 10 TOUR 10 YYY 20 ZAY 22 YYY 30 MAC 50 YYY 40 LEN 10 YYY 50 TOC 22 YYY 60 BIL 50 YYY 70 DOR 10 YYY 80 LUC 22 YYY 90 MIN 50 YYY 100 TOR 10 YYY 110 LES 22 YYY 120 MOC 50 [lamitest@localhost corbeille lami20j
|
Coucou,
En regardant l'aide de excel : "Transposer des lignes en colonnes ou des colonnes en lignes" Pour que les données de la première ligne de la zone de copie s'affichent dans la colonne de gauche de la zone de collage, et que les données de la colonne de gauche s'affichent sur la première ligne, procédez comme suit : Sélectionnez les cellules dont vous voulez inverser l'orientation. Cliquez sur Copier . Sélectionnez la cellule supérieure gauche de la zone de collage. Cette dernière doit être située à l'extérieur de la zone de copie. Cliquez sur la flèche à droite du bouton Coller , puis cliquez sur Transposer. Bon courage. kéké, Administrateur de Magdales. |
Bonjour,
Je n'aurai qu'un mot : MERCI keke !!!! :D A chaque fois je rame pour retrouver la manière de faire, et là tout est si simple et limpide :))) MERCI BEAUCOUP, ça va juste me simplifier énormément la vie. Bravo pour avoir trouvé "transposé" je n'y avais jamais pensé. Dungan |
Bonjour,
Peux-ton utiliser la fonction transpose() pour ce genre d'opération ? |