Macro Excel AutoFill divers

Résolu
a506920 Messages postés 21 Date d'inscription vendredi 4 avril 2008 Statut Membre Dernière intervention 28 mai 2008 - 28 mai 2008 à 01:27
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 29 mai 2008 à 11:34
Hello !


Premièrement je me pose la question de savoir si me placer dans le
theme Visual Basic 6/Divers/Debutants est une bonne chose mais ne
sachant pas ou aller pour parler des macro d'Excel (qui s ecrivent
comme en VB), je viens par ici. S il y a un theme plus propice à cette
discussion faite le moi savoir et je me ferais un plaisir de mettre ma
question dans ce thème.


Sinon voici mon probleme:


Je dois remplir 64 colonnes d'une feuille Excel avec pour chaque colonne une formule differente sachant par ailleurs que les 64 colonnes ne sont pas cote à cote. Ci dessous un exemple du problème simplifié avec en rouge les colonnes à remplir:
    A   B   C   D   E  ... GG GH GI
1  
2
3
4
5


J ai vu que pour remplir par exemple la colonne A et B de la ligne 1 à 5 avec une macro il suffisait d ecrire:

Range("A1:B1").Select

Selection.AutoFill Destination:=Range("A1:B5")

Range("A1:B5").Select

Il me semble plus judicieux d utiliser des "Cells(i,j)" et des boucles for comme ci-dessous:

 For j=1 to 64

    Cells( 1 , 3*j - 2 ).Select
    Cells( 1 , 3*j - 1 ).Select
Next j
 



For i =1 to 5

    For j=1 to 64

     
Selection.AutoFill Destination:=Cells( i , 3*j - 2 )

      Selection.AutoFill Destination:=Cells( i , 3*j - 1 )


   Next j

Next i


For i =1 to 5

    For j=1 to 64

  
    Cells( i , 3*j - 2 ).Select

       Cells( i , 3*j - 1 ).Select



   Next j

Next i


Mais bien sur ca ne fonctionne pas.
Donc au final, j aimerais savoir si l on peut utiliser ou non des "Cells(i,j)" pour faire des AutoFill et si oui comment.

Merci

a506920

 

3 réponses

a506920 Messages postés 21 Date d'inscription vendredi 4 avril 2008 Statut Membre Dernière intervention 28 mai 2008
28 mai 2008 à 21:25
Bonjour,

Quelqu un m a explique cela, je pense que cela peut aider d autres personnes.

Voici un exemple qui va faire un Autofill de la ligne 1 à 5, sur 64 colonnes.

For i = 1 To 64
    Cells(1, i).AutoFill Destination:=Range(Cells(1, i), Cells(5, i))
Next i

Adapté à mon probleme, ca donne:

For j = 1 To 64
      Cells(7, 3 * j + 7 - 2).AutoFill Destination:=Range(Cells(7, 3 * j + 7 - 2), Cells(544, 3 * j + 7 - 2))
      Cells(7, 3 * j + 7 - 1).AutoFill Destination:=Range(Cells(7, 3 * j + 7 - 1), Cells(544, 3 * j + 7 - 1))
Next j
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 mai 2008 à 14:17
déplacé de VB6 vers VBA ;)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
29 mai 2008 à 11:34
On peut aussi utiliser un mélange de Range et Cells et laisser tomber le AutoFill

Range(Cells(1,1), Cells(1, 64)).Formula = "=MaFormule en A1"

Attention aux liaisons croisées, par contre...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous