Compter occurences - VBA Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
k
kinders59
Membre habitué
Membre habitué
Messages : 94
Appréciation reçue : 1
Inscrit le : 26 décembre 2017
Version d'Excel : 2016 FR

Message par kinders59 » 27 mai 2019, 12:07

Bonjour tout le monde :mrgreen:

J'espère que vous allez bien !

Petite question du jours (et surtout problème du mien :lol: )

J'ai une colonne où l'on retrouve plusieurs petit texte (chacun représente un attribut manquant), j'aimerais être capable de compter le nombre d’occurrences manquantes.

A savoir cette colonne est une extraction d'une base de donnée, elle sortira donc toujours de cette façon, ce que je remarque c'est qu'il y a toujours des "-" devant chaque occurrence manquante, je me suis donc dit : "le mieux c'est de compter le nombre de "-" dans une cellule", mais impossible de trouver la bonne formule.

J'ai aussi penser à séparer puis compter le nombre de colonnes créées mais je pense que ça sera plus long et complexe ... Je suis un peu perdu

J'aimerais que cela ce fasse via du VBA car je suis en train de tout rendre automatique, et je transfère la majorité des informations sur un autre onglet/fichier.

Ci-joint le fichier j'espère que cela vous aidera à mieux comprendre mon besoin :)

Merci d'avance à vous et bonne journée !
Compter-occurences.xlsx
(8.94 Kio) Téléchargé 5 fois
Avatar du membre
BrunoM45
Membre impliqué
Membre impliqué
Messages : 2'890
Appréciations reçues : 87
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 27 mai 2019, 12:41

Bonjour Kinders59

Un exemple de ce qu'on peut faire
Sub NbOccurence()
  Dim DLig As Long, Lig As Long
  Dim TabLig() As String
  Dim NbOc As Long
  ' Dernière ligne de la feuille
  DLig = Range("A" & Rows.Count).End(xlUp).Row
  ' Initialiser le comptage
  NbOc = 0
  ' Pour chaque ligne
  For Lig = 2 To DLig
    ' Récupérer le tableau des tirets
    TabLig = Split(Range("A" & Lig), "-")
    ' Additionner l enombre d'index du tableau
    NbOc = NbOc + UBound(TabLig)
  Next Lig
  MsgBox "Vous avez au total : " & NbOc & " attribut(s) manquant(s)"
End Sub
A+
1 membre du forum aime ce message.
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
k
kinders59
Membre habitué
Membre habitué
Messages : 94
Appréciation reçue : 1
Inscrit le : 26 décembre 2017
Version d'Excel : 2016 FR

Message par kinders59 » 27 mai 2019, 12:54

BrunoM45 a écrit :
27 mai 2019, 12:41
Bonjour Kinders59

Un exemple de ce qu'on peut faire
Sub NbOccurence()
  Dim DLig As Long, Lig As Long
  Dim TabLig() As String
  Dim NbOc As Long
  ' Dernière ligne de la feuille
  DLig = Range("A" & Rows.Count).End(xlUp).Row
  ' Initialiser le comptage
  NbOc = 0
  ' Pour chaque ligne
  For Lig = 2 To DLig
    ' Récupérer le tableau des tirets
    TabLig = Split(Range("A" & Lig), "-")
    ' Additionner l enombre d'index du tableau
    NbOc = NbOc + UBound(TabLig)
  Next Lig
  MsgBox "Vous avez au total : " & NbOc & " attribut(s) manquant(s)"
End Sub
A+
Hello,

Tout d'abord merci de la réponse :)

Est-il possible d'afficher par ligne le nombre d'attributs manquants ? (pour chaque ligne. Exemple mettre en colonne B2 6 attributs manquants (par rapport à A2))

Merci d'avance à toi !
Cordialement,
Avatar du membre
BrunoM45
Membre impliqué
Membre impliqué
Messages : 2'890
Appréciations reçues : 87
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 27 mai 2019, 13:01

Re,

C'est encore "plus simple" :wink:
Sub NbOccurence()
  Dim DLig As Long, Lig As Long
  Dim TabLig() As String
  ' Dernière ligne de la feuille
  DLig = Range("A" & Rows.Count).End(xlUp).Row
  ' Pour chaque ligne
  For Lig = 2 To DLig
    ' Récupérer le tableau des tirets
    TabLig = Split(Range("A" & Lig), "-")
    ' Inscrire le nombre d'attributs manquants
    Range("B" & Lig).value = UBound(TabLig) & " attribut(s) manquant(s)"
  Next Lig
End Sub
A+
1 membre du forum aime ce message.
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
k
kinders59
Membre habitué
Membre habitué
Messages : 94
Appréciation reçue : 1
Inscrit le : 26 décembre 2017
Version d'Excel : 2016 FR

Message par kinders59 » 27 mai 2019, 13:06

BrunoM45 a écrit :
27 mai 2019, 13:01
Re,

C'est encore "plus simple" :wink:
Sub NbOccurence()
  Dim DLig As Long, Lig As Long
  Dim TabLig() As String
  ' Dernière ligne de la feuille
  DLig = Range("A" & Rows.Count).End(xlUp).Row
  ' Pour chaque ligne
  For Lig = 2 To DLig
    ' Récupérer le tableau des tirets
    TabLig = Split(Range("A" & Lig), "-")
    ' Inscrire le nombre d'attributs manquants
    Range("B" & Lig).value = UBound(TabLig) & " attribut(s) manquant(s)"
  Next Lig
End Sub
A+
Wow c'est puissant !

Merci je vais regarder comment elle fonctionne en détail, car ma maîtrise du VBA est très très basique j'en suis pas encore à cette facilité de raccourci :lole:

Encore un énorme merci à toi ! ;;)

Bonne journée !
1 membre du forum aime ce message.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message