IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Combler date manquante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2017
    Messages : 38
    Par défaut Combler date manquante
    Bonjour le forum !

    Voila je viens vers vous car je galère un peu sur une macro en VBA.
    je traite 2 pages de données : sur chacune d'elle il y a une colonne comprenant les dates (dd/mm/yyyy hh:mm:ss) et une seconde comportant des vitesses de vents. Les mesures sont censées être prises toute les 10 minutes seulement voila je me suis aperçu qu'il manquait certaine dates.
    J'ai donc essayé de créer un petit programme qui lit les dates en colonne C et qui vérifie que la date ligne i est bien égale a la date ligne i-1 mais décalée de 10 min.


    je ne sais pas si je suis très clair alors voici mon exemple :

    C D
    27/05/2017 00:00 7.1
    27/05/2017 00:10 8
    27/05/2017 00:20 9.2
    27/05/2017 01:00 10

    L'objectif serait de rajouter 3 lignes comportant la date manquante

    j'ai commencé a codé mais le résultat n'est pas le bon : les lignes ne s’insèrent pas au bon endroit.
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Sub ajoute_date()
     
     
     
    DerniereLigne = Cells(Rows.Count, 3).End(xlUp).Row
     
    c = Cells(1, 3)
     
    'DateAdd("m", -3, Date())
     
    For i = 3 To DerniereLigne
        date_p10 = DateAdd("n", 10, CDate(Cells(i - 1, 3)))
        If CDate(Cells(i, 3)) <> date_p10 Then
            Rows(i - 1).Insert Shift:=xlDown
     
            Cells(i - 1, 3) = date_p10
        End If
    Next i
     
    End Sub
    Pouvez vous m'aider ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Ne serait-il pas plus simple de créer toutes tes dates puis via une rechercheV récupérer l'info quand il y en a?

    edit:
    Ce code insert les lignes au bonne endroit chez moi, MAIS tu as un problème de dernière ligne, comme tu rajoute des lignes la boucle s'arrête avant d'avoir parcouru tout le tableau.
    Il faudrait que tu calcules la différence entre la première et dernière date et en déduire le nombres de lignes à obtenir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Sub ajoute_date()
     
     
     
    DerniereLigne = Cells(Rows.Count, 3).End(xlUp).Row
     
    c = Cells(1, 3)
     
    'DateAdd("m", -3, Date())
     
    For i = 3 To DerniereLigne
        date_p10 = DateAdd("n", 10, CDate(Cells(i - 1, 3)))
        If CDate(Cells(i, 3)) <> date_p10 Then
            Rows(i ).Insert Shift:=xlDown
     
            Cells(i , 3) = date_p10
        End If
    Next i
     
    End Sub

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Lors de l'insertion de lignes, il faut faire la boucle en sens inverse. Voir ici pour des explications.
    De plus, pour définir un objet (différent d'une variable), on utilise Set :
    Mais de toute façon tu n'utilises pas c, plus loin dans ton code ... donc l'objet ne sert à rien ...

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par riaolle Voir le message
    Bonjour,
    Lors de l'insertion de lignes, il faut faire la boucle en sens inverse.
    Pour de la suppression oui, pour de l'insertion ça ne règle pas le problème, enfin pas entièrement, il faut rajouter un décalage d'indice.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2017
    Messages : 38
    Par défaut
    Merci à tout les deux pour vos réponses mais je ne suis pas tout à fait sur de comprendre :
    halaster08, je vois le problème du décalage mais je ne vois pas comment le résoudre :/
    riaolle , j'ai suivi le lien que tu m'as envoyé et j'ai modifié ma boucle de manière a partir de la fin mais cela ne règle pas le problème

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Ce code insert les lignes au bonne endroit chez moi, MAIS tu as un problème de dernière ligne, comme tu rajoute des lignes la boucle s'arrête avant d'avoir parcouru tout le tableau.
    Ca pourrait se régler en passant plutôt par une boucle While qu'une boucle For --> Tant que la cellule n'est pas vide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lister des dates manquantes entre 2 bornes
    Par SOLEDAD29 dans le forum SQL
    Réponses: 7
    Dernier message: 07/07/2009, 18h00
  2. Problème de dates manquantes
    Par stefsas dans le forum SAS Base
    Réponses: 4
    Dernier message: 14/10/2008, 15h41
  3. Ajout date manquante dans table
    Par Niazov dans le forum SAS Base
    Réponses: 3
    Dernier message: 01/10/2008, 15h38
  4. Erreur de conversion si date manquante
    Par Orakle dans le forum Sql Developer
    Réponses: 7
    Dernier message: 29/08/2007, 11h19
  5. Peut-on retracer des dates manquantes ?
    Par samlepiratepaddy dans le forum Access
    Réponses: 1
    Dernier message: 30/11/2005, 12h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo