Parcourir deux colonnes dans un seul code

Bonjour,

je souhaite parcourir la colone "A" qui contient des dates, afin de faire une soustraction de 21 jours et le resultat se met automatiquement dans la colonne B.

Je suis un peu perdu dans les boucles sachant que le nombre de ligne A peut varier.

voici mon code : ( la colonne se remplisse pas totalement !!)

Merci de votre aide

Option Explicit

Sub date_propose()

Dim resultat As Date
Dim i As Integer
Dim J As Integer
With ThisWorkbook.Sheets("Feuil1")

For i = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1

resultat = Range("A" & i).Value

resultat = resultat - 21

Range("B" & i).Value = resultat
      
Next i

End With

End Sub


Windows / Firefox 118.0

3 réponses

  1. Bonjour,

    Une facon de faire

    Sub date_propose()
        Dim resultat As Date
        Dim i As Long
        
        With ThisWorkbook.Sheets("Feuil1")
            Derlig = .Range("A" & .Rows.Count).End(xlUp).Row
            For i = 2 To Derlig
                .Range("B" & i).Value = .Range("A" & i).Value - 21
            Next i
        End With
    End Sub
    
    1. C'est le meme raisonement , mais ce code ne rempli aucune cellule de la colonne B !!

    2. @mimi

      Re,

      Chez moi ça marche très bien!

      La colonne A à des dates dans les cellules de votre fichier?

      Demain, je vous mettrai un fichier à dispo ou vous mettez votre fichier à dispo

  2. Bonjour à tous les deux

    >mimi : si tu as mis ton code dans le module de la feuille, il doit fonctionner tel que, si tu l'as mis dans un module général (Module1 par ex), et que tu l'exécutes depuis une autre feuille,  il va manquer un point'.' devant Range("A" & i).value et Range("B" & i) .value pour attacher ces références à la feuille "Feuil1" (With .... End With)

    Pour ce qui est de ta boucle, il vaut mieux utiliser une variable qui contiendra la dernière ligne comme l'a proposé f894009 histoire de ne pas la recalculer à chaque tour.

    Cdlmnt

    Sub date_propose()
    Dim resultat As Date
    Dim i As Integer
    Dim J As Integer
    With ThisWorkbook.Sheets("Feuil1")
      For i = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
        resultat = .Range("A" & i).Value
        resultat = resultat - 21
        .Range("B" & i).Value = resultat
      Next i
    End With
    End Sub
    1. Bonjour,

      Ca roule?

    2. @f894009

      salut f940009, fraichou, mais ça roule ;-)

      Bonne soirée