Insérer la ligne de la date manquante

Trader

XLDnaute Nouveau
Bonjour,

j'ai un problème en ce qui concerne des dates manquantes dans mon fichier excel:



comme suit:
DATE ** Valeur
20/03/2011** 10
18/03/2011** 15
16/03/2011 ** 13
14/03/2011** 12

comme vous pouvez le constatez il manque les dates du 19,17 et le 15 Mars 2013, je souhaite les insérer automatiquement et copier coller la valeur de la date qui précéde c'est à dire et comme exemple:

===>##j'insére la ligne de la date du 19/03/2013 et je fais un copier coller de la valeur du 18/03/2013 et ains de suite ##

j'ai crée cee code mais ca n'a pas marché :

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


For i = 1 To 10
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

==> Erreur d'éxecution '424' objet recquis au niveau de cette ligne:
****If Cells(i + 1, 1) <> SERIE.JOUR.OUVR(Cells(i, 1).Value, 1) Then****
vu que je travail sur une semaine de 5 jours

et voici le document sur lequel je travail :

Ce lien n'existe plus

est ce que vous pouvez me donnez un coup de main a avoir le bon résultat

merci
 

vgendron

XLDnaute Barbatruc
Re : Insérer la ligne de la date manquante

Bonjour,
1ere chose: c'est juste une habitude à prendre
lorsque tu parcours ton fichier pour y insérer des lignes, il faut parcourir à partir du bas, sinon, tu peux etre sur qu'à chaque fois que tu insères une ligne, la boucle for i=1 to 10 te fais planter..
modifie ton code en conséquence.. et vérifie en faisant une éxécution pas à pas (F8)
et tiens nous au courant
 

vgendron

XLDnaute Barbatruc
Re : Insérer la ligne de la date manquante

est ce que tu peux reposter ton fichier sans passer par cijoint (j'y ai pas accès d'ici):
utilise le mode avancé de ce forum (sous la fenetre de saisie de message: en bas à droite)
 

Trader

XLDnaute Nouveau
Re : Insérer la ligne de la date manquante

Ok, après une recherche j'ai trouvé que je dois changer
If Cells(i + 1, 1) <> SERIE.JOUR.OUVR(Cells(i, 1).Value, 1) Then
par
If Cells(i + 1, 1) <> Application.workdays(Cells(i, 1).Value, 1) Then

mais il n'ya pas de résultat

vous pouvez consulter le fichier ;)
 

Pièces jointes

  • Test.xlsm
    22.3 KB · Affichages: 54
  • Test.xlsm
    22.3 KB · Affichages: 67
  • Test.xlsm
    22.3 KB · Affichages: 62

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Insérer la ligne de la date manquante

Bonjour
Ton calendrier semble bizarre ? parfois il y a plein de dates qui se suivent ( Ordonnancer") et puis ensuite ça saute des jours ?
Je ne connais pas ton projet mais quand t'as démarré l'appli : tu pouvais pas mettre ( à la paluche , ou vba) un calendrier entier dans ta colonne ; du 01/01/11 par exemple au 31/12/1013 ???
Ou alors , il y a des restrictions qui ne sont pas détaillées dans ton Post ?
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Insérer la ligne de la date manquante

Re
En fait aussi le "Monsieur" Y veut recopier AUSSI les valeurs précédentes si j'ai bien lu le début :
DATE ** Valeur
20/03/2011** 10
18/03/2011** 15
16/03/2011 ** 13
14/03/2011** 12

comme vous pouvez le constatez il manque les dates du 19,17 et le 15 Mars 2013, je souhaite les insérer automatiquement et copier coller la valeur de la date qui précéde c'est à dire et comme exemple:

===>##j'insére la ligne de la date du 19/03/2013 et je fais un copier coller de la valeur du 18/03/2013 et ains de suite ##

Donc , je pense qu'il faut ajouter :
Cells(i, 2) = Cells(i + 1, 2)
avant :
i = i + 1
J'ai testé !
 

Trader

XLDnaute Nouveau
Re : Insérer la ligne de la date manquante

Bonjour à tous,

j'ai testé ce code, et j'ai pris en compte la partie valeur , enfin pas de bug mais le code ne fait que tourner en rond et il ne s'arrête pas
voici le code:

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

fin = Cells(Rows.Count, 1).End(xlUp).Row
For i = fin - 1 To 1 Step -1
If Cells(i + 1, 1) <> WorksheetFunction.WorkDay(Cells(i, 1).Value, 1) Then
Rows(i + 1).Insert
Cells(i + 1, 1) = WorksheetFunction.WorkDay(Cells(i, 1).Value, 1)
Cells(i + 1, 2) = Cells(i, 2)
i = i + 2
End If
Next i
End Sub

il manque un astuce, sachant que j'ai travaillé que sur des dates ouvrables, ordonnées en ordre croissant
ci joint le fichier surlequel j'ai travaillé
 

Pièces jointes

  • Test.xlsm
    22.4 KB · Affichages: 53
  • Test.xlsm
    22.4 KB · Affichages: 61
  • Test.xlsm
    22.4 KB · Affichages: 49

vgendron

XLDnaute Barbatruc
Re : Insérer la ligne de la date manquante

Bonjour,
essai avec ce code
Code:
Sub date_creation()
Dim i As Integer
Dim fin As Integer

fin = Cells(Rows.Count, 1).End(xlUp).Row
For i = fin To 2 Step -1
    If Cells(i - 1, 1) <> WorksheetFunction.WorkDay(Cells(i, 1).Value, 1) Then
        Rows(i).Insert
        Cells(i, 1) = WorksheetFunction.WorkDay(Cells(i + 1, 1).Value, 1)
        Cells(i, 2) = Cells(i + 1, 2)
        i = i + 1
    End If
Next i
End Sub
 

Trader

XLDnaute Nouveau
Re : Insérer la ligne de la date manquante

Re

Quand j'ai voulu testé ca n'a marché que sur une plage de données qui composée de presque 20 lignes mais quand j'ai essayé de l'appliquer sur des données composées de presque 300 lignes, et où il manque des dates, il a commencé à m'ajouter des dates futures, au dela de 2013, c'est à dire il a ajouté les dates de 2014, 2015 etc

il manque une petite rectif afin de limiter son champs d'action qu'à seulement les données disponibles ni plus ni moin peut être une variable k qui varie entre 1 et le nombre de lignes

ci joint le fichier qui contient un grand nombre de lignes
 

Pièces jointes

  • Test.xlsm
    36.6 KB · Affichages: 53
  • Test.xlsm
    36.6 KB · Affichages: 60
  • Test.xlsm
    36.6 KB · Affichages: 69
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87