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 :

Mise en forme des données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 39
    Par défaut Mise en forme des données
    Bonjour à tous,

    Voici mon problème :

    J'ai une feuille ayant comme étiquettes la première ligne et la première colonne. Pour chaque couple (ligne, colonne) correspond une valeur numérique.
    Je souhaiterai filtrer chacune des colonnes en ne retenant que les valeurs qui sont supérieures à un certain seuil ainsi que l'étiquette qui lui est associée en 1ere colonne.
    J'ai réussi à adapter un code que j'ai trouvé sur le net :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub FiltreSupZero()
     
    Dim LigneTab As Integer '1ère ligne des données du tableau
    Dim LigneResult As Integer '1ère ligne des données du résultat
    Dim NbLignes As Integer 'nb de lignes du tableau
    Dim LigneEcriture As Integer 'ligne d'écriture du résultat
    Dim NbColonnes As Integer 'nb de colonnes du tableau
     
    LigneTab = 2
    LigneResult = 20
    NbLignes = 11
    NbColonnes = 3
     
    'Boucle sur les colonnes
    For c = 2 To NbColonnes
     
    LigneEcriture = LigneResult
     
        'Boucle sur les lignes
        For L = 0 To NbLignes - 1
     
     
        If Cells(LigneTab + L, c) > 1 Then
        Cells(LigneEcriture, 2 * c).Value = Cells(LigneTab + L, 1).Value
        Cells(LigneEcriture, (2 * c) + 1).Value = Cells(LigneTab + L, c).Value
        LigneEcriture = LigneEcriture + 1
        End If
     
        Next L
     
     
    Next c
     
    End Sub
    Ce code fait le boulot par contre l'exploitation des résultats n'est pas pratique. Le résultat de la macro s'affiche a partir de la ligne 15.
    Celle ci affiche les groupes ainsi que leur sensibilité ayant une valeur > 1 pour chacune des lignes concernées.

    Pour que cela soit plus explicite, je joins un classeur d'un cas simplifié. Le résultat que je souhaite atteindre se trouve dans la deuxième feuille. Pouvez m'aider s'il vous plait ?
    Merci d'avance pour votre aide

    mise en forme.xlsm

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    Bonjour,

    Quelque chose de ce genre:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    Option Explicit
     
    Sub FiltreSeuil()
       Dim kC As Long, kL As Long
       Dim LigneTab As Integer       '1ère ligne des données du tableau
       Dim LigneResult As Integer    '1ère ligne des données du résultat
       Dim NbLignes As Integer       'nb de lignes du tableau
       Dim LigneEcriture As Integer  'ligne d'écriture du résultat
       Dim NbColonnes As Integer     'nb de colonnes du tableau
       Dim Seuil As Single
       '---
       LigneTab = 2
       LigneResult = 15
       NbLignes = 5
       NbColonnes = 4
       Seuil = Cells(1, 7)           '--- valeur du seuil en cellule G1
       LigneEcriture = LigneResult
       '--- Boucle sur les colonnes
       For kC = 2 To NbColonnes
          '--- Boucle sur les lignes
          For kL = LigneTab To LigneTab + NbLignes - 1
             If Cells(LigneTab + kL, kC) >= Seuil Then
                Cells(LigneEcriture, 1) = Cells(1, kC)
                Cells(LigneEcriture, 2) = Cells(kL, 1)
                Cells(LigneEcriture, 3) = Cells(kL, kC)
                LigneEcriture = LigneEcriture + 1
             End If
          Next kL
       Next kC
    End Sub
    Bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise en forme des données sous Excel
    Par mhamedbj dans le forum Cognos
    Réponses: 2
    Dernier message: 27/08/2011, 17h00
  2. [2008] Mise en forme des données
    Par Valochette dans le forum SSRS
    Réponses: 2
    Dernier message: 12/05/2011, 10h34
  3. [MySQL] probleme de mise en forme des données
    Par arakiri dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/06/2007, 12h01
  4. [MySQL] Mise en forme des données
    Par Silborn dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/12/2006, 19h00
  5. Réponses: 6
    Dernier message: 16/06/2006, 15h20

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