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

Signaler
Messages postés
12
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
16 octobre 2010
-
Messages postés
12
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
16 octobre 2010
-
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

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
301
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
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
301
on m'a devancé de trois minutes !

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

bon courage
Messages postés
12
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
16 octobre 2010

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