Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 16h16   #1
Invité de passage
 
Homme
Consultant fonctionnel
Inscription : novembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Conseil

Informations forums :
Inscription : novembre 2011
Messages : 5
Points : 0
Points : 0
Par défaut Compter des doublons selon un double critère

Bonjour à tous, malgré tous mes efforts pour résoudre ce cas, je ne trouve pas de solution et fait donc appel aux experts que vous êtes!

Voici mon cas:

J'ai 2 colonnes : dans la première des projets, dans la seconde des modifications possible sur ces projets.

Je souhaite compter les doublons de projet (ca je sais faire), mais ne considérer comme doublons que les projets ayant le même type de modifications. Il s'agit donc de compter les couples 'projet-type de modifications'
Le nom des projets peut évoluer et varier, le type de modifications non.

J'ai essayé de tourner dans tous les sens les fonctions sommeprod et nb.si, mais sans succes...

Je vous joints un fichier excel simplifié pour plus de clarté.

Merci pour votre aide!
Fichiers attachés
Type de fichier : xls problème1.xls (20,5 Ko, 5 affichages)
jberto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h44   #2
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Bonjour,

Tu peux utiliser un filtre avancé :

Action : filtrer la liste sur place
Plage : $C$1:$E$2
Zone de critères : $C$1:$D$2
cocher extraction sans doublon.

Puis récupérer le résultat avec la formule =SOUS.TOTAL(3;C6:C11).

Cordialement.

EDIT :
Je suis allé un peu trop vite .
pour compter les doublons de projet et ne considérer comme doublons que les projets ayant le même type de modifications, il ne faut pas cocher extraction sans doublon et récupérer le résultat avec la formule =SOUS.TOTAL(3;C6:C11) - 1.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 16h59   #3
Invité de passage
 
Homme
Consultant fonctionnel
Inscription : novembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Conseil

Informations forums :
Inscription : novembre 2011
Messages : 5
Points : 0
Points : 0
Merci pour ce retour rapide, mais je ne parviens pas à tout saisir. Quels critères j'utilise ?
Sachant que ma liste de projet est variable...
jberto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h12   #4
Invité de passage
 
Homme
Consultant fonctionnel
Inscription : novembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Conseil

Informations forums :
Inscription : novembre 2011
Messages : 5
Points : 0
Points : 0
Si j'ai bien compris, ce que tu me proposes, c'est de faire le filtre avancé sur la plage $C$5:$E$11
et la zone de critère sur $C$5:$D$11

le résultat obtenu ne semble pas correspondre puisque si je sélectionne un projet AA et lui affecte 2 types de modifications différentes, il comptabilise toutefois un doublon.
De plus cette méthode ne me permet pas de différencier s'il s'agit de doublon du type de modification "planning" ou "stratégie"

Peut etre ai-je mal compris la solution ?

Cordialement
jberto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h24   #5
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Je joints un exemple du résultat obtenu.

Par contre, pour effectuer le filtre, il faut que tu saches suivant quel critère tu souhaites faire le filtre.

Si tu veux lister et compter tous les couples doublons, c'est une autre histoire !

Cordialement.
Fichiers attachés
Type de fichier : xls Copie de problème1.xls (20,5 Ko, 6 affichages)
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h32   #6
Invité de passage
 
Homme
Consultant fonctionnel
Inscription : novembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Conseil

Informations forums :
Inscription : novembre 2011
Messages : 5
Points : 0
Points : 0
Oui je suis plutot dans l'idée de compter tous les doublons..

En gros mon résultat devrait être par exemple :

Doublons modification planning = 2 projets concernés
Doublons modification stratégie = 1 projet concerné

et pourquoi pas idem sur les triplons, quadruplons...
jberto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 16h40   #7
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Bonjour,

Faute de formule miracle, je peux te proposer un code VBA qui effectue la recherche de doublons pour chaque couple projet/type de modification et calcule leur nombre.

