[Catégorie modifiée .Net --> VBA] Simplifier une macro mettre une boucle- [Résolu]

Messages postés
12
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
16 octobre 2010
- - Dernière réponse : uspa
Messages postés
12
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
16 octobre 2010
- 2 oct. 2010 à 22:15
Bonjour,
Je débute sur la création et la modification des macros. Soyez donc indulgents avec moi.
J'ai enregistré une suite d'actions dans une macro (VBA 6.3). Cela consiste à mettre un titre de colonne dans une cellule puis à remplir les 24 cellules suivantes en incrémentant chaque cellule de 1 à 24 selon: A1, A2 ...A24.
Continuer ensuite avec B (B1, B2 ...B24)...jusqu'à P (P1, P2...P24).
Pouvez-vous m'indiquer comment mettre une boucle qui incrémente automatiquement à la place des lignes de code suivantes:
Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D1").Select
ActiveCell.FormulaR1C1 = "Coordonnées"
Range("D2").Select
ActiveCell.FormulaR1C1 = "A1"
Selection.AutoFill Destination:=Range("D2:D25"), Type:=xlFillDefault
Range("D26").Select
ActiveCell.FormulaR1C1 = "B1"
Selection.AutoFill Destination:=Range("D26:D49"), Type:=xlFillDefault
Range("D50").Select
ActiveCell.FormulaR1C1 = "C1"
Selection.AutoFill Destination:=Range("D50:D73"), Type:=xlFillDefault
...

Merci beaucoup pour votre aide
Uspa
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
3
Merci
Salut et bienvenu

Première chose : remarque la catégorie dans laquelle ta question se trouve et pense à correctement la choisir la prochaine fois.
Ensuite, quand tu colles du code, il est préférable d'utiliser la coloration syntaxique 3ème icone à droite plus facile à lire et conserve les espaces de début de ligne.

Exemple :
    Dim r As Integer
    Dim t As Integer
    Dim oRange As Range
    Set oRange = Range("E2")        ' Cellule de départ
    For r = Asc("A") To Asc("P")    ' de A à P
        For t = 1 To 24             ' de 1 à 24
            oRange.Value = Chr$(r) & CStr(t)
            Set oRange = oRange.Offset(1, 0)
        Next t
    Next r
Tu noteras l'utilisation de Value et pas FormulaR1C1

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 142 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
227
0
Merci
Pour pouvoir boucler sur les colonnes, il faut que tu utilises Cells et non la fontion range parce qu'on ne peut boucler que sur des entiers.

Alors commencons :
dim i as integer
dim j as integer
For int j=0 To 20
   ' j est l'indice des colonnes P est la 21 eme lettre de l'alphabet
   For i=0 To 25
      ' i est l'indice sur les lignes
       Cells(i, j).select
       ActiveCell.FormulaR1C1 = "ce que tu veux mettre"
   Next i
Next j


Je ne peux pas vérifier ce code, il y a donc peut être quelques erreurs, en particulier sur les indices de Cells, je ne sais pas s'ils commencent à 0 ou 1 mais tu t'en sortiras surement
Commenter la réponse de cs_Julien39
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
227
0
Merci
on m'a devancé de trois minutes !

la réponse de Jack est meilleure, je ne connaissais pas la fonction Asc.

bon courage
Commenter la réponse de cs_Julien39
Messages postés
12
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
16 octobre 2010
0
Merci
Merci beaucoup à Jack et Julien39 pour leur réponse très rapide et efficace.
Désolé pour l'envoi de ce message dans le mauvais post.

Uspa
Commenter la réponse de uspa