Dupliquer

piep14

XLDnaute Occasionnel
Bonsoir, j'aimerais savoir comment je peux faire pour que dans ma macro, il ne n'ajoute pas une formule a une cellule mais a une série de cellule voir a plusieurs lignes de suites ?

Merci
 

Marc_du_78

XLDnaute Accro
Bonsoir piep14, le Forum,

Voici 'récupéré) sur min pc. (J'ignore le ou les auteurs). Si cela peut te servir en attendant d'autre réponse.

Exécution d'une boucle à l'intérieur d'une plage de cellules

Lorsque vous utilisez Visual Basic, vous devez souvent appliquer le même groupe d'instructions à chaque cellule d'une plage de cellules. Pour ce faire, il suffit de combiner une boucle et une ou plusieurs méthodes pour identifier chaque cellule, une par une, puis d'appliquer l'opération.
Pour effectuer une boucle sur une plage, vous pouvez utiliser la boucle For...Next avec la propriété Cells. Grâce à cette propriété, vous pouvez remplacer les numéros d'index de cellule par le compteur de boucle (ou d'autres variables ou expressions). Dans l'exemple suivant, la variable counter remplace l'index de ligne. La procédure effectue une boucle sur la plage C1:C20, remplaçant par 0 (zéro) tout nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero1()
For Counter = 1 To 20
Set curCell = Worksheets('Sheet1').Cells(Counter, 3)
If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
Next Counter
End Sub

Une autre façon d'exécuter une boucle sur une plage consiste à utiliser la boucle For Each...Next avec la collection de cellules spécifiée dans la propriété Range. Visual Basic définit automatiquement, à chaque exécution de la boucle, une variable objet pour la cellule suivante. La procédure suivante effectue une boucle dans la plage A1:D10, remplaçant par 0 (zéro) tout nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero2()
For Each c In Worksheets('Sheet1').Range('A1:D10').Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub

Si vous ne connaissez pas les limites de la plage dans laquelle vous voulez effectuer une boucle, utilisez la propriété CurrentRegion pour renvoyer la plage qui entoure la cellule active. Par exemple, lorsque la procédure suivante est exécutée à partir d'une feuille de calcul, la boucle parcourt la plage entourant la cellule active en remplaçant par 0 (zéro) tout nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero3()
For Each c In ActiveCell.CurrentRegion.Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub



Exécution d'une boucle à l'intérieur d'une plage de cellules
Voir aussiDétails
Lorsque vous utilisez Visual Basic, vous devez souvent appliquer le même groupe d'instructions à chaque cellule d'une plage de cellules. Pour ce faire, il suffit de combiner une boucle et une ou plusieurs méthodes pour identifier chaque cellule, une par une, puis d'appliquer l'opération.
Pour effectuer une boucle sur une plage, vous pouvez utiliser la boucle For...Next avec la propriété Cells. Grâce à cette propriété, vous pouvez remplacer les numéros d'index de cellule par le compteur de boucle (ou d'autres variables ou expressions). Dans l'exemple suivant, la variable counter remplace l'index de ligne. La procédure effectue une boucle sur la plage C1:C20, remplaçant par 0 (zéro) tout nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero1()
For Counter = 1 To 20
Set curCell = Worksheets('Sheet1').Cells(Counter, 3)
If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
Next Counter
End Sub

Une autre façon d'exécuter une boucle sur une plage consiste à utiliser la boucle For Each...Next avec la collection de cellules spécifiée dans la propriété Range. Visual Basic définit automatiquement, à chaque exécution de la boucle, une variable objet pour la cellule suivante. La procédure suivante effectue une boucle dans la plage A1:D10, remplaçant par 0 (zéro) tout nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero2()
For Each c In Worksheets('Sheet1').Range('A1:D10').Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub

Si vous ne connaissez pas les limites de la plage dans laquelle vous voulez effectuer une boucle, utilisez la propriété CurrentRegion pour renvoyer la plage qui entoure la cellule active. Par exemple, lorsque la procédure suivante est exécutée à partir d'une feuille de calcul, la boucle parcourt la plage entourant la cellule active en remplaçant par 0 (zéro) tout nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero3()
For Each c In ActiveCell.CurrentRegion.Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub

Bonne soirée
 

Discussions similaires

Réponses
10
Affichages
252