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 :

Regroupement des résultats [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Derrière l'écran
    Inscrit en
    Novembre 2012
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Derrière l'écran

    Informations forums :
    Inscription : Novembre 2012
    Messages : 165
    Par défaut Regroupement des résultats
    bonjour a tous

    je souhaite réduire mon code en mettant les lignes 5 à 7 en même temps.
    Mais je n'y arrive pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'macro test
    ligne = Range("A1048576").End(xlUp).Row
    For i = 2 To ligne
    For j = 5 To 30
    If Cells(i, j) < 0 Then Cells(i, j).Interior.Color = RGB(255, 255, 0)
    If Cells(i, j).Interior.Color = RGB(255, 255, 0) Then Cells(i, 31) = "A REVOIR"
    If Cells(i, j).Interior.Color = RGB(255, 255, 0) Then Cells(ligne + 1, j) = "X"
    Next j
    Next i
    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'macro test
    ligne = Range("A1048576").End(xlUp).Row
    For i = 2 To ligne
    For j = 5 To 30
    If Cells(i, j) < 0 Then Cells(i, j).Interior.Color = RGB(255, 255, 0) & Cells(i, 31) = "A REVOIR" & Cells(ligne + 1, j) = "X"
    Next j
    Next i
    mais je n'y arrive pas

    comment est-ce possible ?

    merci de votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    ? En quoi ça le réduirait ?
    Tout ce que ça fera c'est le rendre moins lisible, le mieux est l'ennemi du bien...
    Sinon pour mettre plusieurs instructions sur une ligne il faut les séparer par :
    intruction1 : instruction2 : etc

    A la limite tu peux grouper les 6 et 7 puisque c'est le même test et que ça ne donne pas une longueur imbuvable à lire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, j).Interior.Color = RGB(255, 255, 0) Then Cells(i, 31) = "A REVOIR": Cells(ligne + 1, j) = "X"
    Et, si ça correspond à ton besoin (pas d'autre lignes déjà colorées que tu devrais traiter), tu peux remplacer le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Cells(i, j).Interior.Color = RGB(255, 255, 0)
    ' par
    If Cells(i, j) < 0
    Donc avec la même condition qu'au-dessus (pas d'autre lignes déjà colorées que tu devrais traiter), les 3 tests étant identiques ça deviendrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, j) < 0 Then Cells(i, j).Interior.Color = RGB(255, 255, 0): Cells(i, 31) = "A REVOIR": Cells(ligne + 1, j) = "X"
    eric

  3. #3
    Membre confirmé
    Homme Profil pro
    Derrière l'écran
    Inscrit en
    Novembre 2012
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Derrière l'écran

    Informations forums :
    Inscription : Novembre 2012
    Messages : 165
    Par défaut
    merci beaucoup cela fonctionne en fusionnant les 3 lignes
    je ne connaissais pas le :

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par chipster62 Voir le message
    je ne connaissais pas le :
    C'est à utiliser avec BEAUCOUP de modération et uniquement dans des cas qui le justifie VRAIMENT.
    Parce qu'il n'y a rien de tel pour rendre un code illisible.

  5. #5
    Membre confirmé
    Homme Profil pro
    Derrière l'écran
    Inscrit en
    Novembre 2012
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Derrière l'écran

    Informations forums :
    Inscription : Novembre 2012
    Messages : 165
    Par défaut
    Pas de problème.
    La c'est parce que je dois casser ma variable J et mettre des conditions pour chaque colonne

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Rien n'empêche de l'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Cells(i, j) < 0 Then 
        Cells(i, j).Interior.Color = RGB(255, 255, 0)
        Cells(i, 31) = "A REVOIR"
        Cells(ligne + 1, j) = "X"
    End If

  7. #7
    Membre confirmé
    Homme Profil pro
    Derrière l'écran
    Inscrit en
    Novembre 2012
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Derrière l'écran

    Informations forums :
    Inscription : Novembre 2012
    Messages : 165
    Par défaut
    L'écrire OK avant mon code fonctionné avec la même condition pour chaque colonne mais depuis peu chaque colonne peut avoir une condition différente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Cells(i, 6) < 0
    If cells (i, 7) or Cells(i, 7) > 4
    If Cells(i, 8) <> ""
    etc....
    C'est pour cette raison que je voulais regrouper certains résultats (en then)

    car gagner 2 lignes sur 25 colonnes dans un code cela se prend.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Il faut quand même privilégier la facilité de lecture qui donne une compréhension plus rapide quand tu (ou un autre) te replonges dedans 6 mois plus tard.

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

Discussions similaires

  1. Regrouper des résultats de jointure
    Par trucmuche2005 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/07/2016, 01h01
  2. Regrouper des résultats par "blocs"
    Par ganguill dans le forum SQL
    Réponses: 3
    Dernier message: 16/06/2010, 17h18
  3. Regroupement et somme des résultats d'une requête union
    Par Tipstitou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/03/2009, 05h04
  4. Select, union, éliminer des résultats.
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/06/2004, 09h42
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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