[Excel] Compter le nombre de lettres indentiques

Compter le nombre de lettres indentiques [Excel] - Logiciels - Windows & Software

Marsh Posté le 16-11-2004 à 16:50:34    

J'ai un résultat qui se trouve dans une cellule sous la forme d'une série de lettres (ex: AABBABA). Je cheche à compter le nombres de A et le nombre de B.
 
Aucune fonction de notre Excel 97 US ne permet de compter des lettres. Il peut juste compter des cases non vides ou retourner la position d'une lettre...
 
Merci d'avance :jap:


---------------
Mon blog informatique - Faye Wong, le phenomene chinois
Reply

Marsh Posté le 16-11-2004 à 16:50:34   

Reply

Marsh Posté le 16-11-2004 à 17:14:25    

En VBA, si tu t'y connais un tout petit peu en progra, y'a moyen de faire ça assez facilement.
 
Dans ton exemple ce serait tout bête, mais je suppose que le nombre de caractères différents n'est pas fixe ?  
 
Tu veux que tes résultats soient renvoyés comment ?

Reply

Marsh Posté le 17-11-2004 à 09:08:11    

non le nombre de caractères n'est pas fixe. En fait il s'agit d'une suite de lettres correspondant à des types de congés (R=rtt, F=formation). le but est de compter le nombre de congés restant et pour chaque type de congés.
 
j'ai essayé en VBA mais je connais pas assez les différentes fonctions... :D j'ai pas envie d'acheter un bouquin pour si peu :)


---------------
Mon blog informatique - Faye Wong, le phenomene chinois
Reply

Marsh Posté le 17-11-2004 à 09:08:56    

On peut aussi exploiter cette suite de lettres qui sont, à la base, dans des cases séparées.


---------------
Mon blog informatique - Faye Wong, le phenomene chinois
Reply

Marsh Posté le 17-11-2004 à 10:39:27    

comprends pas...
 
ça veut dire que dans une même case, il y a 12 R et 3 F à la suite si le type a 12 jours de RTT et 3 jours de formation?

Reply

Marsh Posté le 17-11-2004 à 11:25:53    

Probablement que VBA est proche de VB / VBScript, tu dois pouvoir utiliser le code suivant :
 

Code :
  1. ' Fonction qui calcule le nombre de jours dans une chaîne de caractères
  2. Function NombreJours(sChaine) 
  3.    ' Déclare un tableau global à deux dimensions
  4.    Dim aJours(1,2)
  5.    ' Déclare des variables pour les boucles
  6.    Dim i, j
  7.    ' Déclare une variable pour le caractère "courrant"
  8.    Dim cComp
  9.    ' Intialise le tableau
  10.    '    Colonne 1 = Libellé
  11.    '    Colonne 2 = Lettre associée
  12.    '    Colonne 3 = Résultat
  13.    aJours(0,0) = "RTT"
  14.    aJours(0,1) = "R"
  15.    aJours(0,2) = 0
  16.    aJours(1,0) = "Formation"
  17.    aJours(1,1) = "F"
  18.    aJours(1,2) = 0
  19.    ' parcours la chaîne pour chaque type de jours (première dimension)
  20.    For i = LBound(aJours, 1) to UBound(aJours, 1)
  21.       cComp = UCase(aJours(i, 1)
  22.       For j = 1 To Len(sChaine)
  23.          If cComp = UCase(Mid(sChaine, j, 1)) Then
  24.     ' Si une corespondance est trouvée incrémente le compteur
  25.     aJours(i, 2) = aJours(i, 2) + 1
  26.  End If
  27.       Next
  28.    Next
  29.  
  30.    ' retourne le tableau
  31.    Set NombreJours = aJours
  32. End Function


 
Je ne l'ai pas testé, donc il y a peut-être quelques erreurs de syntaxe. J'ai utilisé un tableau pour des raison de souplesse (il est facile d'y ajouter un élément). La fonction te retourne le tableau complet, tu peux assez facilement la modifier pour qu'en second paramètre tu passe la lettre qui t'intéresse et qu'elle te retourne un entier correspondant au nombre de jours.
 
Si jamais la documentation de VBScript :
http://msdn.microsoft.com/library/ [...] trcomp.asp


Message édité par Requin le 17-11-2004 à 11:28:52
Reply

Marsh Posté le 17-11-2004 à 11:41:23    

merci pour vos réponse, je teste cet après midi :)


---------------
Mon blog informatique - Faye Wong, le phenomene chinois
Reply

Marsh Posté le 17-11-2004 à 11:42:36    

minikisskool a écrit :

comprends pas...
 
ça veut dire que dans une même case, il y a 12 R et 3 F à la suite si le type a 12 jours de RTT et 3 jours de formation?


Oui les lettres représentent les jours de RTT ou formation "posés". Le but étant de les soustraire à leur capital congés pour voir combien de journées ils leur restent à prendre.


Message édité par jherek le 17-11-2004 à 11:42:56

---------------
Mon blog informatique - Faye Wong, le phenomene chinois
Reply

Marsh Posté le 17-11-2004 à 12:23:27    

mais pourquoi les compiler de cette façon si c'est réparti dans plusieurs cases à la base?
 
c'est quand même plus simple de les compter de cette façon...

Reply

Marsh Posté le 17-11-2004 à 13:58:36    

Ca ne change rien pour moi, Excel n'a pas de fonctions pour les compter ! ni dans les cases, ni ensemble.
 
Après si on fait une fonction VB, c'est peut être plus simple de faire une boucle que de compter les lettres dans une meme cellule, je sais pas :D


---------------
Mon blog informatique - Faye Wong, le phenomene chinois
Reply

Marsh Posté le 17-11-2004 à 13:58:36   

Reply

Marsh Posté le 17-11-2004 à 14:08:28    

=NB.SI(Matrice_de_référence;"R" )
 
je pense que ça existe même dans excel97... ;)

Reply

Marsh Posté le 17-11-2004 à 15:24:34    

YES ! je t'aime mini kisscool !
en US c'est "COUNTIF(range;"condition" ) :)


---------------
Mon blog informatique - Faye Wong, le phenomene chinois
Reply

Sujets relatifs:

Leave a Replay

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