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
 

Fichiers joints

Dernière édition:

thebenoit59

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

Bonjour Pierre.

Est-ce que dans ton fichier finale les noms des étagères est connu ?
Cela faciliterai le traitement :).
 

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
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é.
 

Fichiers joints

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

Bonsoir Marc,

Votre travail est top

merci beaucoup de votre aide

c'est exactement ce que je recherche

:)
 

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
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:

pasquetp

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

Bonjour,

je viens de tester. etes vous sur que la condition s'applique?

merci encore ;)
 

pasquetp

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

bonjour,

merci de la video, tres pratique

j'ai maintenant compris comment votre macro fonctionne

le souci est dans la condition

dans votre macro elle fonctionne si la colonne F et H sont vides

en faite ce qu'il faudrait serait:

la macro exclurait l'avant derniere ligne uniquement si: ( G(x)= 0 AND H(x)="" ) OU ( H(x)=0 )

Veuillez m'excuser si il y a un manuq e de clarete

Merci

Pierre
 
Dernière édition:

Marc L

XLDnaute Occasionnel

Aucun souci de mon côté car une cellule vide ou égale à 0 est la même chose pour Excel / VBA !

Avez-vous au moins essayé ?!
 

pasquetp

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

bonjour,

Merci de votre reponse

jai en effet tente

"une cellule vide ou égale à 0 est la même chose pour Excel / VBA "

cela explique sans doute le souci

du coup voici la condition:

( G(x)= 0 AND H(x)=VIDE ) OU ( H(x)=0 )
 

Marc L

XLDnaute Occasionnel
Aucun souci de mon côté sinon je n'ai rien compris aux conditions …

 
Dernière édition:

pasquetp

XLDnaute Occasionnel
Re : Aucun souci de mon côté sinon je n'ai rien compris aux conditions …

Merci de votre retour rapide

votre video demontre bien que ca marche

je vais recontroler de mon cote, cest curieux

pouvez vous m'envoyer le fichier avec le code?

Merci
 

Discussions similaires


Haut Bas