J'aimerais pouvoir comptabiliser à l'aide d'une formule le nombre de fois que la lettre R se trouve cote à cote avec une autre lettre R dans la plage donnée.
J'ai donné des précisions dans la pièce jointe!
D'avance merci à tous ceux qui pourront m'aider.
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Bonsoir et merci à tous pour vos réponses et l'aide précieuse que vous m'avez apportée.
JHA, j'ai commencé un travail un peu similaire au tien (double tableau) en employant la formule "concatener", la difficulté persistante concerne toujours les 3 "R" cote à cote qui doivent compter pour une seule valeur... Ce point n'est pas non plus résolu dans ton fichier.
CISCO, ta formule "somme prod" correspond tout à fait à mon attente, toutes les subtilités liées aux reports de lignes et les 3 "R" y sont intégrés!
Paritec, à la relecture de ma demande initiale, je n'ai pas trouvé d'incohérences dans mon souhait? Mes explications me semblent claires, dans tous les cas, merci pour ta disponibilité.
Bonne soirée à vous tous!
Très bien si cela fonctionne. Le principe, c'est de compter 1 seulement lorsqu'il y a trois cellules à la suite du type R, R, et autre chose que R. Ainsi on ne prend en compte que les deux derniers R de toutes les séries de R, qu'il y en ai 2, 3 ou plus dans la série. Et il y a trois SOMMEPROD parce qu'il y a trois lignes.
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Bonsoir Cisco le forum
oui alors si je lis bien tes explications, qui sont elles très claires, le fichier joint ne donne donc pas 14 comme le demandait Sellig dans son premier post? ou bien??
Pour la première ligne 4 la deuxième 5 et la troisième 4, donc un total de 13 et non 14 comme le demandait Sellig!!!
à te relire Cisco et merci d'avance
a+
Papou
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Bonsoir à tous
Une fonction personnalisée conforme à l'interprétation de CISCO :
VB:
Function toto&(r As Range)
Application.Volatile
Dim i&, n&
For i = 1 To r.Cells.Count
If r(i).Value = "R" Then
n = n + 1
Else
If n > 1 Then toto = toto + 1
n = 0
End If
Next
If n > 1 Then toto = toto + 1
End Function
Malheureusement, =toto(B6:AJ8) renvoie 13 au lieu du 14 attendu.
En voici deux autres, équivalentes, qui renvoie le fameux 14 :
VB:
Function tata&(r As Range)
Application.Volatile
Dim i&, n&
For i = 1 To r.Cells.Count
If r(i).Value = "R" Then
n = n + 1
Else
n = 0
End If
If n > 1 Then tata = tata + 1
Next
End Function
VB:
Function tutu&(r As Range)
Application.Volatile
Dim i&, n&
For i = 1 To r.Cells.Count: n = -(n + 1) * (r(i).Value = "R"): tutu = tutu - (n > 1): Next
End Function
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Bonsoir à tous,
pierrejean, ton fichier correspond également à ce que je souhaitais, je te remercie (j'ai le choix maintenant entre celui de CISCO et le tien!). ROGER2327, je n'ai pas réussi à appliquer ton code, j'ai surement du zapper quelque chose? Merci toutefois pour ton aide.
Bonne soirée à tous
Gilles
Pas plus difficile à appliquer que la fonction de pierrejean (que je salue au passage) : Coller le code dans un module standard, puis saisir la fonction dans la feuille la formule indiquée plus haut. Ce que j'ai fait dans le classeur joint.
J'en ai profité pour ajouter cette fonction qui semble devoir donner les même résultats que la formule de CISCO et la fonction de pierrejean.
VB:
Function titi&(r As Range)
Application.Volatile
Dim i&, n&
For i = 1 To r.Cells.Count
If r(i).Value = "R" Then
n = n + 1
Else
If n > 1 Then titi = titi + 1
n = 0
End If
Next
If n > 1 Or (n > 0 And r(1).Value = "R") Then titi = titi + 1
End Function
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Bonjour ROGER2327,
A la lecture de votre fichier, j'ai compris ce qui m'avait échappé! J'avais omis d'indiquer dans la cellule du résultat la formule =titi($B$6:$AJ$8) ou toto.....
J'ai pu tout au long des ces derniers mois, années... me rendre compte combien vos compétences en VBA étaient affirmées, je crois que vous faites partie des occupants de la maison "excel" qui connaissent parfaitement tous ses coins et recoins!
Merci
Gilles
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Re
J'ai un doute sur la validité de ma fonction
En effet dans le fichier joint ,l'ajout d'un R en C6 produit une divergence entre mon resultat et celui de ROGER
SI gilles voulait bien jeter un oeil
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Bonjour pierrejean,
J'avais testé des "R" de manière aléatoire dans les différentes cellules des fichiers respectifs des uns et des autres, je n'avais pas trouvé de divergences (je ne les avais pas toutes faites non plus!). Et effectivement, en C6, une erreur apparait (par rapport à mon souhait) dans le fichier de ROGER2327: AJ8, B6 et C6 renseignées par des "R" donne 2 valeurs au lieu de 1 souhaitée!
L'oeil d'un maitre!! Merci pierrejean
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Bonsoir à Tous
le fichier modifié pour tenir compte de la Subtilité de comparer la première cellule de la permière ligne avec la dernière cellule de la dernière ligne!!
a+
papou
Re : Comptabiliser des valeurs identiques cote à cote dans une plage
Bonjour Papou,
Il existe un petit "hic"! S'il n'y a pas de "R" en AJ8 et un "R" en B6 et C6, ton code ne considère pas ces 2 "R" cote à cote comme une valeur.
Ceci dit, ce n'est pas bien grave puisque la formule de CISCO ou le code de pierrejean intègre cette subtilité! Merci pour ton aide.
Cordialement
Gilles