• Initiateur de la discussion Initiateur de la discussion Pricer
  • 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 !

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.
 
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
201
Réponses
5
Affichages
406
Réponses
8
Affichages
551
Réponses
3
Affichages
248
Retour