Création de combinaisons croisées de lignes de "texte"
Bonjour à tous,
Tout d'abord merci de m'avoir accueilli sur ce forum !
C'est le second post de ma vie dans un forum, jusqu'à ce jour j'ai toujours solutionné mes problèmes grâce à notre grand ami Google ou aux forums ayant déjà évoqué mon problème, mais après plusieurs recherches et étant donné la spécificité de mon cas de figure, je ne vois hélas pas d'autre solutionner que celle de venir vous embêter
Je viens d'arriver sur ce forum en espérant que vous pourrez répondre à ma question, forts de vos expériences respectives.
Le titre du sujet n'étant pas très explicite, je vais vous détailler la chose.
Pour planter le décor, je suis dans le e-commerce textile et ait fait un export de ma base de données catalogue en .csv (exemple en PJ: extrait_export_BDD.xlsx) de mon (très) vieux OsCommerce.
J'arrive donc au résultat que vous pourrez voir:
ID Produit (clé primaire) / ID Attribut / Type Attribut / Attribut
A1 / 12 / Taille /S
A1 / 13 / Taille /M
A1 / 14 / Taille /L
A1 / 27 / Couleur /Blanc
A1 / 28 / Couleur /Noir
Le problème est que ma table "attributs" confond les attributs de taille et attributs de couleur. Pour schématiser le problème concret, si le produit A1 est dispo chez moi en taille "S" et uniquement en couleur "Noir", je dois donc activer l'attribut "S" ce qui aura pour conséquence de rendre également la couleur "Blanc" en taille "S" "ajoutable" au panier (avec mon système actuel) malgré le fait qu'il soit indisponible.
Une seule chose solutionnerai le tout, le fait d'établir une formule/ macro (que je ne maîtrise hélas pas du tout) afin d'obtenir un résultat proche de cela:
ID Produit (clé primaire) / Couleur / Taille
A1 / Blanc / S
A1 / Blanc / M
A1 / Blanc / L
A1 / Noir / S
A1 / Noir / M
A1 / Noir / L
Je dois "juste" générer les combinaisons des différents types d'attributs en croisant ces derniers. C'est sans doute tout simple pour certain(e)s, mais à force d'être plongé dans mon excel je ne vois peut-être pas la solution qui est sous mes yeux. Un œil extérieur fait parfois du bien .
En espérant que vous pourrez me donner un coup de pouce, cela m'aiderai éééénormément!
Un grand merci d'avance,
bonsoir,
proposition de solution via une macro
Sub gencombinaison()
Dim taille(10), couleur(10)
Set ws = Worksheets.Add
ws.Name = "combinaison"
With Worksheets("help!")
dl = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(dl, 1) = "fin"
For i = 2 To dl
If .Cells(i, 1) <> ref Then
If ref <> "" Then
For j = 1 To c
For k = 1 To t
l = l + 1
ws.Cells(l, 1) = ref
ws.Cells(l, 2) = prod
ws.Cells(l, 3) = couleur(j)
ws.Cells(l, 4) = taille(k)
Next k
Next j
End If
ref = .Cells(i, 1)
prod = .Cells(i, 2)
t = 0
c = 0
End If
If .Cells(i, 5) = "Taille" Then
t = t + 1
taille(t) = .Cells(i, 4)
ElseIf .Cells(i, 5) = "Couleur" Then
c = c + 1
couleur(c) = .Cells(i, 4)
End If
Next i
.Cells(dl, 1) = ""
End With
End Sub
Bonjour h2so4,
Tout d'abord merci pour ta super réactivité et ton aide!
La macro fonctionne, en revanche je ne sais pas si cela est du au nombre de lignes de mon catalogue excel (4053 lignes), mais la macro n’exécute que 334 lignes (qui correspond à la ligne 528 de la feuille d'origine à partir de laquelle est exécutée la macro).
Aucune différence de mise en forme, doublon ou autre pourtant.
Lorsque j'éxécute la macro, une boîte de dialogue de Microsoft Visual Basic s'ouvre en me disant:
Erreur d'exécution '9': L'indice n'appartient pas à la sélection (Photo en PJ)
J'ai tenté de retrouver ce à quoi correspond le paramètre mis en surbrillance mais cela semble être le nombre de colonnes pris en charge, je ne vois donc pas en quoi ce paramètre peut avoir une influence sur l'exécution intégrale de la macro (sachant que je ne connais rien en macro.
Je tire sûrement des conclusions sans légitimité hein
J'ai vraiment l'impression de toucher l'objectif du bout du doigt
Merci encore de ton aide!
bonjour,
j'ai fait l'hypothèse qu'il y avait 10 tailles et 10 couleurs au maximum. je suppose que l'on est dans un cas où il y en a plus, tu devrais vérifier si tu n'as pas un problème avec tes données car + de 10 tailles pour un même article, cela me parait beaucoup.
je t'ai mis une version avec une limite à 100 en pj.
J'ai oublié de préciser que le programme fait l'hypothèse que toutes les données sont triés sur le numéro d'article.
Pas grand chose à dire à part...MERCI h2so4!
Merci de ton aide, ce forum est vraiment réactif!
Je vais vraiment me pencher sur VB étant donné le gain de temps que cela peut parfois procurer.
J'espère que ça en aidera d'autres, en attendant, moi, ça m'a sauvé la vie!