XL 2013 VBA : comptabiliser le nombre de fois que l'on retrouve des termes precis

pasquetp

XLDnaute Occasionnel
bonjour,

je vous contacte sur un probleme que je rencontre

je travaille en entrepot et les produits sont stockes dans des etageres.

voici un fichier joint

la colonne qui nous interesse est la colonne I

vous verrez des adresses et des XXX (donnees sensible retiree)

ce qui m'interesse ce sont les adresses

vous verrez un userform

ce que je tente de faire c'est d'avoir la liste des noms d'etageres qu'on retrouve en colonne I et de donner leur nombre dans le userform:

Attention je precise que c'est bien le nombre de fois que le nom apparait et NON le nombre de celulle qui le contienne


exemple:

CRITICALSPARES.1A => 1 fois
CRITICALSPARES.3B => exemple 10 fois
...

ainsi le nom de chaque etageres et le nombre de fois que cette x etagere est mentionne doit apparaitre dans le userform

il faudrait donc je suppose 2 textbox variable

quelqu'un aurait il une idee?

Merci beaucoup de votre aide

Pierre
 

Pièces jointes

  • TEST.xlsm
    37.8 KB · Affichages: 55
  • TEST.xlsm
    37.8 KB · Affichages: 63
Dernière édition:

pasquetp

XLDnaute Occasionnel
Re : VBA : comptabiliser le nombre de fois que l'on retrouve des termes precis

bonjour Benoit

merci de votre reponse rapide

je prefererai eviter d'avoir une base de donnees des adresses Car il est facile de creer des adresses d'etageres et du coup, cela force l'utilisateur a controler si la base de donnee est a jour et a devoir faire des corrections.

je ne sais pas comment faire mais j'ai fais en sorte que les adresses en colonne I soient séparés par un ; et ( sauf la toute premiere adresse de chaque cellule bien entendu. on peut peut etre utiliser toute donnee situe entre ces deux signes pour identifier l'adresse?

Si au final, on ne trouve pas de solutions sans une base de donnee, on pourra eventuellement tenter cette approche.

Merci encore
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA : comptabiliser le nombre de fois que l'on retrouve des termes precis

Bonjour le fil, Bonjour le forum,

Une proposition en pièce jointe avec ton fichier modifié. Clique sur le bouton Étagères... Code commenté.
 

Pièces jointes

  • Pasquetp_v01.xlsm
    35.6 KB · Affichages: 69

pasquetp

XLDnaute Occasionnel
Re : VBA : comptabiliser le nombre de fois que l'on retrouve des termes precis

Bonjour Robert

Merci de votre intervention

Merci pour ce code, je tiens a l'etudier depuis longtemps ces tableaux avec ubound

le resultat est parfait

y aurait il moyen d'obtenir le resultat sous forme de listbox? ainsi j'aurais une vue d'ensemble en un coup d'oeil

Merci encore :)
 
Dernière édition:

Marc L

XLDnaute Occasionnel
Bonjour,

j'avais déjà commencé cette p'tite démonstration :

VB:
Sub Demo()
    With Sheet3.Cells(1).CurrentRegion.Rows
        If .Count = 1 Or .Columns.Count < 9 Then Beep: Exit Sub
        VA = .Item("2:" & .Count).Columns(9).Value
    End With
    With CreateObject("Scripting.Dictionary")
        For Each V In VA
                          SP = Split(V, ";")
            For Each W In SP
                W = Trim$(Split(W, "(")(0))
                If W > "" Then .Item(W) = .Item(W) + 1
            Next
        Next
             VA = Application.Transpose(Array(.Keys, .items))
            .RemoveAll
    End With
    With Feuil2
             .UsedRange.Clear
        With .Cells(1).Resize(UBound(VA), 2)
             .Value = VA
             .Columns(1).AutoFit
        End With
             .Activate
    End With
End Sub

Si les tenants et les aboutissants avaient été présentés dès la présentation initiale …

Un ListBox peut-être facilement alimenté avec le contenu de la variable tableau VA après le Dictionary
ou directement depuis les éléments de cet objet Dictionary

_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …

_______________________________________________________________________________
Je suis Paris, Charlie, Bruxelles, …
 

