Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule "Si" en VBA

Florian53

XLDnaute Impliqué
Bonjour le forum,

Je voudrais avoir une formule dans les cellules de A2:A500, j'ai utilisé l'enregistreur de Macro pour ça mais le code est vraiment très long à exécuter certainement du a sa grandeur.

Code:
Sub Formules()
With Sheets(16).Select
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[1]="""","""",1)"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[1]="""","""",R[-1]C+1)"
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[1]="""","""",R[-1]C+1)"
    Range("A3:A4").Select
    Selection.AutoFill Destination:=Range("A3:A499"), Type:=xlFillDefault
    Range("A3:A499").Select
    ActiveWindow.ScrollRow = 459
    ActiveWindow.ScrollRow = 455
    ActiveWindow.ScrollRow = 452
    ActiveWindow.ScrollRow = 444
    ActiveWindow.ScrollRow = 436
    ActiveWindow.ScrollRow = 427
    ActiveWindow.ScrollRow = 415
    ActiveWindow.ScrollRow = 403
    ActiveWindow.ScrollRow = 387
    ActiveWindow.ScrollRow = 373
    ActiveWindow.ScrollRow = 357
    ActiveWindow.ScrollRow = 335
    ActiveWindow.ScrollRow = 316
    ActiveWindow.ScrollRow = 297
    ActiveWindow.ScrollRow = 277
    ActiveWindow.ScrollRow = 260
    ActiveWindow.ScrollRow = 244
    ActiveWindow.ScrollRow = 230
    ActiveWindow.ScrollRow = 219
    ActiveWindow.ScrollRow = 210
    ActiveWindow.ScrollRow = 202
    ActiveWindow.ScrollRow = 195
    ActiveWindow.ScrollRow = 186
    ActiveWindow.ScrollRow = 180
    ActiveWindow.ScrollRow = 173
    ActiveWindow.ScrollRow = 168
    ActiveWindow.ScrollRow = 163
    ActiveWindow.ScrollRow = 158
    ActiveWindow.ScrollRow = 154
    ActiveWindow.ScrollRow = 149
    ActiveWindow.ScrollRow = 145
    ActiveWindow.ScrollRow = 141
    ActiveWindow.ScrollRow = 136
    ActiveWindow.ScrollRow = 133
    ActiveWindow.ScrollRow = 128
    ActiveWindow.ScrollRow = 123
    ActiveWindow.ScrollRow = 117
    ActiveWindow.ScrollRow = 111
    ActiveWindow.ScrollRow = 105
    ActiveWindow.ScrollRow = 100
    ActiveWindow.ScrollRow = 93
    ActiveWindow.ScrollRow = 87
    ActiveWindow.ScrollRow = 82
    ActiveWindow.ScrollRow = 77
    ActiveWindow.ScrollRow = 73
    ActiveWindow.ScrollRow = 68
    ActiveWindow.ScrollRow = 65
    ActiveWindow.ScrollRow = 60
    ActiveWindow.ScrollRow = 57
    ActiveWindow.ScrollRow = 54
    ActiveWindow.ScrollRow = 51
    ActiveWindow.ScrollRow = 48
    ActiveWindow.ScrollRow = 46
    ActiveWindow.ScrollRow = 42
    ActiveWindow.ScrollRow = 39
    ActiveWindow.ScrollRow = 35
    ActiveWindow.ScrollRow = 30
    ActiveWindow.ScrollRow = 25
    ActiveWindow.ScrollRow = 20
    ActiveWindow.ScrollRow = 14
    ActiveWindow.ScrollRow = 8
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
    End With
    Sheets("Tableau de bord").Activate
End Sub

Est ce qu'il y a une possibilité de réduire ce code ?

Merci
 

mutzik

XLDnaute Barbatruc

sinon
with sheets(16)
Range("A2").FormulaR1C1 = "=IF(RC[1]="""","""",1)"

les autres lignes aussi et,
pas besoin de sélectionner une cellule pour y entrer une valeur ou une formule
 

Jacky67

XLDnaute Barbatruc
Est ce qu'il y a une possibilité de réduire ce code ?
Bonjour,
Ceci en adaptant le nom de la feuille devrait être suffisant
Code:
Sub Formules()
With Sheets("Feuil1")  ' adapter le nom de la feuille
  .[A2].Formula = "=IF(b2="""","""",1)"
  .[A3:a500].Formula = "=IF(b3="""","""",a2+1)"
End With
Sheets("Tableau de bord").Activate
End Sub
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…