Insertion automatique d'une ligne des dates manquantes

TraderAS Messages postés 119 Statut Membre -  
TraderAS Messages postés 119 Statut Membre -
Bonjour,

je souhaite avoir une macro qui me permet d'insérer automatiquement les dates manquantes exemple:

colonne date

01/01/2013
02/01/2013
04/01/2013
05/01/2013
08/01/2013
09/01/2013
10/01/2013

par exemple il manque ici les dates du 03/01/2013, du 06/01/2013 et du 07/01/2013

je suis débutant avec le VB, mais je souhaite avoir un code qui calcul la différence entre deux date si c'est supérieur à 1 donc il doit automatiquement ajouter une ligne

merci

7 réponses

  1. scinarf Messages postés 1183 Statut Membre 294
     
    Bonjour,

    Voici un code qui devrai vous satisfaire, j'ai fais assez vite alors si vous avez besoin d'un coup de main pour comprendre ne pas hésiter

    Sub date_creation()
    Dim i As Integer
    Dim fin As Integer

    For i = 1 To 5000
    If Cells(i, 1) = "" Then fin = i: Exit For
    Next i

    For i = 1 To fin
    If Cells(i + 1, 1) <> Cells(i, 1).Value + 1 Then
    Rows(i + 1).Insert
    Cells(i + 1, 1) = Cells(i, 1) + 1
    End If
    Next i
    End Sub
    0
  2. TraderAS Messages postés 119 Statut Membre 1
     
    Wow scinarf ca marche trop bien
    merci
    0
  3. scinarf Messages postés 1183 Statut Membre 294
     
    Pas de soucis, hésitez pas si jamais il y a un soucis
    0
  4. TraderAS Messages postés 119 Statut Membre 1
     
    Mr scinarf

    en faite vu que j'utilise des dates de jours ouvrables, j'utilise la fonction "=SERIE.JOUR.OUVR (A1;1) pour que quand j'incrémente ca ne m'affiche que les jours jours ouvrables

    comment je peux introduire cette condition dans le code que vous m'avez livré

    merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. scinarf Messages postés 1183 Statut Membre 294
     
    Sub date_creation()
    Dim i As Integer
    Dim fin As Integer

    For i = 1 To 5000
    If Cells(i, 1) = "" Then fin = i: Exit For
    Next i

    For i = 1 To fin
    If Cells(i + 1, 1) <> SERIE.JOUR.OUVR (Cells(i, 1).Value,1) Then
    Rows(i + 1).Insert
    Cells(i + 1, 1) = Cells(i, 1) + 1
    End If
    Next i
    End Sub

    Essayer donc ca
    0
  7. TraderAS Messages postés 119 Statut Membre 1
     
    encore merci ca marche comme par magie ;)
    0
  8. scinarf Messages postés 1183 Statut Membre 294
     
    Logiquement il devrait ne pas marcher pour les jours fériés qui tombe sur un jour ouvré.

    Mais au moins l'erreur est connu. Donc faire attention.
    0
    1. TraderAS Messages postés 119 Statut Membre 1
       
      Salut Scinarf

      Je ne sais pas, mais j'ai testé le code que vous m'avez fourni avec le SERIE.JOUR.OUVR et ca marché:

      Sub date_creation()
      Dim i As Integer
      Dim fin As Integer


      For i = 1 To 30
      If Cells(i, 1) = "" Then fin = i: Exit For
      Next i

      For i = 1 To fin
      If Cells(i + 1, 1) <> SERIE.JOUR.OUVR(Cells(i, 1).Value, 1) Then
      Rows(i + 1).Insert
      Cells(i + 1, 1) = Cells(i, 1) + 1
      End If
      Next i
      End Sub

      mais je crois que j'ai quelques problèmes en faite pour la ligne
      If Cells(i + 1, 1) <> SERIE.JOUR.OUVR(Cells(i, 1).Value, 1) Then il y'a l'erreur d'éxecution '424' objet requis, je ne sais pas pourquoi ca ne marche pas sachant que ma colonne est composée de dates comm JJ/MM/AAAA

      MERCI
      0