simplifier une incrémentation

  • Initiateur de la discussion Initiateur de la discussion mumu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mumu

XLDnaute Occasionnel
Bonjour le forum,

J'ai écrit la macro qui suit, elle marche très bien (suis trop forte !!) mais j'aimerais, pour en apprendre un peu plus, la simplifier surtout dans l'incrémentation de 1 à 60.
Y aurait-il une bonne âme pour ce petit conseil ?

Merci d'avance !!

Mumu

Code:
Private Sub MEP_Click()

Dim DerLig As Integer

'on commence par rajouter des lignes de 1 à 60 pour M, F et I afin d'avoir
'tous les âges dans le tableau croisé dynamique
' On récupère la dernière ligne remplie dans la feuille "saisie"
DerLig = Sheets("saisie").Range("A" & Rows.Count).End(xlUp).Row

    Range("D" & DerLig + 1).Value = "1"
    Range("D" & DerLig + 2).Value = "2"
    Range("D" & DerLig + 3).Value = "3"
    Range("D" & DerLig + 1, "D" & DerLig + 3).Select
    Selection.AutoFill Destination:=Range("D" & DerLig + 1, "D" & DerLig + 60), Type:=xlFillDefault
   
    Range("E" & DerLig + 1, "E" & DerLig + 60).Value = "M"
   
    Range("D" & DerLig + 61).Value = "1"
    Range("D" & DerLig + 62).Value = "2"
    Range("D" & DerLig + 63).Value = "3"
    Range("D" & DerLig + 61, "D" & DerLig + 63).Select
    Selection.AutoFill Destination:=Range("D" & DerLig + 61, "D" & DerLig + 120), Type:=xlFillDefault
   
    Range("E" & DerLig + 61, "E" & DerLig + 120).Value = "I"
    
    Range("D" & DerLig + 121).Value = "1"
    Range("D" & DerLig + 122).Value = "2"
    Range("D" & DerLig + 123).Value = "3"
    Range("D" & DerLig + 121, "D" & DerLig + 123).Select
    Selection.AutoFill Destination:=Range("D" & DerLig + 121, "D" & DerLig + 180), Type:=xlFillDefault
   
    Range("E" & DerLig + 121, "E" & DerLig + 180).Value = "F"
    Range("A" & DerLig + 1, "A" & DerLig + 180).Value = "NA"
    
End Sub
 
Re : simplifier une incrémentation

Bonjour mumu,

Il y a peut-être plus simple, mais je propose :

Code:
Dim l           As Long
Dim rPremCel    As Range
Dim aLet        As Variant

aLet = Array("M", "I", "F")

Set rPremCel = Sheets("Saisie").Range("A" & Rows.Count).End(xlUp).Offset(1)

For l = 0 To 2
    With rPremCel.Offset(l * 60)
         .Range("D1").Value = "1"
         .Range("D2").Value = "2"
         .Range("D1:D2").AutoFill Destination:=.Range("D1:D60"), Type:=xlFillDefault
        
         .Range("E1:E60").Value = aLet(l)
    End With
Next l

rPremCel.Range("A1:A180").Value = "NA"

ou bien avec une formule Excel :

Code:
Dim rPremCel    As Range

Set rPremCel = Sheets("Saisie").Range("A" & Rows.Count).End(xlUp).Offset(1)

With rPremCel
    .Range("D1:D180").Formula = "=MOD(ROW() - " & .Row & ",60) + 1"
    .Range("D1:D180").Copy
    .Range("D1:D180").PasteSpecial Paste:=xlPasteValues

    .Range("E1:E60").Value = "M"
    .Range("E61:E120").Value = "I"
    .Range("E121:E180").Value = "F"
    .Range("A1:A180").Value = "NA"
End With

@+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
838
Réponses
5
Affichages
931
Retour