Microsoft 365 Rechercher des occurrences inconnues dans la même feuilles à des endroits récurrents

lucarn

XLDnaute Occasionnel
Bonjour,
Je suis encore en train de chercher des occurrences inconnues.
Cette fois, c’est dans la même feuille, la même colonne, mais dans des cellules différentes qui reviennent toutes les 3 lignes.
Le résultat est à mettre dans l’onglet synthèse, en triant par ordre de fréquence sans tenir compte des majuscules et des accents.
Je joins un fichier avec le résultat attendu dans la synthèse.
 

Pièces jointes

  • Macro recherchant les occurrences inconnues sur des cellules récurrentes dans la même colonne.xlsm
    13.8 KB · Affichages: 24
Solution
Bonsoir lucarn, salut R@chid, heureux de te revoir :)

Dans le code de la feuille "Synthèse" :
VB:
Private Sub Worksheet_Activate()
    Dim dico As Object, w As Worksheet, c As Range, occurence As String
    Set dico = CreateObject("Scripting.Dictionary")
    For Each w In Worksheets
        If w.Name <> "Synthèse" Then
            For Each c In w.Range("A1", w.UsedRange).Columns(9).Cells
                occurence = Trim(CStr(c))
                If occurence <> "" Then dico(occurence) = dico(occurence) + 1
            Next c
        End If
    Next w
    Application.ScreenUpdating = False
    With Sheets("Synthèse")
        If .FilterMode Then .ShowAllData 'si la feuille est filtrée
        .[B1].CurrentRegion.Offset(1).ClearContents 'RAZ...

job75

XLDnaute Barbatruc
Bonsoir lucarn, salut R@chid, heureux de te revoir :)

Dans le code de la feuille "Synthèse" :
VB:
Private Sub Worksheet_Activate()
    Dim dico As Object, w As Worksheet, c As Range, occurence As String
    Set dico = CreateObject("Scripting.Dictionary")
    For Each w In Worksheets
        If w.Name <> "Synthèse" Then
            For Each c In w.Range("A1", w.UsedRange).Columns(9).Cells
                occurence = Trim(CStr(c))
                If occurence <> "" Then dico(occurence) = dico(occurence) + 1
            Next c
        End If
    Next w
    Application.ScreenUpdating = False
    With Sheets("Synthèse")
        If .FilterMode Then .ShowAllData 'si la feuille est filtrée
        .[B1].CurrentRegion.Offset(1).ClearContents 'RAZ sous les titres
        If dico.Count Then
            .[B2].Resize(dico.Count) = Application.Transpose(dico.keys)
            .[C2].Resize(dico.Count) = Application.Transpose(dico.items)
            .[B2].Resize(dico.Count, 2).Sort .[C2], xlDescending, Header:=xlNo 'tri décroissant
        End If
        With .UsedRange: End With 'actualise la barre de défilement verticale
    End With
End Sub
 

Pièces jointes

  • Occurences(1).xlsm
    18.8 KB · Affichages: 3

R@chid

XLDnaute Barbatruc
Bonjour lucarn, Bonjour l'ami Job75
Je laisse R@chid répondre :cool:
Job75, tu aurais dû prendre le relais et lui expliquer que ta macro événementielle est mieux que les formules que j'ai faites, de ma part je lui conseille ta macro puisque sur son propre fichier il y avait des macros qui fonctionnaient pas.

Quant à mes formules c'est un peu plus compliqué, lucarn :
Tu dois d'abord créer le champ dynamique Plg_Valeurs en allant sur l'onglet Formules puis Gestionnaire de noms et copier/coller coller la formule.
lucarn.jpg

Ce champ dynamique va augmenter de taille au fur et à mesure.
Pour la formule dans la plage Jaune, c'est une formule matricielle qui s'applique sur toute une plage et que l'on ne peut pas incrémenter, copie la formule puis sélectionne une plage d'une hauteur que tu vois suffisante pour recevoir les différents les mots, tu colles la formule dans la barre de formules et tu valides tout en maintenant les 3 touches Ctrl+Shift+Enter enfoncées (après une validation réussie tu vas voir apparaitre des accolades qui entourent la formule dans la barre de formules.
Pour la formule NB.SI() je ne pense pas qu'elle nécessite une explication.


Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50