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 :

Macro automatique traitement de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 5
    Par défaut Macro automatique traitement de données
    Bonjour la communauté,
    Je me permet de vous solliciter pour un coup de main sur pour réaliser une macro. Je pratiquais assidument il y a quelques années mais j'avoue qu'avec le temps et l'absence de pratique je ne sais plus vraiment par quel bout commencer...

    Je vous explique rapidement ce que je souhaite réaliser avec cette macro et le contexte :

    J'ai acquis un boitier accéléromètre 3D qui me permet d'enregistrer au format CSV des données de déplacement dans les 3 axes X,Y,Z à une fréquence donnée (400Hz, soit 400 mesures par secondes)
    Ce qui fait un paquet de données à digérer sur un cycle de 60 secondes...

    Une fois converti, mon tableau excel contient 4 colonnes (dans l'ordre: time,Ax,Ay,Az) et 24000 lignes de données dont seulement 1600 lignes consécutives m’intéressent mais ces 1600 lignes ne se situent pas systématiquement au mème endroit dans mes échantillonnage.

    Manuellement je procède ainsi :
    - je cherche la mesure max de la colonne B (correspondant à mon axe Ax) et je me déplace à la ligne correspondante que je répère avec "EQUIV(MAX(B:B);B:B;0)"
    - je descends de 800 lignes et je supprime toutes les autres qui sont en-dessous (elles ne me servent pas)
    - Idem dans l'autre sens... je remonte de 800 lignes à partir de la ligne de valeur max et je supprime tout ce qui est au-dessus (idem elles ne me servent pas)
    - résultat j'ai un tableau de 1600 lignes avec la ligne médiane correspondante au max de Ax ce qui me permet d'analyser ce qui se passe 2 secondes avant jusqu'à 2 secondes après avoir atteint le pic.
    - je fais un graphique avec ces données que je peux comparer ainsi avec mes autres échantillonnage.

    Voilà si quelqu'un a un peu de temps à perdre ce serait vraiment super.
    Au plaisir de vous lire
    JO

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    jo bonjour
    en colonne B tu cherche le max de la colonne pour un code qui existe en colonne A ??

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 5
    Par défaut
    Bonjour BENNASR,
    C'est sympa de te pencher sur mon pb, çà fait des heures que je tourne en rond
    Non, en fait l'idée est de trouver le max de la colonne B et de virer à partir de là un certain nombre de lignes de mon tableau
    Je sais trouver le n° de ligne qui correspond à mon max de ma colonne B avec ActiveCell.FormulaR1C1 = "=MATCH(MAX(C[-3]),C[-3],0)" mais je ne sais pas sélectionner automatiquement la ligne que me renvoie cette formule.

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    peux tu donner un exemple sur un petit fichier excel sans macro et avec 10 lignes de donnée

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2019
    Messages : 5
    Par défaut
    Voilà un exemple sur 20 lignes.
    Mon max de la colonne B se situe en ligne 10. Disons que je souhaite garder 4 lignes avant et 6 lignes après le max et supprimer toutes les autres lignes qui ne me servent à rien. Cela me permet de recentrer mon analyse vibratoire sur une plage bien précise.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    re JO
    ce n'est que du bricolage à tester sur une copie de ton travail et à amiliorer
    désolé c'est le weekend
    peut etre le lundi
    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
    22
    Sub testttt()
    Dim w1 As Worksheet
    Dim derlig As Long
    Set w1 = Worksheets("Feuil1")
    derlig = w1.Cells(Rows.Count, 1).End(xlUp).Row
    Application.ScreenUpdating = False
    Dim Plage As Range
    Dim Cel As Range
    Set Plage = w1.Range("B2:B" & derlig)
    For Each Cel In Plage
    If Cel.Value = Application.Max(w1.Range("B2:B" & derlig)) Then
    L = Cel.Row
    C = Cel.Column
    End If
    Next Cel
    For I = derlig To L + 5 Step -1
    Rows(I).Delete
    Next I
    For I = L - 5 To 2 Step -1
    Rows(I).Delete
    Next I
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 31
    Dernier message: 25/01/2018, 15h27
  2. [XL-2010] Une macro pour le traitement des données d'un rapport journalier
    Par JADIL dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/08/2015, 22h55
  3. [XL-2007] VBA : Macro pour actualiser des données automatiquement
    Par Devqnn dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/04/2015, 15h17
  4. [XL-2013] Problème de macro pour un traitement de données horizontal puis vertical
    Par minh86 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/12/2014, 18h04
  5. optimisation macro de traitement d'un fichier de données
    Par jalinn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2008, 21h00

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