Marc L

XLDnaute Occasionnel
VB:
Sub DemoListBox()
    With Sheet3.Cells(1).CurrentRegion.Rows
        If .Count = 1 Or .Columns.Count < 9 Then Beep: Exit Sub
        VA = .Item("2:" & .Count).Columns(9).Value
    End With
    With CreateObject("Scripting.Dictionary")
        For Each V In VA
            For Each W In Split(V, ";")
                V = Trim$(Split(W, "(")(0))
                If V > "" Then .Item(V) = .Item(V) + 1
            Next
        Next
            UserForm1.ListBox1.List = Application.Transpose(Array(.Keys, .Items))
            .RemoveAll
    End With
            UserForm1.Show
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …
 

pasquetp

XLDnaute Occasionnel
Re : VBA : comptabiliser le nombre de fois que l'on retrouve des termes precis

bonjour Marc,

j'ai liker votre message

j'aimerai ameliorer mon niveau

vous serez il possible de mettre des commentaires dans le code en vert et d'expliquer comment chaque ligne fonctionne?

Merci encore :)
 

Marc L

XLDnaute Occasionnel
La meilleure façon d'apprendre est de sélectionner une instruction dans le code

puis d'appuyer sur la touche
f1.gif
et de consulter l'aide ainsi affichée,
+90% de mes connaissances provenant de cette aide !

Suivre la progression d'un code en mode pas à pas via la touche F8 tout en contrôlant
le contenu de la fenêtre des Variables locales aide aussi à sa compréhension …


Commentaires :
• Ligne n°2 : les lignes de la plage utilisée autour de la première cellule de la feuille Sheet3.

• Ligne n°3 : abandon de la procédure si il y a une seule ligne ou moins de neuf colonnes.

• Ligne n°4 : alimentation de la variable tableau à partir de la deuxième ligne de la neuvième colonne.

• Ligne n°7 : pour chaque valeur de la variable tableau …

• Ligne n°8 : pour chaque valeur séparée par un point-virgule …

• Ligne n°9 : extraction du texte avant la première parenthèse ouvrante.

• Ligne n°10 : dénombrement dans le dictionnaire si la valeur n'est pas vide.

• Ligne n°13 : mise à jour de la ListBox à partir des données du dictionnaire,
Application.Transpose correspondant à la fonction de feuille de calculs du même nom.

• Ligne n°14 : remise à zéro du dictionnaire …

 
Dernière édition:

pasquetp

XLDnaute Occasionnel
Re : VBA : comptabiliser le nombre de fois que l'on retrouve des termes precis

Merci encore pour votre efficacite

ce type de code est encore nouveau pour moi

j'ai tente d'ajouter une condition supplementaire mais je tombe sur un mismtach ou object required

serez il possible lorsque le form s'affiche que les adresses et quantites s'affichent comme vous l'avez fait mais en tenant compte de la condition suivante: si la colonne 8 affiche 0 ou que si la colonne 8 est = a "" ET que la colonne 7 = 0 ALORS on les exclut du comptage

en GROS si col 8 = 0 ou (col8="" et col7 =0) alors on les exclut du comptage. on prend en compte toutes lignes qui ne repond pas a cette condition

Merci encore je suis casi sur qu'apres cela il n'y aura pas d'autres conditions :)
 

Marc L

XLDnaute Occasionnel
VB:
Sub DemoListBox()
    With Sheet3.Cells(1).CurrentRegion.Rows
        If .Count = 1 Or .Columns.Count < 9 Then Beep: Exit Sub
        VA = .Item("2:" & .Count).Columns("G:I").Value
    End With
    With CreateObject("Scripting.Dictionary")
        For R& = 1 To UBound(VA)
            If VA(R, 1) Or VA(R, 2) Then
                For Each V In Split(VA(R, 3), ";")
                    V = Trim$(Split(V, "(")(0))
                    If V > "" Then .Item(V) = .Item(V) + 1
                Next
            End If
        Next
            UserForm1.ListBox1.List = Application.Transpose(Array(.Keys, .Items))
            .RemoveAll
    End With
            UserForm1.Show
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou