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 :

Compter le nombre de cellules différentes sur une plage de données variable [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut Compter le nombre de cellules différentes sur une plage de données variable
    Bonjour,

    Je travaille sur une problématique de stockage.
    Je cherche à compter automatiquement le nombre d'emplacements différents dans lesquels est stocké un équipement.

    Exemple : Une fabrique de vélos stocke les éléments du vélo dans des rayonnages différents

    Vélo 1 stocké à l'emplacement A
    Vélo 1 stocké à l'emplacement A
    Vélo 1 stocké à l'emplacement B
    Vélo 1 stocké à l'emplacement C
    Vélo 2 stocké à l'emplacement A
    Vélo 2 stocké à l'emplacement D
    Vélo 2 stocké à l'emplacement D

    Le code devrait donc renvoyer "3" pour le nombre d'emplacements différents occupés par les vélo 1, et renvoyer "2" pour les vélo 2.

    Voici le code que j'ai essayé:
    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
    Sub test2()
    
    Dim Val1 As String
    Dim Val2 As String
    Dim Nb As Integer
    Dim a As Variant
    Dim i As Variant
    Nb = 1
    a = i - Nb
    
    'Comparaison de deux cases successives pour vérifier que l'on traite le même type de vélo'
    Range("A1").Select
    For i = 1 To Range("A65536").End(xlUp).Row
        Val1 = ActiveCell.Value
        Val2 = Selection.Offset(1, 0).Value
             If Val1 = Val2 Then
                 Nb = Nb + 1
                 Selection.Offset(1, 0).Select
                 i = i + 1
             Else
                 'ActiveCell = Nb'
                 Selection.Offset(-Nb, 2).Select
                'compter le nombre d'emplacements différents'
                     ' ActiveCell.FormulaR1C1 = _
                     "=SUMPRODUCT(1/COUNTIF(R[0]C[-1]:R[& Nb &]C[-1],R[0]C[-1]:R[& Nb &]C[-1]))"'
                   ActiveCell.FormulaR1C1 = _
                     "=SUMPRODUCT(1/COUNTIF(B" & a & ":B" & i & ",B" & a & ":B" & i & "))"
                 Selection.Offset(Nb + 1, -2).Select
             
             End If
        Nb = 1
               
    Next
    End Sub
    Pour l'instant je n'arrive pas à run mon code car il y a une erreur sur l'utilisation de la formule.
    Avez vous des propositions ou remarques à me faire ?
    Bien à vous

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il est possible de le faire sans VBA.
    Voir dans ce billet Comment compter le nombre de valeurs distinctes dans une colonne d’excel
    Il est bien entendu possible de traduire cette formule avec le VBA
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut
    Bonjour Philippe,

    Malheureusement, j'avais déjà pensé à votre solution mais celle ci ne répond pas au problème.
    En effet, cette formule compte le nombre d'emplacements différents dans toute la colonne alors que je cherche le nombre d'emplacements différents pour chaque type de vélo.

    Il faudrait que je puisse appliquer cette formule pour chaque type de vélo sans prendre en compte l'emplacement des autres types de vélo.
    J'espère avoir été clair.

    Bien à vous

  4. #4
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour Faucifre,

    Pour faire le job et sans aucune ligne de code, vous pourriez utiliser un tableau croisé dynamique.

    Pièce jointe 557687


    Si vous souhaitez absolument passer par du Vba, il faudrait lister l'ensemble des valeurs uniques de la colonne et ensuite une boucle "countif" pour comptabiliser le nb de fois où ces valeurs uniques apparaissent.

    Bàv,

    MFoxy

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut
    Merci Foxy vous êtes un crack!
    En passant par un tableau croisé dynamique + la formule "=NBVAL" j'obtiens mon nombre d'emplacements différents.

    Je te remercie bien chaleureusement et te souhaite un bon dimanche !
    Cordialement.

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 569
    Par défaut
    Bonjour

    Faisable en quelques clics avec PowerQuery totalement intégré à Excel 2016

    Le contenu réel de la colonne source n'est pas clair mais la requête peut être adaptée en conséquence

    Nom : Velos.jpg
Affichages : 99
Taille : 49,0 Ko
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2016] Compter le nombre de cellules différentes répondant à une contrainte
    Par maroonx dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/01/2020, 21h15
  2. [XL-2013] Compter le nombre de cellules différentes dans une colonne VBA
    Par psg7835 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/07/2017, 10h46
  3. Compter le nombre de cellules identiques d'une colonne sur un msflexgrid
    Par GRIMPMASTER dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/07/2014, 23h46
  4. [XL-2007] Compter le nombres de cellules différentes d'une colonne en fonction de date
    Par lorin.maxime dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/09/2013, 11h31
  5. Réponses: 19
    Dernier message: 31/05/2010, 09h51

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