nuage de mots à partir de texte

nuage de mots à partir de texte - VB/VBA/VBS - Programmation

Marsh Posté le 17-02-2014 à 09:37:29    

Salut à tous  ;)  
 
Le contexte, c'est que j'ai plusieurs évaluation effectuées par des notants : je dispose donc d'une note, et de deux champs, points positifs et points négatifs écrits chacun dans une cellule. J'aurais voulu faire ce qui suit sous Excel, est-ce possible ?
 
J'aimerais tout d'abord connaître les statistiques de ces champs (points positifs et négatifs) par mot : exemple = "machin" apparaît tant de fois, "truc" apparait tant de fois...
Ensuite je veux en faire un nuage de mots, avec la taille de police qui diffère selon la fréquence. Un qui sera vert pour les points positifs, et rouge pour les négatifs.
 
Merci
Cindy

Reply

Marsh Posté le 17-02-2014 à 09:37:29   

Reply

Marsh Posté le 18-02-2014 à 11:14:04    

Bonjour,
 
Pour les statistiques tu peux utiliser la classe de collection  "Dictionary".
 
Code à glisser par exemple dans:  
 

Code :
  1. Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  2. 'Désactivation du menu contextuel'
  3. Cancel = True
  4. 'Stockage de la plage de cellules'
  5. Targets = Sh.UsedRange.Address
  6. 'Appel de procédure'
  7. Call listing(Target, Targets)
  8. End Sub


Code à gilsser dans un module:
 

Code :
  1. Public Sub listing(Target As Range, ByVal Targets As String)
  2. 'Création du dictionnaire'
  3. Set dict = CreateObject("Scripting.dictionary" )
  4. 'Itération sur la collection range et stockage dans le dictionnaire'
  5. For Each Target In Range(Targets)
  6.     If Not IsEmpty(Target) Then
  7.         If Not dict.Exists(Target.Value) Then
  8.             'Création de la clé et stockage de l'Item'
  9.             dict.Add Target.Value, 1
  10.         Else
  11.             'Incrémentation de l'Item'
  12.             dict.Item(Target.Value) = dict.Item(Target.Value) + 1
  13.         End If
  14.     End If
  15. Next
  16. 'Déclaration des variables'
  17. iKey = dict.keys
  18. iItem = dict.items
  19. 'Itération sur la collection du dictionnaire'
  20. For i = 0 To dict.Count - 1
  21.    result = result & "Key= " & iKey(i) & ", Item= " & iItem(i) & vbLf
  22. Next
  23. 'Affichage du résultat'
  24. MsgBox result
  25. End Sub


Pour la deuxième étape, je n'ai pas compris!


Message édité par mmarle le 19-02-2014 à 10:29:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed