Boucles imbriquées pour lire un tableau cellule par cellule

cs_archibald78 Messages postés 3 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 29 avril 2009 - 27 avril 2009 à 18:09
cs_archibald78 Messages postés 3 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 29 avril 2009 - 29 avril 2009 à 12:04
Bonjour,

J'ai un fichier "fichier1.xls" qui contient une feuille avec les données suivantes :

A1=matricule1; B1=vide; C1=date1; D1=point1; E1=point2; F1=point3; G1=point4; H1=point5; I1=point6
A2=matricule1; B2=vide; C2=date2; D2=point7; E2=point8; F2=point9; G2=point10; H2=point11; I2=point12
A3=matricule2; B3=vide; C3=date3; D3=point13; E3=point14; F3=point15; G3=point16; H3=point17; I3=point18
.......
Le fichier fait 1600 lignes.....

Et je dois produire une feuille excel qui créé une ligne pour chaque point(i) avec les données suivantes:

A1= fichier1.xls!A1; F1=fichier1.xls!C1; J1=fichier1.xls!D1
A2= fichier1.xls!A1; F2=fichier1.xls!C1; J2=fichier1.xls!E1
A3= fichier1.xls!A1; F3=fichier1.xls!C1; J3=fichier1.xls!F1
A4= fichier1.xls!A1; F4=fichier1.xls!C1; J4=fichier1.xls!G1
A5= fichier1.xls!A1; F5=fichier1.xls!C1; J5=fichier1.xls!H1
A6= fichier1.xls!A1; F6=fichier1.xls!C1; J6=fichier1.xls!I1
A7= fichier1.xls!A2; F7=fichier1.xls!C2; J7=fichier1.xls!D2
A8= fichier1.xls!A2; F8=fichier1.xls!C2; J8=fichier1.xls!E2
..........

et ainsi de suite

si vous pouviez me fournir un code VBA pour Excel 2003 pour réaliser cette fonction ce serait génial.

Merci d'avance

Archi

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 avril 2009 à 23:49
Salut

Regarde la fonction transpose qui permet de passer d'un classement horizontal à vertical (et surement l'inverse aussi)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_archibald78 Messages postés 3 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 29 avril 2009
28 avril 2009 à 17:06
Merci Jack

Je connais cette fonction mais elle est difficile à utiliser sur un grand nombre de ligne et surtout avec des colonnes intermédiaires qui ne nous servent pas dans le fichier cible.

Si tu avais un petit bout de code, je suis preneur. De plus j'ai plusieurs fichiers de ce type à créer avec des nombres de lignes différents, donc une macro VBA m'irai nickel.

Merci d'avance 

Archi
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
28 avril 2009 à 21:53
Salut
Peux-tu essayer le code (à adapter) ci-dessous ?
<hr size="2" width="100%" />Sub transposition()
   Dim lig1 As Integer  ' no de ligne de la feuille source
   Dim lig2 As Integer  ' no de ligne de la feuille de destination
   Dim col As Integer   ' pointeur colonnes D-I
   With WorkSheets("fDest")
       For lig1 = 1 To 1600

           For col = 4 To 9    ' colonnes D-I
                lig2 = lig2 + 1
               .Cells(lig2, 1).Value = WorkSheets("fSource").Cells(lig1, 1).Value

               .Cells(lig2, 6).Value = WorkSheets("fSource").Cells(lig1,3).Value                      
               .Cells(lig2,10).Value = WorkSheets("fSource").Cells(lig1, col).Value
           Next col
       Next lig1
   End With
End Sub
<hr size="2" width="100%" />Amicalement
0
cs_archibald78 Messages postés 3 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 29 avril 2009
29 avril 2009 à 12:04
Merci orohena

c'est nickel!

Archi
0
Rejoignez-nous