Reduir code VBA

Bonjour

je travaille sur un tableau de transfert de donnée et je ne suis pas trop doué en VBA .

J'ai avec la complicité de google et de différents post réussi a faire un module VBA qui fonctionne

Sub Valider()
    Set f = Sheets("mon tableau")                                                  
    lgn = f.Range("A100").End(xlUp)(2).Row                                           
    For i = 1 To 98                                                                 
        col = Choose(i, "a", "B", "c", "D", "E", "f", "G", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "aa", "aB", "ac", "aD", "aE", "af", "aG", "ah", "ai", "aj", "ak", "al", "am", "an", "ao", "ap", "aq", "ar", "as", "at", "au", "av", "aw", "ax", "ay", "az", "ba", "bB", "bc", "bD", "bE", "bf", "bG", "bh", "bi", "bj", "bk", "bl", "bm", "bn", "bo", "bp", "bq", "br", "bs", "bt", "bu", "bv", "bw", "bx", "by", "bz", "ca", "cB", "cc", "cD", "cE", "cf", "cG", "ch", "ci", "cj", "ck", "cl", "cm", "cn", "co", "cp", "cq", "cr", "cs", "ct") 
        v = Choose(i, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101)                         
        f.Range(col & lgn) = Range("D" & v)                                       
    Next i                                                                         
    f.Select

est-il possible de "reduire" col = Choose et v = Choose ?

Merci de votre retour

Bonjour,

For i=1 to 98
f.cells(lgn, i) = Range("D" & i+3)
Next i

@ bientôt

LouReeD

Bonjour

Merci en effet c'est vraiment plus cour.

si je doit modifier le nombre je doit changer la valeur "i+3" si je comprend bien (For i=1 to 98+3) pour 101 lignes

si j'ai 80 ligne a transfere je fait :

For i=1 to 77

f.cells(lgn, i) = Range("D" & i+3)

Next i

Je suis vraiment pas doué

Bonsoir,

Tout dépend d'où vous vient l'information "80" ou "101" lignes ou bien autre chose ?

Car cela peut être aussi "transformé" en variable et le code serait totalement autonome.

@ bientôt

LouReeD

Merci de la reponse

Bonjour,

For i=1 to 98
f.cells(lgn, i) = Range("D" & i+3)
Next i

@ bientôt

LouReeD

Bonjour a tous

je ré-ouvre pour une petite information supplémentairement :

Avec ce code, je range a l'heure actuel les donnée de"mon tableau" dans les colonnes a,b,c,d,... les une après les autres.

y a t-il un moyen de définir la colonne de destination par défaut soit "la ligne 4 en A";" ligne 5 en B";" ligne 6 en F";" ligne 30 en C";...ect

L'ordre des lignes transférés depuis le fichier peut être amener a être modifier d'ou la demande et si j'insert une ligne tout les contenu dans "mon tableau" se retrouvent décaler, si je fige la colonne de destination le problème serait résolu

Merci de votre aide

Rechercher des sujets similaires à "reduir code vba"