@JoyeuxNoël ... oui on m'a sollicité, sinon je ne joue plus à excel ! et puis les PQweryPuristes n'ont pas donné signe de vie ;à-dessus, le forum excel serait-il en léthargie ?
Tu proposes un j-1, moi je mettrais plutôt une valeur mémoire, la dernière trouvée, que j'appellerais si jamais il y avait 3 cellules fusionnées, mais j'ai préféré juste signaler le problème dans le fichier. Sinon, quelque chose comme ceci :
k = 1
der = ""
For i = 3 To UBound(tbl, 2)
For j = 5 To UBound(tbl)
resultat(k, 1) = "H screw"
resultat(k, 2) = matiere
resultat(k, 3) = tbl(1, i)
if (tbl(j, 2) <> "") then
der = tbl(j, 2)
end if
resultat(k, 4) = der
resultat(k, 5) = tbl(j, i)
k = k + 1
Next
Next
@GomJu
voici quelques explications
' j'aurais pu ici redimensionner à chaque donnée prélevée du tableau maître, mais cela aurait obligé à travailler en transposé car on ne peut ajouter une ligne que sur le dernier indice d'un tableau - j'ai pris large en mettant un nombre de lignes égal au nombre de cases du tableau sachant même que je ne prends pas les 2 premières colonnes et les 5 premières lignes ... pour être homogène, regarde bien que sur le laiton j'ai ajouté une ligne fictive
ReDim resultat(UBound(tbl) * UBound(tbl, 2), 5)
' k sera la ligne du tableau
k = 1
' je balaie ici les lignes et colonnes du tableau maître
For i = 3 To UBound(tbl, 2)
For j = 5 To UBound(tbl)
' j'affecte ici au résultat les valeurs comme demandées
resultat(k, 1) = "H screw"
resultat(k, 2) = matiere
' en ligne 1
resultat(k, 3) = tbl(1, i)
' en colonne 2
resultat(k, 4) = tbl(j, 2)
' le code
resultat(k, 5) = tbl(j, i)
k = k + 1
Next
Next
' in du tableau, je le colle dans la feuille récap
Worksheets("Recap").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(UBound(resultat), UBound(resultat, 2)) = resultat