Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Remplissage

P

Pricer

Guest
Bonjour tout le monde,
j'ai un fichier Excel composé de deux colonnes, la première contient des dates et la seconde la valeur d'un indice boursier qui correspond à cette date.
le problème c'est que samedi, dimanche et les jours fériés il n'y a pas de cotations donc pas de valeur.
pour de sraisons d'études statistiques j'ai besoin de l'historique complet des 4 dernières années (jours chômmés inclus), je travaille donc avec l'hypothèse suivante: la valeur de mon indice pour un jour férié est par défaut la valeur du dernier jour ouvré (ex. les valeurs de samedi et dimanche est par défaut la valeur de vendredi d'il est travaillé).
le problème c'est que avec pres de 1790 ligne il est dificile de passer ligne par ligne et d'insérer au moins deux lignes chaque semaine(correspondant aux samedi et dimanche) et puis faire du copier coller de la valeur du vendredi ..
en conclusion j'ai besoin d'une macro qui verfiera mon fichier, et une fois elle trouve une date manquante, elle insère la ligne correspondante et donne à la nouvelle cellule la valeur de la cellule qui se trouve juste au dessus.
Merci pour toute aide et bon week end à tous.
PS. j'ai un pb de téléchargement, donc si qlq un veut m'envoyer un fichier q'il me l'envoie sur cette adresse en attachement.
 
@

@+Thierry

Guest
Salut Pricer,

je dois partir, mais j'avais commencer un truc pour toi.... Mais ce n'est pas fini...

Option Explicit


Sub InsertionDatemanquante()
Dim i As Integer
Dim ii As Long
Dim iii As Long

Dim Dif As Long
Dim Plage As Range
Dim Cell As Range

Application.EnableEvents = False

Set Plage = Sheets("Feuil1").Range("A3:" _
& Sheets("Feuil1").Range("A65536").End(xlUp).Address)

For i = 4 To Plage.Rows.Count
If Cells(i, 1).Value > Cells(i - 1, 1).Value + 1 Then
Dif = Cells(i, 1).Value - Cells(i - 1, 1).Value - 1
If Dif >= 3 Then Exit Sub
If Dif = 1 Then
Cells(i, 1).EntireRow.Insert
Cells(i, 1).Value = Cells(i - 1, 1).Value + 1 'Dif

ElseIf Dif = 2 Then
For ii = 1 To 3
iii = i
Cells(i, 1).EntireRow.Insert
Cells(i, 1).Value = Cells(iii - 1, 1).Value + Dif
ii = ii + 1
iii = i + 1
Next ii
End If
i = i + 1
End If
Next i
Application.EnableEvents = True
End Sub

Je plantais encore pour réécrire les dates quand il manquait deux jours consécutifs... mais c'est sur la bonne voie... si tu peux t'en inspirer...

Bon Week End à tout le forum
@+Thierry
 

Discussions similaires

Réponses
8
Affichages
351
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…