Parcourir deux colonnes dans un seul code

mimi -  
ccm81 Messages postés 11033 Statut Membre -

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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     

    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
    
    0
    1. mimi
       

      C'est le meme raisonement , mais ce code ne rempli aucune cellule de la colonne B !!

      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > 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

        0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     

    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
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       

      Bonjour,

      Ca roule?

      0
      1. ccm81 Messages postés 11033 Statut Membre 2 434 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         

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

        Bonne soirée

        0