Insérer des lignes dans une suite de données à trous et remplacer des sous conditions

Serge

XLDnaute Nouveau
Bonjour à tous,

Je suis confronté à un sérieux problème depuis ce matin que je n'arrive pas à résoudre.
Voilà j'ai un fichier de relevés de vitesses et directions de vents qui contient des données sur deux ans par intervalles d'une demi heure avec des données manquantes. J'ai deux objectifs principaux:

1: ajouté automatiquement une ligne à chaque donnée manquante pour toute la colonne

2: uniformiser le format des dates

-> je donne un exemple, j'ai des dates du type 199710141730 pour 14 Octobre 1997 à 17h30 ou encore 199710141800 pour 14 Octobre 1997 à 18h00

et j'en ai du type 199710141529 pour 14 Octobre 1997 à 14h29 ou 199710141559 pour 14 Octobre 1997 à 15h59

J'aimerai remplacer les "29" et "59" par 30 (ca j'ai trouvé) mais surtout par 0 et ajouté une heure pour les 59 (je n'y parviens pas)

(J'en ai aussi qui finissent par "19" et "49" que je voudrais changer en "30" et "00")

Mon idée était de séparer les 4 derniers chiffres en 2 colonnes et de faire un remplacement sous condition de type (pour si la cellule C2 contient le 59 ou 29 en question):

Si C2=59
Si B2 est compris entre 0 (heure) et 22 (heure)
C2<-0
B2<-B2+1
Si B2=23 (heure)
B2<-0
A2<-A2+1 (jour)

(en faisant l'hypothèse que je n'arrive jamais en fin de mois si vous voyez ce que je veux dire)

Mon problème c'est que je ne m'y connais pas du tout en langage VBA et je pense que ca va me prendre beaucoup de temps si je dois m'y mettre. Est ce que quelqu'un aurait une solution?

Merci,

Serge
 

Pièces jointes

  • Wind data.xlsx
    292.1 KB · Affichages: 70

Victor21

XLDnaute Barbatruc
Re : Insérer des lignes dans une suite de données à trous et remplacer des sous condi

Bonjour, Serge.

Code:
=SI(DROITE(A2;2)="59";GAUCHE(A2;9)&GAUCHE(DROITE(A2;3);1)+1&"00";B2)
transformera 199710141759 en 199710141800A adapter en fonction des arrondis que tu souhaites.
 

JNP

XLDnaute Barbatruc
Re : Insérer des lignes dans une suite de données à trous et remplacer des sous condi

Bonjour Serge et bienvenue :),
je te proposerais plutôt de revenir à la notation normale (14/10/1997 17:30) avec cette formule qui arrondira les minutes au 1/4 d'heure près
Code:
=DATE(STXT(A1;1;4);STXT(A1;5;2);STXT(A1;7;2))+TEMPS(STXT(A1;9;2);ARRONDI(STXT(A1;11;2)/15;0)*15;0)
Bonne soirée :cool:
 

JNP

XLDnaute Barbatruc
Re : Insérer des lignes dans une suite de données à trous et remplacer des sous condi

Re :),
Et pour tenir compte du passage à minuit
Code:
=DATE(STXT(A8;1;4);STXT(A8;5;2);STXT(A8;7;2))+TEMPS(STXT(A8;9;2);ARRONDI(STXT(A8;11;2)/15;0)*15;0)+SI(ET(TEMPS(STXT(A8;9;2);ARRONDI(STXT(A8;11;2)/15;0)*15;0)=0;STXT(A8;11;2)*1>15);1)
Bon courage :cool:
 

Serge

XLDnaute Nouveau
Re : Insérer des lignes dans une suite de données à trous et remplacer des sous condi

Super! :)

Je vais essayer ça tout de suite. Merci pour vos réponses!

Vous avez une idée pour mon premier problème?

Par exemple si j'ai
199710031030
199710031100
199710031130
199710031230
199710031300

Est-ce possible de détecter qu'il manque un élément dans ma "suite" et insérer une ligne à cet endroit (voir ci-dessous)

199710031030
199710031100
199710031130

199710031230
199710031300

Merci beaucoup pour votre aide!

Serge
 

JNP

XLDnaute Barbatruc
Re : Insérer des lignes dans une suite de données à trous et remplacer des sous condi

Re :),
Avec tes données depuis A8, ma formule depuis B8, en C8 à tirer vers le bas
Code:
=SI(ARRONDI(B9-B8;5)=ARRONDI(TEMPS(0;30;0);5);"";"Attention")
Il te restera plus qu'à insérer des lignes là où il faut :p...
Si vraiment tu as 20 000 lignes à traiter, ça pourrait être fait par VBA, mais il va falloir tester combien de lignes sont manquantes :rolleyes:...
Bonne journée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 941
Membres
103 404
dernier inscrit
sultan87