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 :

groupement de doublons sous vba excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut groupement de doublons sous vba excel
    Bonjour tout le monde,

    J'ai un tableau sous la forme

    Col1:Nature | Col 2:Type | Col 3:Statut

    Demande1 | Appro | En cours
    Demande1 | Appro | Traitée
    Demande2 | Fabrication | Encours
    Demande1 | Appro | Traitée
    Demande3 | Production | En cours

    Je souhaiterai regrouper les lignes par nature et type afin de connaitre le nombre de demande en cours, traitée.. Voici une illustration de ce que j'aimerai faire:

    Col1:Nature | Col2:Type | Col3:nbdemandeencours | nbdemandetraitée

    Demande1 | Appro | 1 | 2
    Demande2 | Fabrication| 1 | 0
    Demande3 | Production | 1 | 0

    Je débute en vb, et je ne sais pas vraiment comment faire...Donc si quelqu'un a une petite idée...

    Merci

  2. #2
    Membre actif
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Points : 246
    Points
    246
    Par défaut tableau croisé dynamique
    bonjour

    utilises un tableau croisé dynamique et tu obtiendras ce type d'infos
    (menu "Données" --> Rapport de tableau croisé dynamiqe)

    à plus

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci, mais je voulais savoir si il était possible de coder la procédure en vb..

  4. #4
    Membre confirmé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Points : 551
    Points
    551
    Par défaut
    Bonjour,
    pour faire cela je te conseil de:
    - créer une nouvelle feuille
    - parcourir la colonne "nature" et copier les colonnes 1 & 2 de la ligne courante dans la nouvelle feuille si la valeur de la colonne 1 n'existe pas encore dans celle-ci.
    - parcourir ta colonne "nature" pour chercher (avec la fonction "find" ou plus simplement avec un while)chaque éléments de la colonne 1 de la nouvelle feuille et, suivant la valeur de la colonne "statut", ajouter +1 à la colonne 3 ou 4 de la nouvelle feuille.

    c'est pas évident et cela fait faire pas mal de parcours mais je ne vois rien d'autre...

  5. #5
    Membre actif
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Points : 246
    Points
    246
    Par défaut
    bonjour

    je vais regarder la possibilité de stocker et exploiter les données dans un tableau de la forme : Demande(Num,Type,Statut)

    une question : est-ce que les données "Nature" sont toujours de la forme Demande1, Demande2, ... DemandeNum ?

    à plus

  6. #6
    Membre actif
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Points : 246
    Points
    246
    Par défaut
    voici le code que j'ai testé en considérant que tes données commencent en B4 sur 3 colonnes et sans lignes vides entre les données
    le tableau des résultats est écrit à partir de F4:I4
    à ta disposition si tu souhaites des précisions
    cordialement

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    Sub Analyse()
        Dim Dde(10, 3, 2)
        'tableau Dde(N° commande, Type,Statut)
        'N° commande 0 et Statut 0 = libellé des types
        ' Type 1 = Appro
        ' Type 2 = Fabrication
        ' Type 3 = Production
        'Statut 0 = indicateur de données saisies (0 ou 1)
        'Statut 1 = En cours
        'Statut 2 = traitée
     
        MaxNum = 0
     
        'debut du tableau des valeurs à analyser
        Lig = 4
        Col = 2
     
        Erase Dde
        Dde(0, 1, 0) = "Appro"
        Dde(0, 2, 0) = "Fabrication"
        Dde(0, 3, 0) = "Production"
     
        Do
            x = Cells(Lig, Col).Value
            If x = "" Then Exit Do
            NumDde = Right(x, Len(x) - 7)
            'hypothèse : x=Demandeyyy avec yyy = N° commande (=NumDde) 
            If MaxNum < NumDde Then MaxNum = NumDde
     
            Typ = Cells(Lig, Col + 1).Value
            Stat = Cells(Lig, Col + 2).Value
            Select Case Typ
                Case Is = "Appro"
                    If Stat = "En cours" Then
                        Dde(NumDde, 1, 1) = Dde(NumDde, 1, 1) + 1
                        Dde(NumDde, 1, 0) = 1
                    Else
                        Dde(NumDde, 1, 2) = Dde(NumDde, 1, 2) + 1
                        Dde(NumDde, 1, 0) = 1
                    End If
                Case Is = "Fabrication"
                    If Stat = "En cours" Then
                        Dde(NumDde, 2, 1) = Dde(NumDde, 2, 1) + 1
                        Dde(NumDde, 2, 0) = 1
                    Else
                        Dde(NumDde, 2, 2) = Dde(NumDde, 2, 2) + 1
                        Dde(NumDde, 2, 0) = 1
                    End If
                Case Is = "Production"
                    If Stat = "En cours" Then
                        Dde(NumDde, 3, 1) = Dde(NumDde, 3, 1) + 1
                        Dde(NumDde, 3, 0) = 1
                    Else
                        Dde(NumDde, 3, 2) = Dde(NumDde, 3, 2) + 1
                        Dde(NumDde, 3, 0) = 1
                    End If
            End Select
            Lig = Lig + 1
        Loop
     
        'affichage résultats
        Lig = 4
        Col = 6
     
        Cells(Lig - 1, Col).Value = "Nature"
        Cells(Lig - 1, Col + 1).Value = "Type"
        Cells(Lig - 1, Col + 2).Value = "En cours"
        Cells(Lig - 1, Col + 3).Value = "Traitée"
        For i = 1 To MaxNum
            Cells(Lig + i - 1, Col).Value = "Demande" & i
            For j = 1 To 3
                If Dde(i, j, 0) = 1 Then
                    Cells(Lig + i - 1, Col + 1).Value = Dde(0, j, 0)
                    Cells(Lig + i - 1, Col + 2).Value = Dde(i, j, 1)
                    Cells(Lig + i - 1, Col + 3).Value = Dde(i, j, 2)
                End If
            Next j
        Next i
     End Sub

Discussions similaires

  1. passage de parametre sous VBA excel
    Par raka200 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/12/2007, 12h07
  2. transformé cellule sous vba excel
    Par axamen dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/06/2007, 16h03
  3. [VBA-E] Comment créer un tableau sous vba excel
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2007, 10h52
  4. Arc de cercle sous VBA excel?
    Par fredieuric dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/11/2006, 14h58
  5. ptit probleme combobox sous vba/excel
    Par bandito dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/10/2006, 10h34

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