Aide VBA Excel: insertion d'une nouvelle ligne

Résolu/Fermé
alciade - 30 mars 2015 à 09:46
 alciade - 3 avril 2015 à 09:14
Bonjour à tous,

Ca fait 3 jours que je perds mes cheveux et vu mon faible niveau j'appelle à l'aide... J'essaye d'analyser un jeu de donnée.

J'ai une feuille dans laquelle j'ai 2 colonnes. La colonne A: est le temps, minute après minute sur un mois. La colonne B: est une hauteur.
A la fin je dois avoir un fichier affichant seulement les hauteurs toutes les 30minutes.
Le soucis c'est qu'il me manque des données.
C'est pour cela que j'essaye d'insérer une ligne toute les minutes manquante en lui affectant NA dans la colonne en hauteur. Ensuite je récupère que les valeurs toutes les 30min.
J'ai déjà écrit un script dont je me suis inspiré d'un ancien post de ce forum (Aide VBA Excel : Inserer des lignes sous condition [Résolu]) mais ça ne marche pas.

Je vous mets le script si cela peut vous aider à mieux comprendre mon pb (dsl si il arrache les yeux à certains...) :

Sub test()

rCell As Range

For Each rCell In Sheets("Feuil1").Range("B3:B")
'Si valeur cellule égale B2 de Feuil10
If rCell = TMP0 Then
'Alors insérer une ligne en ligne 10 (par exemple)
With Sheets("Feuil1")
.Rows("rCell.Row+1").Insert Shift:=xlDown
'Complète la ligne insérée avec les données manquantes
.Cells(rCell.Row + 1, 1).Value = Sheets("Feuil1").Cells(rCell.Row, 1 + 0.02).Value
.Cells(rCell.Row + 1, 2).Value = "NA"
End With
End If

Next rCell

End Sub


3 réponses

michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280
30 mars 2015 à 10:05
Bonjour,
On gagnerait à la fois du temps et de la clarté en ayant le classeur sous les yeux...
Pour cela, mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Dans l'attente

0
Voici le lien avec le classeur : http://cjoint.com/?0CEk2QtDPLU
0
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280
Modifié par michel_m le 30/03/2015 à 13:58
Re,
bien reçu

tu dis que tu veux aboutir à un tableau indiquant les hauteurs toutes les 30 minutes soit un nombre de lignes de 48*30 (ou 31 ou 28-29)
pourquoi alors insérer des ces lignes?
en regardant ton envoi entre la ligne 7 et 8 on a un bond de 26 mn
le résultat final montrerait alors que la copie de la ligne 1,8,37 etc ?...

tu dis


Michel
0
Merci pour votre réponse :)
Oui je cherche à obtenir un tableau ayant un nombre de ligne de 48 (nb de fois qu'il y a 0 et 30 min dans 24h) * 30(nb de jour dans un mois).

J'insère des lignes toutes les minutes, pour remplir les données manquantes par NA et ensuite pouvoir sélectionner une ligne sur 31 (lignes qui correspond aux temps 0 et 30minutes).

Par exemple sur l'envoi il manque 26min entre la ligne 7 et 8 et le résultat final devrait m'afficher (sans compter l'en-tête) la ligne 1, une ligne que j'aurai rajouté daté du 04/12/2014 00:30 avec comme hauteur NA et ensuite la ligne 37 (04/12/2014 01:00) etc...

J'espère que j'ai répondu à votre question...
0
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280 > alciade
30 mars 2015 à 14:34
OK, Merci
Sois patient, je dois m'absenter 1 heure ou 2

Solution par VBA
0
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280
30 mars 2015 à 18:47
Désolé pour ce retard! : -\
regarderai demain
0
alciade > michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022

30 mars 2015 à 18:57
Pas de soucis merci beaucoup
0
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280
31 mars 2015 à 13:04
Bonjour
Hachement piègée les conditions, surtout avec des minutes à manipuler !
effectivement, terrible pour les cheveux mais commr j'en ai presque plus, ca a été... :-D
https://www.cjoint.com/?3CFnqvVg0u2
Tu dis...
0
:) Merci beaucoup grâce à vous il m'en reste encore quelques uns! ^^
J'ai pu l'appliquer pour les jeux de données et ça marche presque. Lorsqu'il manque des jours entiers de données, il n'insère pas des lignes au milieu... :S Comme par exemple entre la ligne 1048 et 1049 du fichier traité, il manque les jours 26/12 27/12 et 28/12.
Pour contourner la difficulté des manipulations avec les minutes je pensais travailler avec le nombre numérique propre à chaque date. Je ne sais pas ce que vous en pensez?
0
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280 > alciade
31 mars 2015 à 14:06
Effectivement, comme j'allais l'écrire, j'ai travaillé à l'"échelon minute (variable"top")
et donc je ne sais ce que ca donne au delà at qui plus est, des jours...
dans le code actuellement je transforme les erreurs minutes en numérique (top*top1)
pour retrouver les insrtants 30 min et 0 min taxés d'un NA
hélas! je ne sais pas quand je pourrai m'y remettre (examens médicaux en hôpital) mais on devrait y arriver avec les fonctions jour, heure et des boucles...je regarderaiet te tiens au courant pour ma disponibilité
0
Ok ca marche pas de soucis encore merci!
Bon courage pour vos examens médicaux
0
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280
2 avril 2015 à 07:15
Bonjour,
C'est reparti, patience !...
0
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280
2 avril 2015 à 10:03
Re,
ci joint maquette où j'ai mis sur la m^me lfeuille le tableau 0-30mn pour faciliter mes essais
j'arr^te aussi à la ligne 2060 (c'est très long à se balader sur la feuille !)
un point me chagrine : avant dernière mesure "NA" sautée !!!
si c'est indispensable je chercherai à t^te reposée...
Tu dis
https://www.cjoint.com/?3DckoD8HeXN
0