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

XL 2013 Changer boucle en étirement de formule

viclaet

XLDnaute Nouveau
Bonjour,

Je suis débutante en VBA et je souhaiterais gagner du temps en remplaçant une boucle par un étirement de formule.
Je m'explique, j'ai réalisé cette boucle :

For j = 51 To 60
For i = 4 To 21112

If (Cells(i, 11) >= Cells(i, 10)) Then
Cells(i, j) = 0
Else
Cells(i, j) = 1
End If

Next i
Next j

Cependant, le temps de réalisation du programme est long.
Pour cela j'aimerai savoir comment étendre la formule que j'aurais mise en cellule (4,51) et l'étendre jusqu'en cellule (21112,51).

Merci pour votre aide
 

vgendron

XLDnaute Barbatruc
Re : Changer boucle en étirement de formule

Bonjour

avec cette formule en AY4 (51)
=SI($K4>=$J4;0;1)
tu tires vers la droite jusqu'à la colonne BH (60)
Puis vers le bas juqu'à ta ligne 21112
 

viclaet

XLDnaute Nouveau
Re : Changer boucle en étirement de formule

Bonjour,

Mon but est d'automatiser le programme, c'est la raison pour laquelle je souhaite passer sous VBA et non Excel.
De plus la soustraction se fait entre une variable fixe et une aléatoire, pour cela il faut qu'il y ait un changement de valeurs entre les colonnes.
 

vgendron

XLDnaute Barbatruc
Re : Changer boucle en étirement de formule

Bonjour,

Sans ton ficher exemple.. difficile d'aller plus loin...

remplaçant une boucle par un étirement de formule.
j'avais compris que tu ne voulais plus de VBA justement..

Cells(i, 11) >= Cells(i, 10))

ici, je ne vois rien de fixe ni d'aléatoire.. tu fais toujours la soustraction des cellules colonne J et K de la meme ligne..
tu voulais peut etre plutot dire ?
Fixe; les colonnes J et K
variable: la ligne.

pour mettre une formule et l'étirer en VBA:
lance l'enregistreur de macro, ecris ta formule en AY4, tires la , à droite et en bas
arrete l'enregistreur, et visualise le code (Alt +F11 pour ouvrir l'éditeur de code): tu auras, je pense, déjà un bon début de réponse
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Changer boucle en étirement de formule

Bonjour

Mieux vaut tard que...

peut être avec
Code:
Sub etendre2()
Application.ScreenUpdating = False
Range("D6:AA2000").Formula = "=IF(D6>=C6,0,1)"
Application.ScreenUpdating = True
End Sub

en adaptant la plage D6:AA2000 a ton besoin.

@ plus
 

Discussions similaires

Réponses
4
Affichages
362
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…