Insérer la ligne de la date manquante

  • Initiateur de la discussion Initiateur de la discussion Trader
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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

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 ?
 
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é !
 
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

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
 
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
705
Réponses
4
Affichages
581
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
267
Retour