Bonjour Chlomojoru et gmb,
J'ai une proposition similaire à celle de gmb mais pensée pour un tableau nommé avec un nombre de colonnes variable :
'A COPIER DANS UN MODULE NORMAL (ET A DESTINER A UN BOUTON)
Option base 1
Sub TransfoBase()
Dim mabase as range
Dim nbl%, nbc%, i%, N%
Dim donnees(), nvbase()
set mabase = range("MABASE") 'la plage des données d'origine (supposée nommée MABASE pour l'exemple)
nbl = mabase.rows.count 'nb de lignes de mabase
nbc = mabase.columns.count 'nb colonnes
redim donnees(nbl, nbc) 'dimension tableau donnees de mabase
redim nvbase(nbl*8,nbc) 'dimension tableau nouvelles donnees
donnees = mabase 'tableau donnees recoit valeurs de mabase
for i = 1 to nbl*8 'pour chaque ligne du tableau nvbase
if (i + 7) mod 8 = 0 then N = (i + 7) / 8 'si la ligne en cours est la 1ère sur 8, N = N + 1 (N permet d'agir sur les références d'origine)
for k = 1 to nbc 'pour chaque colonne
select case k
case 1: nvbase(i, 1) = left(donnees(N, 1), len(donnees(N, 1)) - 1) & (i + 7) mod 8 'colonne 1 : prend la partie gauche (tous les caractères - 1) du texte de la référence N et ajoute le reste de la division de i + 7 par 8
case else: nvbase(i, k) = donnees(N, k) 'autres colonnes : prennent meme valeurs que sur la ligne N de données
end select
next k
next i
set mabase = mabase.resize(nbl*8, nbc) 'retaille la plage de données
mabase = nvbase 'colle les valeurs
msgbox 'terminé"
End sub
'EXPLICATIONS :
' ex : i = 9 => i+7 = 16 et (i+7)/8 = 2 (N incrémenté) et (i+7) mod 8 = 0 (aucun reste car 16 mult de 8) => ajoute à "..._000" "0"
' ex2 : i = 23 => i+7 = 30 et (i+7)/8 = 3,75 (N pas incrémenté, N = 3 encore) et (i+7) mod 8 = 6 => ajoute à "...000" "6"
' en continuant : i = 24 => ajoute "7" ... i = 25 => ajoute "0" ... etc
Cdlt,