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

Excel Discussion :

problème pour regrouper des valeurs de cellules tout en respectant l'ordre


Sujet :

Excel

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut problème pour regrouper des valeurs de cellules tout en respectant l'ordre
    Salut, je suis nouveau sur le forum et j'éspere que vous réussirez à m'aider ;

    Le principe est le suivant, je possède par exemple ces valeurs en colonne:
    23
    23
    23
    0
    0
    23
    0
    0
    0
    0
    0
    9
    0
    7
    7
    0

    et je souhaite regrouper par nombre d'apparitions tout en respectant l'ordre d'apparition, attention: quelque soit le nombre de "0" on remplacera par "0".
    Ce qui doit donner cela:

    3
    0
    1
    0
    1
    0
    2
    0


    Je vous remercie d'avance pour votre aide

  2. #2
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    Première question : Es-tu à l'aise avec le VBA et l'algorithme?
    si oui, il a une façon de le faire avec un "buffer"

    Deuxième question : Je suis curieux de savoir l'utilité que peut avoir ce genre de macro


    EDIT : Si
    7
    7
    7
    2
    2
    0
    3
    3
    3
    est-ce qu'on aura

    3 ou 5
    2 0
    0 3
    3
    (est-ce seulement les "0" qui différencie un des autres?)

  3. #3
    Membre éprouvé
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Points : 1 079
    Points
    1 079
    Par défaut
    Bonjour,

    Vite fait un petit code pour une macro à placer dans un module par exemple (valeurs en colonne A et résultat en colonne B)
    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
    Sub Liste()
    Dim NB_Lignes As Integer
    Dim I As Integer    ' Comptage lignes
    Dim X As Integer    ' Ecriture résultat
    Dim Compteur As Integer    ' Compteur valeurs
     
    X = 2
    Compteur = 0
     
    NB_Lignes = ActiveSheet().UsedRange.Rows.Count
        For I = 2 To NB_Lignes
            If Cells(I, 1) = 0 Then
                Compteur = 0
            Else
                If Cells(I, 1) <> Cells(I - 1, 1) Then
                    Compteur = 1
                Else
                    Compteur = Compteur + 1
                End If
            End If
            If Cells(I, 1) <> Cells(I + 1, 1) Then
                Cells(X, 2) = Compteur
                X = X + 1
            End If
        Next
    End Sub

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par drakkar_agfa Voir le message
    Bonjour,

    Première question : Es-tu à l'aise avec le VBA et l'algorithme?
    si oui, il a une façon de le faire avec un "buffer"

    Deuxième question : Je suis curieux de savoir l'utilité que peut avoir ce genre de macro


    EDIT : Si
    7
    7
    7
    2
    2
    0
    3
    3
    3
    est-ce qu'on aura

    3 ou 5
    2 0
    0 3
    3
    (est-ce seulement les "0" qui différencie un des autres?)

    Salut,

    Par rapport à la première question il est vrai que j'ai été plus formé au language en C plutôt qu'au VB.

    Pour ce qui est de la deuxième question, ce cas se retrouve dans mon projet Semestre 4 pour une entreprise. En fait je dois continuer un simulateur développé sous excel et qui se base sur la méthode des "lots". cette méthode se base sur le regroupements de certaines entités en respectant un ordre d'apparition (Je suis désolé c'est un peu compliqué, mais au moins ça prouve que ma question a un intérêt).

    3-

    Dans l'exemple ci dessus on aura:

    3
    2
    0
    3

    En fait il faut aussi compter les changements de numéros de lots;

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ouisansdoute Voir le message
    Bonjour,

    Vite fait un petit code pour une macro à placer dans un module par exemple (valeurs en colonne A et résultat en colonne B)
    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
    Sub Liste()
    Dim NB_Lignes As Integer
    Dim I As Integer    ' Comptage lignes
    Dim X As Integer    ' Ecriture résultat
    Dim Compteur As Integer    ' Compteur valeurs
     
    X = 2
    Compteur = 0
     
    NB_Lignes = ActiveSheet().UsedRange.Rows.Count
        For I = 2 To NB_Lignes
            If Cells(I, 1) = 0 Then
                Compteur = 0
            Else
                If Cells(I, 1) <> Cells(I - 1, 1) Then
                    Compteur = 1
                Else
                    Compteur = Compteur + 1
                End If
            End If
            If Cells(I, 1) <> Cells(I + 1, 1) Then
                Cells(X, 2) = Compteur
                X = X + 1
            End If
        Next
    End Sub
    A premiere vue ça marche plutôt bien... je vous tiens au courant.

    et MERCI encore


  6. #6
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Il est possible de le faire par formule Excel.

    Avec l'option "sous-totaux" mais au lieu de choisir "somme" tu n'as qu'a choisir "nombre". C'est un peu de bidouillage (effacer les lignes ensuite)

    Mais un code comme celui nonsurementpas (non non, de ouisansdoute) est plus "beau"

Discussions similaires

  1. [MySQL] Problème pour comparer des valeurs avec accent
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/12/2010, 08h36
  2. [XL-2003] Problème pour récuperer la valeur de cellules
    Par the-geut dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/04/2010, 10h01
  3. [AC-2007] Problème pour regrouper des valeurs
    Par christophe31 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/03/2010, 17h25
  4. Réponses: 6
    Dernier message: 28/12/2007, 22h34
  5. Problème pour forcer des valeurs d'un tableau
    Par n][co dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 25/04/2007, 20h59

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