Invertion d'un tableau

  • Initiateur de la discussion Initiateur de la discussion Omnislash74
  • Date de début Date de début

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 !

O

Omnislash74

Guest
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 🙄

D'avance, merci.
 

Pièces jointes

  • FS.XLS
    FS.XLS
    15.5 KB · Affichages: 53
  • FS.XLS
    FS.XLS
    15.5 KB · Affichages: 57
  • FS.XLS
    FS.XLS
    15.5 KB · Affichages: 57
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:
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

Dernière édition:
Re : Invertion d'un tableau

Hop hop hop, je suis de retour !

D'abord, bien le bonjour à tous 😀

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 !
 
Re : Invertion d'un tableau

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

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 🙄 qu'ai-je oublié ?
Merci.
 
Dernière modification par un modérateur:
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:
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+
 
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 😛
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Tableau
Réponses
5
Affichages
288
Réponses
7
Affichages
987
Retour