Formule excel s'ajustant date du jour (ou vba

Résolu
Bonjour,

Voici une question dont je n'arrive pas à imaginer la réponse

J'ai en colonne G : une date appellé date de départ
J'ai en colonne H : un chiffre appellé temps de voyage
J'ai en colonne I : une date appellé date d'arrivée
Et sur la cellule N1 la date du jour par la formule aujourdhui()

Les bases étant fixé, je vous expose mon problème avec un exemple.

G = 04/06/2012 ; H = 27 ; I = 01/07/2012

Mais je voudrais que si I deviens inférieur à N1 (c'est à dire si I devient inférieur à la date du jour) alors G = I +1 soit 02/07/2012, H ne change pas et I devient 29/07/2012 et ainsi de suite.

Et je ne vois pas trop comment m'y prendre en fait...

3 réponses

  1. Voici un fichier exemple avec un essai de formule infructueux.

    Merci de votre retour

    https://www.cjoint.com/?BFetOI9a2Rn
    0
    1. Pouvez vous m'indiquer svp , si cela est impossible ou incompréhensible ?
      Cela serait bien pour savoir si je dois m'orienter vers autre chose

      Merci d'avance
      0
  2. Bonjour,

    En VBA

    Code a mettre dans la feuille

    'Principe, ajoutez la boucle pour toutes les lignes
    Private Sub xWorksheet_SelectionChange(ByVal Target As Range)
      If Range("I1") < Range("N1") Then
        Range("G1") = Range("I1") + 1
        Range("I1") = Range("G1") + Range("H1")
      End If
    End Sub
    


    Bonne suite
    0
    1. Bonjour,

      Je ne suis toujours pas au point au niveau des boucles...

      J'ai essayer de faire cela mais il me semble que c'est du grand n'importe quoi...

      Private Sub xWorksheet_SelectionChange(ByVal Target As Range)
        
        Dim Derlig As Long, i As Long,
          Derlig = Range("G" & Rows.Count).End(xlUp).Row
              With Sheets("HS")
      
          'If Range("I2") < Range("M1") Then
          For i = 2 To Derlig
          If .Cells(i, 9) < .Cells(1, 13) Then
                  'Range("G2") = Range("I2") + 1
                  .Cells(i, 7) = .Cells(i, 9) + 1
                  'Range("I2") = Range("G2") + Range("H2")
                  .Cells(i, 9) = .Cells(i, 7) + Cells(i, 8)
      
          End If
      Next i
        
      End Sub
      0
    2. Bonjour,

      Je regarde ce qui ne va pas. Par contre il fallait enlever le x devant Worksheet_.......
      0
  3. Re,

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      
      Dim Derlig As Long, i As Long
        
        With Sheets("HS")
          Derlig = .Range("G" & Rows.Count).End(xlUp).Row
          For i = 2 To Derlig
            'If .Range("I" & i) < .Range("M" & i) Then
            ' ou
            If .Cells(i, 9) < .Cells(1, 13) Then
              .Range("G" & i) = .Range("I" & i) + 1
              ' ou
              '.Cells(i, 7) = .Cells(i, 9) + 1
              .Range("I" & i) = .Range("G" & i) + .Range("H" & i)
              ' ou
              '.Cells(i, 9) = .Cells(i, 7) + .Cells(i, 8)
            End If
          Next i
        End With
    End Sub


    Cela devrait aller.
    0
    1. Merci bien
      Cela marche nickel !

      J'ai simplement du déplacer le code dans sur l'évènement click du button dans le userform en question car cela m'affichait un probleme avec le code dans la feuille.

      Cordialement
      0