Incrémentation des cellules en se décalant une fois à droite et en bas

Bonjour,

J'ai un faible niveau en VBA, surtout en pratique et ça fait plusieurs jours que je cherche à réaliser une macro.

J'ai une ligne en haut avec des montants, j'aimerais que chaque montant viennent se positionner toujours une ligne en dessous et soit décalé une fois à droite du précedent. (exemple dans le fichier)

J'ai réaliser une macro qui permet que tant que la selection des montants n'est pas vide on vienne coller en positif le montant et une seconde qui permet de coller les montants ou je le souhaite.

Mais je n'arrive pas à faire une boucle permettant que tant que les cellules des montants n'est pas vide on continue à coller le montant en positif une cellule plus bas et à gauche du précédent.

Je ne sais pas si je suis claire, c'est compliqué à expliquer

Je compte sur vous, merci d'avance

Hélo

3test-macro.xlsm (20.21 Ko)

Bonjour,

Merci pour ton fichier ... une petite modification ...

Sub Cellule_non_vides()
Dim i As Integer
    For Each cel In Sheets("sheet1").Range("d5:o5")
        i = i + 1
        If cel.Value <> "" Then
            cel.Offset(i, 0).Formula = -cel
        End If
    Next cel
End Sub

En espèrant que cela t'aide

Merci beaucoup pour votre réponse si rapide en plus ça fonctionne très très bien, cependant en réalité ma ligne montant est en ligne 3 et le début de l'action doit se réaliser en ligne 8 (la copie du premier montant est en ligne 8 et ensuite devra être en ligne 9 etc).

Je pensais ajouter activcell

donc avoir ce code :

Sub NOUVELLE()

Dim i As Integer

For Each cel In Sheets("sheet1").Range("d5:R5")

i = i + 1

If cel.Value <> "" Then

Activcell.Offset(i, 0).Formula = -cel

End If

Next cel

End Sub

Cependant cela ne marche pas, comment mentionner le fait que ca commence en ligne 8?

Merci beaucoup

Héloïse,

Ci-joint ton fichier test ...

En espèrant que cela réponde à ton attente

13test-helo10.xlsm (21.03 Ko)

Bonjour,

@ James007,

Je titille, nous titillons, ils titillent !...

Il faut penser à déclarer toutes les variables avec Option Explicit.

Option Explicit

Sub Cellules_non_vides2()
Dim Cel As Range, i As Long
    For Each Cel In ActiveSheet.Range("D3:O3")
        i = i + 1
        If Not IsEmpty(Cel) Then
            Cel.Offset(i + 4).Value = -Cel.Value
        End If
    Next Cel
End Sub

Merci beaucoup à vous deux ça fonctionne très bien ! Un grand merci pour votre rapidité et vos très bons conseils

Content que tout fonctionne comme souhaité ...

Merci pour tes remerciements

Rechercher des sujets similaires à "incrementation decalant fois droite bas"