VBA décalage colonne en fonction de critère
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

VBA décalage colonne en fonction de critère



  1. #1
    fleur2touraine

    VBA décalage colonne en fonction de critère


    ------

    Bonjour,

    Je dois rédiger une macro permettant l'importation de données d'un appareil de mesure au format csv en xls.
    Je suis totalement débutant et n'ai aucune formation en programmation.

    Mes données sont un % de chaque élément dans un matériau.
    J'ai réussi à importer mes données, cependant lorsque le % d'un élément est inférieur à la limite de détection de l'appareil, il remplit deux colonnes au lieu d'une: <0.0 sous l'élément correspondant, puis la valeur trouvée dans la colonne du prochain élément...
    Mes colonnes se retrouvent alors décalées.

    J'ai essayé un code qui: quand il trouve <0.0 dans la cellule, il copie la partie de la colonne+1 qu'il colle dans colonne-1, ainsi de suite jusqu'à x.
    Par contre impossible de passer aux mesures suivantes, ... si vous aviez une idée je suis preneur!!!

    macro.JPG


    Merci de votre aide!

    -----
    Images attachées Images attachées  
    Takahashi FC-100DF à f4.9 + Sony A7s astrodon

  2. #2
    cherbe

    Re : VBA décalage colonne en fonction de critère

    Bonjour
    Citation Envoyé par fleur2touraine Voir le message
    J'ai essayé un code qui: quand il trouve <0.0 dans la cellule, il copie la partie de la colonne+1 qu'il colle dans colonne-1, ainsi de suite jusqu'à x.
    Par contre impossible de passer aux mesures suivantes, ... si vous aviez une idée je suis preneur!!!
    Montre-nous ce code.
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  3. #3
    fleur2touraine

    Re : VBA décalage colonne en fonction de critère

    dim....
    Code:
    Dim LIGNE As Integer
    Dim LIGNE2 As Integer
    Dim Rang As Integer
    
    Rang = 1
    LIGNE = 3
    LIGNE2 = LIGNE + 3
    Lig = 1
    Sheets("Données").Activate
    Set PLAGE = Sheets("Données").Range(Cells(LIGNE), Cells(LIGNE + 3, 42))
    
    For Each cell In PLAGE
    
        If cell.Value = "<0.0" Then
                Rang = cell.Column
                Lig = cell.Row
                Range(Cells(Lig & Rang), Cells(Lig + 3 & Rang)).Select
                selection.ClearContents
                Rang = Rang + 1
                ActiveSheet.Range(Cells(LIGNE, Rang), Cells(LIGNE + 3, Rang)).Select
                selection.Cut
                Rang = Rang - 1
                Range(Cells(LIGNE, Rang), Cells(LIGNE + 3, Rang)).Select
                ActiveSheet.Paste
                Rang = Rang + 2
                ActiveSheet.Range(Cells(LIGNE, Rang), Cells(LIGNE + 3, Rang)).Select
                selection.Cut
                Rang = Rang - 1
                Range(Cells(LIGNE, Rang), Cells(LIGNE + 3, Rang)).Select
                ActiveSheet.Paste
                Rang = Rang + 2
                ActiveSheet.Range(Cells(LIGNE, Rang), Cells(LIGNE + 3, Rang)).Select
                selection.Cut
                Rang = Rang - 1
                Range(Cells(LIGNE, Rang), Cells(LIGNE + 3, Rang)).Select
                ActiveSheet.Paste
                Rang = Rang + 2
                ActiveSheet.Range(Cells(LIGNE, Rang), Cells(LIGNE + 3, Rang)).Select
                selection.Cut
                Rang = Rang - 1
                Range(Cells(LIGNE, Rang), Cells(LIGNE + 3, Rang)).Select
                ActiveSheet.Paste
                Rang = Rang + 2
    
    (etc etc.....)
    
    end if
    Lig = Lig+7
    next

    c'est crado je sais...
    Dernière modification par JPL ; 23/02/2017 à 00h16. Motif: ajout de la balise Code pour garder l'indentation
    Takahashi FC-100DF à f4.9 + Sony A7s astrodon

  4. #4
    cherbe

    Re : VBA décalage colonne en fonction de critère

    tu devrais écrire les noms de variables en Français pour éviter le risque qu'un nom de variable soit un mot clé.
    On va débuger ligne par ligne
    Citation Envoyé par fleur2touraine Voir le message
    Code:
    Range(Cells(Lig & Rang), Cells(Lig + 3 & Rang)).Select
    Pas bon ça. remplace l'esperluette par une virgule :
    Code:
    Range(Cells(Lig , Rang), Cells(Lig + 3 , Rang)).Select
    Sinon, exécute la macro pas à pas en appuyant sur la touche F8 du clavier pour chaque ligne de code.
    Tu verras où ça bloque.
    Dernière modification par cherbe ; 22/02/2017 à 10h59.
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  5. A voir en vidéo sur Futura
  6. #5
    fleur2touraine

    Re : VBA décalage colonne en fonction de critère

    super ça fonctionne!
    merci
    Takahashi FC-100DF à f4.9 + Sony A7s astrodon

Discussions similaires

  1. formule matricielle sous excell nombre max fonction d'une autre colonne
    Par luc_1049 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 05/02/2014, 18h12
  2. Moyenne d'une colonne en fonction de l'heure de relevé.
    Par felix_gdb dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 24/02/2013, 21h19
  3. Problème avec critère abel et série de fonction?
    Par invited0a2bbb0 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 24/01/2012, 20h34
  4. Décalage d'Einstein et décalage Doppler : Questions
    Par rommelus dans le forum Physique
    Réponses: 52
    Dernier message: 16/01/2012, 16h52
  5. calculer la longueur d'une vis en fonction de plusieur critère ?
    Par invite93153ac6 dans le forum Physique
    Réponses: 2
    Dernier message: 07/05/2009, 20h08