Parcourir deux colonnes dans un seul code

mimi -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -

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

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 

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
mimi
 

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

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

Bonjour,

Fichier avec le code que j'ai mis a dispo

 https://www.cjoint.com/c/MKvgNh7P0Dg

0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 

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

Bonjour,

Ca roule?

0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433 > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 

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

Bonne soirée

0