Invertion d'un tableau

Omnislash74

XLDnaute Nouveau
Bonjour, j'essai une manipulation sans trouver la solution et j'en appel donc a votre aide. Je m'explique :

Suite à un export, je me retrouve avec le fichier en pièce jointe FS.xls

Dans la colonne A, le trouve le numéro d’expédition, dans les autres colonnes, les numéros des fiches suiveuses attachées à cette expédition. Ce que je cherche à faire c’est inversé automatiquement ce tableau pour avoir dans une seconde feuille dans une première colonne chaque fiches suiveuses et dans une seconde le numéro d’expédition correspondant. Je pense que c’est faisable sans trop de difficulté, mais c’est encore trop dur pour moi :rolleyes:

D'avance, merci.
 

Pièces jointes

  • FS.XLS
    15.5 KB · Affichages: 53
  • FS.XLS
    15.5 KB · Affichages: 57
  • FS.XLS
    15.5 KB · Affichages: 57

JCGL

XLDnaute Barbatruc
Re : Invertion d'un tableau

Bonjour à tous,

Si j'ai bien compris...

Ajoute une feuille à ton classeur.
Sélectionne les valeurs de la feuille "FS"
Clique Droit /Copier
Mets toi en A1 de ta deuxième feuille
Clique Droit / Collage Spécial / TRANSPOSER



A+
 
Dernière édition:

RENAUDER

Nous a quitté
Repose en paix
Re : Invertion d'un tableau

Bonjour,
Je n'ai pas compris la même chose que JCGL, j'ai cru lire que tu voulais tout mettre dans 2 colonnes, une colonne avec toutes les FS et en vis à vis le N° d'expédition.
Comme ça tu auras les deux solutions.