Code :
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
Option Explicit
Option Base 1
Private Sub CommandButton1_Click()
'Déclaration des variables
Dim DerLig As Long, i As Long, j As Long, Increment As Long
Dim var1 As String, var2 As String
Dim Cptr As Integer
Dim Tablo()
'Déclaration des constantes
Const LigneDeb As Byte = 6 'Ligne de début d'affichage des données (hors en-tête)
Const ColProjet As Byte = 3 'Colonne du projet (colonne C)
Const ColType As Byte = 4 'Colonne du Type (colonne D)
Const ColCouple As Byte = 5 'Colonne du Couple projet-type (colonne E)
Const ColNbDoublon As Byte = 6 'Colonne du nombre de doublons (colonne F)
 
    With Worksheets("Feuil1")
        'Recherche de la dernière ligne renseignée dans la colonne projet
        DerLig = .Cells(.Rows.Count, ColProjet).End(xlUp).Row
        'Effacement des cellules contenant les résultats de la recherche de doublons
        .Range(.Cells(LigneDeb, ColCouple), .Cells(DerLig, ColNbDoublon)).ClearContents
        'Copie de l'ensemble des projets de types de projet dans un tableau
        Tablo = .Range(.Cells(LigneDeb, ColProjet), .Cells(DerLig, ColType)).Value
        'Redimensionnement du tableau pour création d'une colonne de marquage des doublons
        ReDim Preserve Tablo(1 To UBound(Tablo, 1), 1 To UBound(Tablo, 2) + 1)
        '******* Recherche des doublons
        For i = 1 To (DerLig - LigneDeb)
            'Concaténation du nom de projet et du type (chaine de référence)
            var1 = Tablo(i, 1) & " " & Tablo(i, 2)
            For j = i + 1 To (DerLig - LigneDeb + 1)
                'Concaténation du nom de projet et du type (chaine comparée)
                var2 = Tablo(j, 1) & " " & Tablo(j, 2)
        '******* Marquage des doublons
                'Si les 2 couples projet-type sont identiques et que le couple comparé n'est pas marqué "Doublon"
                If var2 = var1 And Tablo(j, 3) <> "Doublon" Then
                    'le couple comparé est alors marqué "Doublon"
                    Tablo(j, 3) = "Doublon"
                    Debug.Print var2 & " " & Tablo(j, 3)
                End If
            Next j
        Next i
        '******* Comptage des doublons et affichage des résultats
        For i = 1 To (DerLig - LigneDeb + 1)
            'Concaténation du nom de projet et du type (chaine de référence)
            var1 = Tablo(i, 1) & " " & Tablo(i, 2)
            Cptr = 0
            'Si le couple projet-type est marqué
            If Tablo(i, 3) <> "" Then
                'Le doublon est comptabilisé et le marquage est effacé
                Cptr = Cptr + 1
                Tablo(i, 3) = ""
                'On recherche les autres marquages pour ce couple
                If i < DerLig - LigneDeb + 1 Then
                    For j = i + 1 To (DerLig - LigneDeb + 1)
                    'Concaténation du nom de projet et du type (chaine comparée)
                        var2 = Tablo(j, 1) & " " & Tablo(j, 2)
                        'Si les couples sont identiques et sont marqués,
                        If var1 = var2 And Tablo(j, 3) <> "" Then
                            'on incrémente le compteur de doublons
                            Cptr = Cptr + 1
                            'On efface le marquage
                            Tablo(j, 3) = ""
                        End If
                    Next j
                End If
                'On affiche le résultat
                .Range("E" & LigneDeb + Increment) = Tablo(i, 1) & " " & Tablo(i, 2)
                .Range("F" & LigneDeb + Increment) = Cptr
                Increment = Increment + 1
            End If
        Next i
    End With
End Sub
Cordialement
Fichiers attachés
Type de fichier : xls Problème1_bis.xls (50,0 Ko, 2 affichages)
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 17h16   #8
Invité de passage
 
Homme
Consultant fonctionnel
Inscription : novembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant fonctionnel
Secteur : Conseil

Informations forums :
Inscription : novembre 2011
Messages : 5
Points : 0
Points : 0
Bonjour,

Un grand merci pour le temps que tu passe sur mon sujet!

Ca fonctionne très bien! N'y connaissant rien à VBA, il va juste falloir que j'intègre la macro dans mon fichier d'origine.... :s

Mais comme tu l'as documenté, cela devrait aller!

Merci encore!
jberto est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h43.


 
 
 
 
Partenaires

Hébergement Web