tranposer un tableau vertical en horizontal avec addition !?

Ayral10

XLDnaute Junior
Bonjour
afin de poursuivre la création et l'apprentissage de tableau sous excel2003 , je cherche la transposition d'un tableau vertical, fractionné en tableau de plusieurs lignes , et addition des valeurs de 2 colonnes en une seule ligne (4, 7 et 10. A noter qu'il y a déjà une mfc dans 2 colonnes qui doivent aussi transposées . Je n'ai jamais fait ce genre de transformation , je n'en connais que le nom !

Précision : les tableaux vertical et horizontal existent déjà , en deux fichiers différends, ils comptent dans les 10.000 cellules contenant des valeurs allant de rien à 50. Donc il me faut copier -coller la formule me permettant cette transposition. S'il s'agit d'une vba , je suis néophite, donc bonne explication à donner !! faut bien débuter !!

Merci d'avance à toute aide !
 

Pièces jointes

  • transposition vert-horiz addition.xls
    16.5 KB · Affichages: 54

job75

XLDnaute Barbatruc
Re : tranposer un tableau vertical en horizontal avec addition !?

Bonjour Ayral10,

Avec 10000 cellules à traiter, le VBA est la meilleure solution.

La macro dans Module1 (Alt+F11) :

Code:
Sub Transposer()
Dim t, ub&, h&, tp(), i&, j&, n, lig, col
Sheets("vertical").Activate
t = Range("A2:D" & Range("D" & Rows.Count).End(xlUp).Row)
ub = UBound(t)
h = 3 * Application.CountA(Application.Index(t, 0, 1)) - 1
ReDim tp(h, 0) 'base 0
For i = 1 To ub
  If t(i, 1) <> "" Then
    tp(lig, 0) = t(i, 1)
    j = i
    While j = i Or t(j, 1) = ""
      n = j - i + 1
      If n > col Then col = n
        ReDim Preserve tp(h, col)
        tp(lig, n) = t(j, 4)
        tp(lig + 1, n) = IIf(t(j, 2) & t(j, 3) = "", "", t(j, 2) + t(j, 3))
        If j = ub Then GoTo 1
        j = j + 1
    Wend
    i = j - 1
    lig = lig + 3
  End If
Next
'---restitution et bordures---
1 With Sheets("horizontal") 'feuille à adapter
  .Cells.ClearContents
  .[B3].Resize(h + 1, col + 1) = tp
  .Cells.Borders.LineStyle = xlNone
  With .Cells.SpecialCells(xlCellTypeConstants, 1)
    Union(.Cells, .Offset(1)).Borders.Weight = xlThin
  End With
  .Activate
End With
End Sub
Elle est rapide car elle utilise des tableaux VBA.

Difficile de l'expliquer, tâchez d'avancer vous-même pas à pas en utilisant l'Aide VBA.

Voyez aussi les 2 MFC dans la feuille de restitution.

Fichier joint.

A+
 

Pièces jointes

  • transposition vert-horiz addition(1).xls
    51 KB · Affichages: 46

job75

XLDnaute Barbatruc
Re : tranposer un tableau vertical en horizontal avec addition !?

Re,

Il ne me paraît pas utile de mettre des bordures sur la 3ème ligne (vide) de chaque tableau restitué.

Par ailleurs avec une boucle Do/Loop la macro est mieux :

Code:
Sub Transposer()
Dim t, ub&, ub1&, L&, tp(), i&, n%, ub2%
Sheets("vertical").Activate
t = Range("A2:D" & Range("D" & Rows.Count).End(xlUp).Row)
ub = UBound(t)
ub1 = 3 * Application.CountA(Application.Index(t, 0, 1)) - 1
L = -3 'pour commencer à 0
ReDim tp(ub1, 0) 'base 0
Do
  i = i + 1
  If t(i, 1) <> "" Then
    L = L + 3
    tp(L, 0) = t(i, 1)
    n = 0
  End If
  n = n + 1
  If n > ub2 Then ub2 = n: ReDim Preserve tp(ub1, ub2)
  tp(L, n) = t(i, 4)
  tp(L + 1, n) = IIf(t(i, 2) & t(i, 3) = "", "", t(i, 2) + t(i, 3))
Loop While i < ub
'---restitution---
With Sheets("horizontal") 'feuille à adapter
  .Cells.ClearContents 'RAZ
  .[B3].Resize(ub1, ub2 + 1) = tp
  .Activate
End With
End Sub
Fichier (2).

Couleurs et bordures sont appliquées uniquement par les 2 MFC.

A+
 

Pièces jointes

  • transposition vert-horiz addition(2).xls
    51 KB · Affichages: 40
Dernière édition:

job75

XLDnaute Barbatruc
Re : tranposer un tableau vertical en horizontal avec addition !?

Bonjour Ayral10, le forum,

Au post #1 vous parlez de 2 fichiers différents, alors voyez les fichiers joints.

J'en ai profité pour simplifier les formules de la 2ème MFC.

Notez l'ajustement automatique de la largeur des colonnes à partir de la colonne C.

Edit : pour tester téléchargez les 2 fichiers dans le même dossier (le bureau).

A+
 

Pièces jointes

  • Source(1).xls
    36.5 KB · Affichages: 35
  • Destination.xls
    24 KB · Affichages: 39
  • Source(1).xls
    36.5 KB · Affichages: 41
  • Destination.xls
    24 KB · Affichages: 47
  • Source(1).xls
    36.5 KB · Affichages: 45
  • Destination.xls
    24 KB · Affichages: 44
Dernière édition:

Ayral10

XLDnaute Junior
Re : tranposer un tableau vertical en horizontal avec addition !?

Merci de votre dévouement pour mon casse tête du moment ! j'apprécie grandement votre dévouement et votre savoir que j'envie !dossiers
Mais j'ai bien du mal a me concentrer sur ce travail aujourd'hui pour des raisons de santé, dès que cela ira mieux je me ferais un plaisir d'essayer vos explications et essayer de comprendre surtout.
Y a un truc que je saisi pas , "ouvrir les 2 fichiers dans un même dossier" ( bureau ), dois'je ouvrir un nouveau tableau avec deux onglets contenant ces deux fichier et le placer sur le bureau afin de m'en servir quand j'en ai besoin ?
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 324
Membres
103 813
dernier inscrit
Lolo280277