le code :
Code:
Sub Exporte()
    Dim Tableau()
    Application.ScreenUpdating = False
    Sheets("FS").Activate
    Range([A2], [E65536].End(xlUp)).Select
    A = Selection.Value
    ReDim Tableau(1 To UBound(A, 1), 1 To 5)
    For i = 1 To UBound(A, 1)
        Tableau(i, 1) = A(i, 1)
        Tableau(i, 2) = A(i, 2)
        Tableau(i, 3) = A(i, 3)
        Tableau(i, 4) = A(i, 4)
        Tableau(i, 5) = A(i, 5)
    Next i
    Application.Goto Reference:=Range("A1"), scroll:=True
    Sheets.Add
    For j = 1 To UBound(A, 1)
        Cells(j, 1).Value = Tableau(j, 2)
        Cells(j, 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + UBound(A, 1), 1).Value = Tableau(j, 3)
        Cells(j + UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + 2 * UBound(A, 1), 1).Value = Tableau(j, 4)
        Cells(j + 2 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + 3 * UBound(A, 1), 1).Value = Tableau(j, 5)
        Cells(j + 3 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    Range("A1").CurrentRegion.Select
    Selection.NumberFormat = "General"
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "TS_FS*Z"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "RE_CODE"
    Range("A1:B1").Select
    With Selection
        .HorizontalAlignment = xlCenter
    End With
    Application.Goto Reference:=Range("A1"), scroll:=True
End Sub
 

Pièces jointes

  • FS.XLS
    36 KB · Affichages: 64
  • FS.XLS
    36 KB · Affichages: 65
  • FS.XLS
    36 KB · Affichages: 64
Dernière édition:

Omnislash74

XLDnaute Nouveau
Re : Invertion d'un tableau

Hop hop hop, je suis de retour !

D'abord, bien le bonjour à tous :D

Ensuite, j'ai ressorti ce fameux fichier de tri que RENAUDER m'avait concocter et je l'ai légèrement modifier pour qu'au lieu que la macro créé une nouvelle feuille à chaque fois, elle mette mon inversion dans une feuille fixe appelé FS_import.

Ce que je cherche à faire et que je n'arrive pas c'est que l'inversion puisse se faire sur plus de 6 colonnes (il peut avoir un maxi de 60 fiches suiveuses attachées à un bon de livraison (par ligne Excel en sorte)) et que l'inversion se fasse également sur plusieurs ligne (je ne sais pas le nombre exact encore)

Je n'arrive pas à modifier la zone d'inversion malheureusement...

Si quelqu'un peut donc me donner un coup de main, je lui en serai fortement reconnaissant !

D'avance, merci !
 

Omnislash74

XLDnaute Nouveau
Re : Invertion d'un tableau

Bon, la vous allez dire que je suis une buse... et je ne vous donne pas totalement tord :D

Après analyse du code, je tente de modifier comme JCGL l'a fait soit :

Code:
ReDim Tableau(1 To UBound(A, 1), 1 To 9)
    For i = 1 To UBound(A, 1)
        Tableau(i, 1) = A(i, 1)
        Tableau(i, 2) = A(i, 2)
        Tableau(i, 3) = A(i, 3)
        Tableau(i, 4) = A(i, 4)
        Tableau(i, 5) = A(i, 5)
        Tableau(i, 6) = A(i, 6)
        Tableau(i, 7) = A(i, 7)
        [COLOR="Red"]Tableau(i, 8) = A(i, 8)
        Tableau(i, 9) = A(i, 9)[/COLOR]

et

Code:
For j = 1 To UBound(A, 1)
        Cells(j, 1).Value = Tableau(j, 2)
        Cells(j, 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + UBound(A, 1), 1).Value = Tableau(j, 3)
        Cells(j + UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + 2 * UBound(A, 1), 1).Value = Tableau(j, 4)
        Cells(j + 2 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + 3 * UBound(A, 1), 1).Value = Tableau(j, 5)
        Cells(j + 3 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + 4 * UBound(A, 1), 1).Value = Tableau(j, 6)
        Cells(j + 4 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + 5 * UBound(A, 1), 1).Value = Tableau(j, 7)
        Cells(j + 5 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    [COLOR="red"]For j = 1 To UBound(A, 1)
        Cells(j + 6 * UBound(A, 1), 1).Value = Tableau(j, 8)
        Cells(j + 6 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j
    For j = 1 To UBound(A, 1)
        Cells(j + 7 * UBound(A, 1), 1).Value = Tableau(j, 9)
        Cells(j + 7 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j[/COLOR]

J'en deduis dont que je vais pouvoir continuer sur une colonne supplémentaire en rajoutant :

Code:
ReDim Tableau(1 To UBound(A, 1), 1 To 10)

Tableau(i, 10) = A(i, 10)

For j = 1 To UBound(A, 1)
        Cells(j + 8 * UBound(A, 1), 1).Value = Tableau(j, 10)
        Cells(j + 8 * UBound(A, 1), 2).Value = Tableau(j, 1)
    Next j

Et ben non :rolleyes: qu'ai-je oublié ?
Merci.
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Invertion d'un tableau

Bonjour à tous,

As-tu pensé à redimmensionner le Tableau :

Code:
ReDim Tableau(1 To UBound(A, 1), 1 To 10)

A+

Edition : Ben oui tu l'a fait, je regarde tout à l'heure
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Invertion d'un tableau

Re,

As-tu pensé à changer la plage :

Code:
Dim Tableau()
    Application.ScreenUpdating = False
    Sheets("FS").Activate
    Range([A2], [J65536].End(xlUp)).Select

pour une colonne de code et neuf de FS donc dix colonnes soit A à J

A+
 

Omnislash74

XLDnaute Nouveau
Re : Invertion d'un tableau

Oui ! J'étais trop focalisé a chercher du code contenant des chiffres, je n'ai pas penser aux lettres !

Bon, j'ose encore une dernière question...

Tout marche parfaitement si j'ai un tableau complet, mais ça grince si je me retrouve avec une ligne ou à un RE_CODE je n'ai que par exemple 3 TS_FSZ au lieu des 10 déclarées pour le tableau. Dans ce cas, la macro ne va pas plus loin et arrête le traitement à ce point.

C'est promis, c'est la dernière ! En tout cas, merci à vous pour cette belle aiguille enlevée de mon pied :p
 

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 699
Membres
105 511
dernier inscrit
karimdauphins