Recopie incrémentée

Bonjour à tous,

Peu à l'aise avec les macros, j'aurais besoin d'aide pour un fichier que je dois modifier. Pour essayer d'être clair, j'ai un fichier d'environ 900 lignes dans lequel je souhaite insérer entre chaque ligne (en italique ci-dessous) 7 lignes supplémentaires reprenant la ligne en italique incrémentée de 1 (uniquement colonne "Données client". Dans l'exemple ci-dessous, les données de base sont en italique et celles à ajouter sont caractère "normal".

Données ClientRéf Site
CLIENT_VILLE_REF001_0000AAA_REF001DONNEES DE BASE
CLIENT_VILLE_REF002_0000AAA_REF002
CLIENT_VILLE_REF003_0000AAA_REF003
CLIENT_VILLE_REF005_0000AAA_REF005
CLIENT_VILLE_REF007_0000AAA_REF007
CLIENT_VILLE_REF008_0000AAA_REF008
CLIENT_VILLE_REF009_0000AAA_REF009
Etc…+ 900 lignesEtc…+900 lignes
Données ClientRéf Site
CLIENT_VILLE_REF001_0000AAA_REF001DONNEES SOUHAITEES
CLIENT_VILLE_REF001_0001AAA_REF001
CLIENT_VILLE_REF001_0002AAA_REF001
CLIENT_VILLE_REF001_0003AAA_REF001
CLIENT_VILLE_REF001_0004AAA_REF001
CLIENT_VILLE_REF001_0005AAA_REF001
CLIENT_VILLE_REF001_0006AAA_REF001
CLIENT_VILLE_REF001_0007AAA_REF001
CLIENT_VILLE_REF002_0000AAA_REF002
CLIENT_VILLE_REF002_0001AAA_REF002
CLIENT_VILLE_REF002_0002AAA_REF002
CLIENT_VILLE_REF002_0003AAA_REF002
CLIENT_VILLE_REF002_0004AAA_REF002
CLIENT_VILLE_REF002_0005AAA_REF002
CLIENT_VILLE_REF002_0006AAA_REF002
CLIENT_VILLE_REF002_0007AAA_REF002
CLIENT_VILLE_REF003_0000AAA_REF003
Etc…Etc…
Etc…Etc…
Etc…Etc…
CLIENT_VILLE_REF005_0000AAA_REF005
Etc…Etc…
Etc…Etc…
Etc…Etc…

Merci d'avance de vos suggestions.

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient--il ?

19essai-v1.xlsm (23.53 Ko)

Bye !

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,

Bonjour,

Pour la proposition de gmb, c'est presque ça. Pour la colonne "Données client", c'est parfait. Par contre, l'actualisation ne se fait pas sur la colonne "Ref Site". Je teste de suite celle de 3GB.

Attention, elle est à adapter avec vos références, en supposant de préférence qu'il s'agisse d'un tableau structuré...

Cdlt,

Nouvelle version.

9essai-v2.xlsm (25.93 Ko)

Bye !

Parfait!!!! Merci beaucoup.

Rechercher des sujets similaires à "recopie incrementee"