Insertion automatique de lignes_pas de temps

Bonjour,

je ne suis pas très experte des macros sur Excel, et je pense que j'en ai besoin pour l'insertion de lignes d’après ce que j'ai vu en parcourant ce forum..

J'ai ici un fichier de meteo france, avec en B : DAT, une succession de chiffres qui correspondent à l'année-mois-jour-heure-minute-seconde.

ce sont des données calculées toutes les 6 minutes, sauf quand il ne pleut pas..

J'aimerais faire la chose suivante :

avoir une ligne toutes les 6 minutes, c'est à dire garder les lignes existantes, et intercaler des lignes dont la valeur dans la colonne D = 0

Est ce que c'est possible ?

merci !!

Bonjour,

On peut faire le contrôle des 6 minutes sur la colonne H.

Sinon on intercalle une ligne avant ou après les 6 minutes ?

Dans le fichier, la colonne D ne comporte aucune donnée à 0

Amicalement

Bonjour Dan,

l'idée serait d'ajouter une ligne, ou des lignes, à chaque fois que le pas de temps entre deux lignes n'est pas égal à 6 (cf colonne O).

j'ai modifié mon fichier excel afin que ce soit plus compréhensible ; à chaque ligne, j'ai indiqué dans la colonne Q le nombre de lignes qu'il faudrait ajouter entre cette ligne et celle du dessus.

en effet, la colonne D ne contient aucune donnée à 0, et c'est bien mon problème, je souhaiterais avoir des lignes, qui ont les mêmes attributs que les autres, avec simplement une valeur (mm) de 0, dans la colonne D.

Bonsoir à tous,

Pour insérer les lignes

Sub AjouteLigne()
Dim Lg&, i&, x%, y%
    Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row
    Application.ScreenUpdating = False

    For i = Lg To 2 Step -1
        If Cells(i, "o") > 6 Then
        x = Cells(i, "o") / 6 - 2                       'nombre lignes à insérer
        Range(Cells(i, "o"), Cells(i + x, "o")).EntireRow.Insert
        Range(Cells(i, "d"), Cells(i + x, "d")) = 0     'met 0 en colonne "D"
        End If
    Next i
End Sub

Amicalement

Claude

34emeuh-insert.xlsm (186.86 Ko)

Re,

Comme Dubois te propose quelque chose, vois si cela correspond à ta demande avant que je ne reprenne le sujet

Amicalement

je rentre tout juste de 2 jours de terrain ; mes deux post sont liés au fait que je mène mon combat sur plusieurs fronts à la fois !

merci pour vos réponses en tout cas !

je vais tout essayer tout ça...

Bonjour,

merci pour le code, ça marche très bien !

cependant pour les dates, j'ai mis une colonne en format date, que j'ai "tirée" pour avoir une nouvelle date à chaque ligne (date 1), mais au bout d'un moment il y a un décalage et à la fin de l'année on obtient des jours et heures différentes ...

pour arranger cela j'ai une idée, est il possible d'insérer dans la macro un code qui calcule directement entre deux dates (date2 correspondant aux lignes "complétées"), des dates espacées de 6 minutes, sachant que normalement le nombre de lignes vides entre deux dates est un toujours multiple de 6 donc il ne devrait pas y avoir de soucis.. mais je ne sais pas comment le coder !

Bonjour,

j'ai ouvert un poste pour me faire aidé sur les formules

https://forum.excel-pratique.com/excel/formule-date-et-heure-t23472.html

J'ai repris ton 1er fichier,

à mon avis, les colonnes "G à Q" ne servent plus à rien

les formules données par vbe_new et thibo, renvoient directement la date et l'heure

de la colonne "B"

ici, la macro insère les lignes manquantes et ajoute les dates (au pas de 6 minutes)

on pourrait aussi supprimer la colonne "B" de départ

à voir

Amicalement

Claude

36emeuh-insert-2.xlsm (42.56 Ko)

Bonjour,

Et merci pour la macro elle fonctionne très bien ! Pour les dates c'est OK je pense avoir réussi.

Mais pour la suite, je galère encore vraiment, j'ai un nouveau fichier à créer, cette fois je veux créer un ficher non pas pas pas de temps de 6 minutes mais par pas de temps d'une heure !

Si j'ai bien compris la logique des macros, mais je ne sais pas les rédiger... il faudrait "fusionner" les lignes pour lesquelles les valeurs dont les colonnes "heure" , "jour" et "année" sont les mêmes. C'est à dire faire la somme des valeurs (mm) de la colonne D, pour l'ensemble des colonnes fusionnées, et mettre la date, qui se limitera à année-mois-jour-heure.

est ce que c'est faisable ?

je suis désolée je vous en demande beaucoup !!!

emeuh

-- 23 Mai 2011, 17:12 --

avec le fichier c'est mieux !

Bonsoir,

Comme pour le fichier précédent, les colonnes "G à Q" ne servent à rien

Sub AjouteLigne() '--- Complète les relevés (toutes les heures)---
'Macro par Claude Dubois pour "emeuh" Excel-Pratique le 23 Mai 2011
Dim Lg&, i&, x!, A!, Z!
    Application.ScreenUpdating = False
    Lg = Range("a65536").End(xlUp).Row

    If Application.CountA(Columns("e")) <> _
       Application.CountA(Columns("d")) Then                           'évite répétition macro

            '--- formule vba-new ---
            Range("e2:e" & Lg) = _
            "=(DATEVALUE(MID(b2,7,2)& ""/"" & MID(b2,5,2) & ""/"" & LEFT(b2,4))+TIMEVALUE(LEFT(RIGHT(b2,6),2)&"":""&00&"":""&00))*1"
                Z = 0.04166667 '60 minutes
        For i = Lg To 3 Step -1
                A = Cells(i, "e") - Cells(i - 1, "e")

            '--- cumule ---
            If A = 0 Then
                Cells(i - 1, "d") = Cells(i - 1, "d") + Cells(i, "d")
                Cells(i, "d").ClearContents
            End If
            '----
          If A > Z Then
                x = (A / Z) - 2                                         'nombre lignes à insérer

            '--- insère lignes ---
            Range(Cells(i, "e"), Cells(i + x, "e")).EntireRow.Insert
            Range(Cells(i, "d"), Cells(i + x, "d")) = 0                 'met 0 en colonne "D"
            Range(Cells(i, "e"), Cells(i + x, "e")).FormulaR1C1 = "=R[-1]C+0.04166667"
          End If
        Next i
            Columns("e") = Columns("e").Value                           'en dur
            Lg = Range("a65536").End(xlUp).Row

            '--- supprime lignes (vides en "d") ---
            Range("d2:d" & Lg).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End If
End Sub

Amicalement

Claude

merci beaucoup !

en fait les colonnes de G à Q me sont utiles pour la suite des évènements, j'utilise ce fichier dans R par la suite..!

N'oublie pas la petite formalité

Rechercher des sujets similaires à "insertion automatique lignes pas temps"