Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MACRO tableau multiples entrées

2 réponses
Avatar
BEABOU
Bonjour,

J'ai le tableau suivant :

Gamme Ref Couleur S M X XL XXL XXXL
x x1 x2 15 20
y y1 y2 10 30

et je veux obtenir le tableau suivant

Gamme x y
Ref x1 y1
Couleur x2 y2
Taille S M L XL XXL XXXL S M L XXL XXL XXXL
15 20 10 30

Si quelqu'un a une solution.....(j'en ai plus de 50 à faire donc trop long à
faire manuellement).
Merci bcp.
BEABOU

2 réponses

Avatar
isabelle
bonjour Beabou,

il y aura 7 colonnes utilisées pour chaque gammes, donc 7 * 50 = 350
colonnes
sur les versions antérieur à xl2007, il n'y a que 256 colonnes
disponible, quel version as-tu ?

isabelle

BEABOU a écrit :
Bonjour,

J'ai le tableau suivant :

Gamme Ref Couleur S M X XL XXL XXXL
x x1 x2 15 20
y y1 y2 10 30

et je veux obtenir le tableau suivant

Gamme x y
Ref x1 y1
Couleur x2 y2
Taille S M L XL XXL XXXL S M L XXL XXL XXXL
15 20 10 30

Si quelqu'un a une solution.....(j'en ai plus de 50 à faire donc trop long à
faire manuellement).
Merci bcp.
BEABOU



Avatar
Modeste
Bonsour® BEABOU avec ferveur ;o))) vous nous disiez :

J'ai le tableau suivant :
Gamme Ref Couleur S M X XL XXL XXXL
x x1 x2 15 20
y y1 y2 10 30

et je veux obtenir le tableau suivant
Gamme x y
Ref x1 y1
Couleur x2 y2
Taille S M L XL XXL XXXL S M L XXL XXL XXXL
15 20 10
30



il s'agit d'un probleme de conception de base de données
il faut que l'information taille soit un champ colonne ainsi que la quantité correspondante
a chaque enregistrement ne doit correspondre qu'un seul couple taille quantité


en supposant que le tablo commence en ligne 1 et colonne 1
il suffit de le nommer "tablo" (original n'est-ce pas ;o)))
puis d'éxécuter la macro suivante :
ensuite l'utilisation d'un TCD permet aisément l'analyse, la présentation ou la répartition selon les besoins

Sub Reventilation_Tailles()
'----- attention sauvegarder vos données originales
'----- faire un test avec un jeu de données réduit
Dim Qte() As Integer, Taille As Integer
Dim Ligne As Integer, LigneCourante As Integer, LigneRef As Integer, ColonneDebut As Integer
Dim Gamme, Reference, Couleur
ReDim Qte(6) ' ---- adapter si plus de tailles
Application.Goto Reference:="tablo"
'--------insertion des colonnes Taille et Qté
Columns("D:D").Insert Shift:=xlToRight
Columns("D:D").Insert Shift:=xlToRight
Range("D1").FormulaR1C1 = "Taille"
Range("E1").FormulaR1C1 = "Qté"
'------coordonnées du tablo
LigneDebut = Range("tablo").Row
ColonneDebut = Range("tablo").Column
Nblignes = Range("tablo").Rows.Count
'------la reventilation proprement dite
For Ligne = LigneDebut + Nblignes To (LigneDebut + 1) Step -1
' ----memorisation des infos pertinantes
gamme = Cells(Ligne, ColonneDebut)
Reference = Cells(Ligne, ColonneDebut + 1)
Couleur = Cells(Ligne, ColonneDebut + 2)
LigneCourante = Ligne
LigneRef = LigneCourante
'--------récupération des quantités par taille
For Taille = 1 To 6 ' ---- adapter si plus de tailles
Qte(Taille) = Cells(LigneCourante, ColonneDebut + 4 + Taille)
Next
'--------Insertion ligne puis report qté et taille correspondante
For Taille = 1 To 6 ' ---- adapter si plus de tailles
If Qte(Taille) <> 0 Then
Cells(LigneCourante, ColonneDebut).Select
Selection.EntireRow.Insert
With Cells(ActiveCell.Row, ColonneDebut)
.Value = gamme
.Offset(0, 1) = Reference
.Offset(0, 2) = Couleur
' ---- adapter si plus de tailles
.Offset(0, 3) = Application.Choose(Taille, "S", "M", "X", "XL", "XXL", "XXXL")
.Offset(0, 4) = Qte(Taille)
End With
LigneRef = LigneRef + 1
End If
Next
' ------suppression de la ligne originale
Cells(LigneRef, ColonneDebut).Select
Selection.EntireRow.Delete
Next
End Sub